openapi: 3.0.3 info: title: Giftbit Brands Direct Links API description: 'Giftbit''s REST API allows you to automatically order rewards and send them to your recipients. Delivery can be handled either by links integrated into another system''s workflow or by emails sent through the Giftbit system. The API supports email delivery, shortlinks, direct links, and in-app embedded reward flows across 1,500+ brands in 40+ countries. ' version: 1.0.0 contact: email: sales@giftbit.com termsOfService: https://www.giftbit.com servers: - url: https://api.giftbit.com/papi/v1 description: Production API - url: https://api-testbed.giftbit.com/papi/v1 description: Testbed (Sandbox) API security: - BearerAuth: [] tags: - name: Direct Links description: Create direct link reward orders paths: /links/{id}: get: operationId: retrieveShortlinkUrls summary: Retrieve shortlink or direct link URLs description: Returns the reward link URLs for a shortlink or direct link order. tags: - Direct Links parameters: - name: id in: path required: true description: The order id (client-supplied or Giftbit UUID). schema: type: string responses: '200': description: Link URLs content: application/json: schema: $ref: '#/components/schemas/LinksResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /direct_links: post: operationId: createDirectLinkOrder summary: Create direct link order description: 'Places an order for direct link rewards. Unlike shortlinks, direct links are not shortened and can be embedded directly in customer communications. ' tags: - Direct Links requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDirectLinkOrderRequest' responses: '200': description: Direct link order created content: application/json: schema: $ref: '#/components/schemas/CampaignResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' components: schemas: CreateDirectLinkOrderRequest: type: object required: - price_in_cents - id properties: price_in_cents: type: integer description: Reward value in cents. brand_codes: type: array items: type: string description: List of brand codes. region: type: string description: Geographic region for full-catalog rewards. link_count: type: integer description: Number of direct link URLs to generate. expiry: type: string format: date description: Claim-before date (YYYY-MM-dd). id: type: string description: Client-supplied unique order identifier. ErrorDetail: type: object properties: code: type: string description: Enum-style error code. name: type: string description: Human-readable error name. message: type: string description: Context-specific error message. ErrorResponse: type: object properties: error: $ref: '#/components/schemas/ErrorDetail' status: type: integer description: HTTP status code. Fees: type: object properties: cost_entries: type: array items: $ref: '#/components/schemas/FeeEntry' subtotal_in_cents: type: integer tax_in_cents: type: integer tax_type: type: string total_in_cents: type: integer CampaignResponse: type: object properties: info: $ref: '#/components/schemas/InfoBlock' campaign: $ref: '#/components/schemas/Campaign' status: type: integer Campaign: type: object properties: uuid: type: string description: Giftbit-generated unique order identifier. id: type: string description: Client-supplied order identifier. price_in_cents: type: integer description: Reward value in cents. brand_code: type: string description: Brand code (single-brand orders). brand_codes: type: array items: type: string description: Brand codes (multi-brand orders). fees: $ref: '#/components/schemas/Fees' LinksResponse: type: object properties: links: type: array items: type: string description: Array of reward link URLs. info: $ref: '#/components/schemas/InfoBlock' status: type: integer FeeEntry: type: object properties: percentage: type: number description: Fee as a percentage. fee_type: type: string description: Type of fee (e.g. PREFUND_GIFT_COST, UPFRONT_PER_GIFT_FEE). amount_in_cents: type: integer description: Total fee amount in cents. currency: type: string description: Currency code. tax_type: type: string description: Tax type (e.g. NOTAX). tax_in_cents: type: integer description: Tax amount in cents. number_of_gifts: type: integer description: Number of gifts this fee applies to. fee_per_gift_in_cents: type: integer description: Per-gift fee in cents. InfoBlock: type: object properties: code: type: string description: Status code (e.g. INFO_CAMPAIGN_CREATED). name: type: string description: Human-readable status name. message: type: string description: Context-specific status message. responses: NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' UnprocessableEntity: description: The request was valid but could not be processed. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Authentication failed — invalid or missing bearer token. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' securitySchemes: BearerAuth: type: http scheme: bearer description: 'Authenticate by sending your API token prefixed with "Bearer " in the Authorization HTTP header. Generate tokens from your Giftbit account under Account -> API keys. '