> ## 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.

# Poll async bulk issuance task

> ### Poll Async Bulk Issuance

Returns the current status of an async bulk gift-card issuance task.

**Path Parameters**:
- `programId`: MongoDB ObjectId of the loyalty program
- `taskId`: Celery task ID returned by the bulk issuance POST

**Response** (`BulkIssuanceTaskStatus`):
- `status`: `"pending"` | `"processing"` | `"completed"` | `"failed"`
- `issuedCount`, `cards`, `csvDownloadUrl` — populated when `status == "completed"`
- `failedCount`, `error` — populated when `status == "failed"` or on partial failure



## OpenAPI

````yaml https://api.loyalty.dog/openapi.json get /v2/giftcards/programs/{programId}/cards/bulk/{taskId}
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/giftcards/programs/{programId}/cards/bulk/{taskId}:
    get:
      tags:
        - Gift Cards
      summary: Poll async bulk issuance task
      description: >-
        ### Poll Async Bulk Issuance


        Returns the current status of an async bulk gift-card issuance task.


        **Path Parameters**:

        - `programId`: MongoDB ObjectId of the loyalty program

        - `taskId`: Celery task ID returned by the bulk issuance POST


        **Response** (`BulkIssuanceTaskStatus`):

        - `status`: `"pending"` | `"processing"` | `"completed"` | `"failed"`

        - `issuedCount`, `cards`, `csvDownloadUrl` — populated when `status ==
        "completed"`

        - `failedCount`, `error` — populated when `status == "failed"` or on
        partial failure
      operationId: >-
        pollBulkIssuance_v2_giftcards_programs__programId__cards_bulk__taskId__get
      parameters:
        - name: taskId
          in: path
          required: true
          schema:
            type: string
            title: Taskid
        - name: programId
          in: path
          required: true
          schema:
            anyOf:
              - $ref: '#/components/schemas/PydanticObjectId'
              - type: 'null'
            title: Programid
        - name: cardId
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/PydanticObjectId'
              - type: 'null'
            title: Cardid
        - name: X-Eposn-Customer-Token
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Eposn-Customer-Token
        - name: X-Eposn-Merchant-Token
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Eposn-Merchant-Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkIssuanceTaskStatus'
        '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
    BulkIssuanceTaskStatus:
      properties:
        taskId:
          type: string
          title: Taskid
        status:
          type: string
          title: Status
        issuedCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Issuedcount
        cards:
          anyOf:
            - items:
                $ref: '#/components/schemas/BulkIssuedCardSummary'
              type: array
            - type: 'null'
          title: Cards
        csvDownloadUrl:
          anyOf:
            - type: string
            - type: 'null'
          title: Csvdownloadurl
        failedCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Failedcount
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
        completedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Completedat
      type: object
      required:
        - taskId
        - status
      title: BulkIssuanceTaskStatus
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    BulkIssuedCardSummary:
      properties:
        id:
          type: string
          title: Id
        cardNumber:
          type: string
          title: Cardnumber
        lastFourDigits:
          type: string
          title: Lastfourdigits
      type: object
      required:
        - id
        - cardNumber
        - lastFourDigits
      title: BulkIssuedCardSummary
    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.

````