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

# Get a campaign's status

> Check how a campaign submitted to `POST /v2/send-campaign` is progressing: whether it's still pending, has been claimed for processing, or is done, along with the status of each individual deployment it expanded into.

<Warning>
  Remember that to use this endpoint, you must have obtained your API key in the **Developers** section of the Treble platform.
</Warning>

Use the `launch_request_id` returned by [Send a campaign](/en/api-reference/endpoints/send-campaign) to check whether it's still `PENDING`, has been `CLAIMED` for processing, or is `DONE` — along with the status of each individual deployment it expanded into.

## Deployment status values

Each item in `deployments` has its own `status`, which is `null` until the Conversation Runtime has picked it up. From there, it moves through one of these values:

| Status | Meaning |
| - | - |
| `RECEIVED` | The Conversation Runtime received the deployment and is about to send it. |
| `RECEIVED_BY_WORKER` | A worker picked it up and is processing it. |
| `RETRY` | A transient failure happened and the deployment is being retried. |
| `SUCCESS` | The message was sent successfully (delivery not yet confirmed by WhatsApp). |
| `DELIVERED` | WhatsApp confirmed the message was delivered to the user's device. |
| `PUSH_NOTIFICATION` (also seen misspelled as `PUSH_NOTIFATION`) | Sent as a push notification instead of a WhatsApp message. |
| `REVOKED` | The deployment was cancelled before it was sent. |
| `VALIDATION_ERROR` | The deployment's data didn't pass validation before sending. |
| `INVALID_PHONE` | The phone number is invalid or doesn't have WhatsApp. |
| `INVALID_POLL` | The conversation flow was deleted or deactivated. |
| `MISSING_PARAMETER` | A required HSM template variable was missing. |
| `PARAMETER_MISMATCH` | The number of variables sent doesn't match the HSM template. |
| `CHARACTER_LIMIT_HEADER` | The HSM template's header exceeds WhatsApp's character limit. |
| `CHARACTER_LIMIT_BODY` | The HSM template's body exceeds WhatsApp's character limit. |
| `FAILURE` | The deployment failed after 3 retry attempts. |
| `FAILURE_BY_HUMAN_HANDOVER` | The user is currently talking to a human agent, so the automated message wasn't sent. |
| `FAILURE_BY_RATE_LIMIT` | Sending would have exceeded WhatsApp's messaging rate limit. |
| `COMPANY_RATE_LIMIT` | Exceeded the session limit configured by the company. |
| `FAILURE_BY_TIER_CAPACITY` | No WhatsApp line had enough capacity to make the deployment. |
| `FAILURE_BY_BLOCKED_CONTACT` | The contact has been blocked by the company. |
| `FAILURE_BY_OPTOUT_CONTACT` | The contact opted out of receiving messages from the company. |
| `FAILURE_BY_DISABLED_HSM` | Meta disabled the HSM template that was sent. |
| `FAILURE_BY_SPAM_RATE_LIMIT` | WhatsApp restricted the line for spam; it can't send more messages right now. |
| `FAILURE_BY_EXPERIMENT_NUMBER` | WhatsApp is using that number for internal experiments, so the deployment couldn't go through. |
| `FAILURE_BY_META_CHOSE_NOT_DELIVER` | Meta's own delivery heuristics decided not to deliver the message. |
| `FAILURE_BY_TEST_CHANNEL` | The line is a test channel and can't send real deployments. |
| `FAILURE_BY_MEDIA_UPLOAD_ERROR` | The media attached to the message failed to upload to WhatsApp. |
| `FAILURE_BY_DEPLOYMENT_LIMIT_REACHED` | The company reached its deployment limit. |
| `FAILURE_BY_UNABLE_TO_CONTACT` | WhatsApp couldn't reach the user's device at that moment — usually temporary. See the [full explanation](/en/docs/meta/error-descriptions/failure-by-unable-to-contact). |
| `FAILURE_BY_PAYMENT_ISSUE` | Meta rejected the template send over a payment issue on the WhatsApp Business Account. See the [full explanation](/en/docs/meta/error-descriptions/failure-by-payment-issue). |


