> ## Documentation Index
> Fetch the complete documentation index at: https://docs.loyalty.dog/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Loyalty Program Offer

> ### Create Offer

Create a new offer within a specific loyalty program.

- **programId**: The unique identifier of the loyalty program.
- **data**: The data for the new offer.
- **user**: The current active user making the request.
- **Returns**: The details of the newly created offer.



## OpenAPI

````yaml https://api.loyalty.dog/openapi.json post /v2/loyalty/programs/{programId}/offers
openapi: 3.1.0
info:
  title: LoyaltyDog
  description: >-

    Welcome to the LoyaltyDog API! This API provides access to our loyalty
    program features, allowing you to integrate with various platforms and
    manage your loyalty data.


    Want to query LoyaltyDog via an AI assistant (Claude, Cursor, Windsurf)? See
    the [MCP Integration guide](https://loyaltydog.ai/playground#mcp).
        
  termsOfService: https://loyalty.dog/loyalty-program-terms-service
  contact:
    name: LoyaltyDog Support
    url: https://loyalty.dog/contact-us
    email: support@loyalty.dog
  version: 1.0.1
servers:
  - url: https://api.loyalty.dog
    description: Production
security:
  - bearerAuth: []
paths:
  /v2/loyalty/programs/{programId}/offers:
    post:
      tags:
        - Loyalty
      summary: Create Loyalty Program Offer
      description: |-
        ### Create Offer

        Create a new offer within a specific loyalty program.

        - **programId**: The unique identifier of the loyalty program.
        - **data**: The data for the new offer.
        - **user**: The current active user making the request.
        - **Returns**: The details of the newly created offer.
      operationId: create_loyalty_program_offer_v2_loyalty_programs__programId__offers_post
      parameters:
        - name: programId
          in: path
          required: true
          schema:
            anyOf:
              - $ref: '#/components/schemas/PydanticObjectId'
              - type: string
            title: Programid
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOfferPayload'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PydanticObjectId:
      type: string
      maxLength: 24
      minLength: 24
      pattern: ^[0-9a-f]{24}$
      example: 5eb7cf5a86d9755df3a6c593
    CreateOfferPayload:
      properties:
        name:
          type: string
          title: Name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        startDate:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Startdate
        endDate:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Enddate
        autoClaim:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Autoclaim
          default: false
        autoClaimOverwrite:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Autoclaimoverwrite
          default: false
        notify:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Notify
        notifyMessage:
          anyOf:
            - type: string
            - type: 'null'
          title: Notifymessage
        pointsMin:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsmin
        pointsMax:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointsmax
        pointsCost:
          anyOf:
            - type: integer
            - type: 'null'
          title: Pointscost
        limitPerCustomer:
          anyOf:
            - type: integer
            - type: 'null'
          title: Limitpercustomer
        availabilityCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Availabilitycount
        value:
          anyOf:
            - type: number
            - type: 'null'
          title: Value
        currency:
          anyOf:
            - type: string
            - type: 'null'
          title: Currency
        type:
          anyOf:
            - $ref: '#/components/schemas/OfferType'
            - type: 'null'
        categories:
          anyOf:
            - type: string
            - type: 'null'
          title: Categories
        products:
          anyOf:
            - type: string
            - type: 'null'
          title: Products
        priceRule:
          anyOf:
            - $ref: '#/components/schemas/OfferPriceRule'
            - type: 'null'
      type: object
      required:
        - name
      title: CreateOfferPayload
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    OfferType:
      type: string
      enum:
        - fixed
        - percent
        - other
      title: OfferType
    OfferPriceRule:
      type: string
      enum:
        - min
        - max
        - none
      title: OfferPriceRule
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT access token obtained from POST /v2/token.

````