openapi: 3.0.3 info: title: Giftbit Brands Shortlinks 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: Shortlinks description: Create shortlink reward orders paths: /shortlink: post: operationId: createShortlinkOrder summary: Create shortlink order description: 'Places an order for shortlink rewards. Recipients access their reward via a shortened URL suitable for SMS, social media, or other channels. ' tags: - Shortlinks requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateShortlinkOrderRequest' responses: '200': description: Shortlink order created content: application/json: schema: $ref: '#/components/schemas/CampaignResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' /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: - Shortlinks 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' components: schemas: 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' CreateShortlinkOrderRequest: 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 shortlink URLs to generate. expiry: type: string format: date description: Claim-before date (YYYY-MM-dd). id: type: string description: Client-supplied unique order identifier. 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. '