openapi: 3.2.0 info: title: Giftbit 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: Short Links 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: - Short Links 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: - Short 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' components: schemas: 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 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. LinksResponse: type: object properties: links: type: array items: type: string description: Array of reward link URLs. info: $ref: '#/components/schemas/InfoBlock' status: type: integer 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. 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' ErrorResponse: type: object properties: error: $ref: '#/components/schemas/ErrorDetail' status: type: integer description: HTTP status code. 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. 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. responses: Unauthorized: description: Authentication failed — invalid or missing bearer token. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' 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' 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. '