## OpenAPI

````yaml open-api-files/treble-api-en.json GET /v2/send-campaign/{launch_request_id}
openapi: 3.0.1
info:
  title: Treble Poll API
  description: Documentation for the poll deployment endpoint in Treble
  version: 1.0.0
servers:
  - url: https://main.treble.ai
    description: Main Treble server
  - url: https://yourdomain.com
    description: >-
      Example server for implementing webhooks. This represents YOUR server
      where you must implement the endpoints that Treble will call.
security: []
tags:
  - name: Webhooks
    description: >-
      Endpoints that Treble will call on your server. These are not real
      endpoints that you can call, but a representation of the webhooks that
      Treble will invoke in your system.
paths:
  /v2/send-campaign/{launch_request_id}:
    servers:
      - url: https://campaign-orchestration.treble.ai
        description: Campaign Orchestration server
    get:
      summary: Get a campaign's status
      description: >-
        Check how a campaign submitted to `POST /v2/send-campaign` is
        progressing: whether it's still pending, has been claimed for
        processing, or is done, along with the status of each individual
        deployment it expanded into.
      parameters:
        - name: launch_request_id
          in: path
          required: true
          description: The `launch_request_id` returned when the campaign was submitted
          schema:
            type: string
            format: uuid
        - name: Authorization
          in: header
          required: true
          description: Authorization API Key
          schema:
            type: string
          example: API_KEY
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  launch_request_id:
                    type: string
                  status:
                    type: string
                    enum:
                      - PENDING
                      - CLAIMED
                      - DONE
                      - FAILED_EXPANSION
                      - FAILED_POLICY
                  poll_id:
                    type: integer
                  deployments:
                    type: array
                    items:
                      type: object
                      properties:
                        conversation_id:
                          type: string
                        treble_id:
                          type: string
                        cellphone:
                          type: string
                        business_scope_id:
                          type: string
                        username:
                          type: string
                        status:
                          type: string
                          enum:
                            - RECEIVED
                            - RECEIVED_BY_WORKER
                            - RETRY
                            - SUCCESS
                            - DELIVERED
                            - FAILURE
                            - FAILURE_BY_HUMAN_HANDOVER
                            - REVOKED
                            - VALIDATION_ERROR
                            - INVALID_PHONE
                            - FAILURE_BY_RATE_LIMIT
                            - COMPANY_RATE_LIMIT
                            - FAILURE_BY_TIER_CAPACITY
                            - MISSING_PARAMETER
                            - PARAMETER_MISMATCH
                            - FAILURE_BY_BLOCKED_CONTACT
                            - FAILURE_BY_OPTOUT_CONTACT
                            - INVALID_POLL
                            - CHARACTER_LIMIT_HEADER
                            - CHARACTER_LIMIT_BODY
                            - FAILURE_BY_DISABLED_HSM
                            - FAILURE_BY_SPAM_RATE_LIMIT
                            - FAILURE_BY_UNABLE_TO_CONTACT
                            - FAILURE_BY_EXPERIMENT_NUMBER
                            - FAILURE_BY_META_CHOSE_NOT_DELIVER
                            - FAILURE_BY_TEST_CHANNEL
                            - FAILURE_BY_MEDIA_UPLOAD_ERROR
                            - FAILURE_BY_DEPLOYMENT_LIMIT_REACHED
                            - FAILURE_BY_PAYMENT_ISSUE
                            - PUSH_NOTIFICATION
                            - PUSH_NOTIFATION
                          nullable: true
                          description: >-
                            null while queued. See the full breakdown of every
                            value on this page.
              example:
                launch_request_id: 59d7ef01-4518-444f-816e-1c45c1748974
                status: DONE
                poll_id: 1251072
                deployments:
                  - conversation_id: 671a1a2e2e2e2e2e2e2e2e2e
                    treble_id: abc123
                    cellphone: '3051234567'
                    business_scope_id: null
                    username: null
                    status: SENT
        '404':
          description: There is no launch request with this id for this company
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: There is no launch request with this id for this company

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.