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

# List campaigns

> This endpoint lists your campaigns.

This endpoint lists your submitted campaigns. Campaigns in `DRAFT` status will not be returned. [Click here](/knowledge-base/campaigns) for more information about campaigns.

### URL Params

<ParamField query="limit" type="number">
  The number of campaigns to return (default 10).
</ParamField>

<ParamField query="skip" type="number">
  The number of campaigns to skip (i.e. offset).
</ParamField>

### Response

<ResponseField name="campaigns" type="[campaign]">
  An array of campaign objects returned.

  <Expandable title="campaign fields">
    <ResponseField name="id" type="string">
      The ID of the retrieved campaign.
    </ResponseField>

    <ResponseField name="brandId" type="string">
      The ID of the associated [brand](/knowledge-base/brands).
    </ResponseField>

    <ResponseField name="displayName" type="string">
      The display name of the campaign.
    </ResponseField>

    <ResponseField name="createdAt" type="timestamp">
      The time the campaign was created.
    </ResponseField>

    <ResponseField name="updatedAt" type="timestamp">
      The time the campaign was last updated.
    </ResponseField>

    <ResponseField name="status" type="string">
      The status of the campaign.

      <Expandable title="campaign statuses">
        <ResponseField name="DRAFT" type="string">
          The campaign is saved as a draft.
        </ResponseField>

        <ResponseField name="PENDING" type="string">
          The campaign is pending approval.
        </ResponseField>

        <ResponseField name="ACTIVE" type="string">
          The campaign is approved and active.
        </ResponseField>

        <ResponseField name="EXPIRED" type="string">
          The campaign has been deactivated.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="monthlyFee" type="number">
      Monthly renewal fee for the campaign (cents).
    </ResponseField>

    <ResponseField name="usecase" type="string">
      The usecase for the campaign, i.e. `MARKETING`.
    </ResponseField>

    <ResponseField name="subUsecases" type="string[]">
      An array of sub-usecases (optional).
    </ResponseField>

    <ResponseField name="details" type="object">
      Object of submission details for the campaign.

      <Expandable title="details fields">
        <ResponseField name="description" type="string">
          A description of the messaging campaign.
        </ResponseField>

        <ResponseField name="consentFlow" type="string">
          An explanation of how consent is obtained.
        </ResponseField>

        <ResponseField name="screenshotUrl" type="string">
          A screenshot of the consent flow (optional).
        </ResponseField>

        <ResponseField name="sample1" type="string">
          A sample message for the campaign.
        </ResponseField>

        <ResponseField name="sample2" type="string">
          A sample message for the campaign.
        </ResponseField>

        <ResponseField name="sample3" type="string">
          A sample message for the campaign (optional).
        </ResponseField>

        <ResponseField name="sample4" type="string">
          A sample message for the campaign (optional).
        </ResponseField>

        <ResponseField name="sample5" type="string">
          A sample message for the campaign (optional).
        </ResponseField>

        <ResponseField name="optinKeywords" type="string[]">
          Array of keywords that trigger opt-in.
        </ResponseField>

        <ResponseField name="optoutKeywords" type="string[]">
          Array of keywords that trigger opt-out.
        </ResponseField>

        <ResponseField name="helpKeywords" type="string[]">
          Array of keywords that trigger HELP message.
        </ResponseField>

        <ResponseField name="optinMessage" type="string">
          Message sent in response to opt-in keyword.
        </ResponseField>

        <ResponseField name="optoutMessage" type="string">
          Message sent in response to opt-out keyword.
        </ResponseField>

        <ResponseField name="helpMessage" type="string">
          Message sent in response to HELP keyword.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="limits" type="object">
      Object of carrier limits for the campaign.

      <Expandable title="limits fields">
        <ResponseField name="smsTpmAtt" type="number">
          SMS messages per minute limit to AT\&T.
        </ResponseField>

        <ResponseField name="mmsTpmAtt" type="number">
          MMS messages per minute limit to AT\&T.
        </ResponseField>

        <ResponseField name="dailyTmoCap" type="number">
          Daily SMS/MMS limit to T-Mobile.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="error" type="string">
  Error message if the request fails.
</ResponseField>

<ResponseExample>
  ```json Success theme={null}
  {
    "campaigns": [
      {
        "id": "h4cQ2gls",
        "brandId": "A8wm4k2s",
        "displayName": "Internal Testing",
        "createdAt": "2023-12-12T12:33:33.630Z",
        "updatedAt": "2023-12-12T12:33:33.630Z",
        "status": "ACTIVE",
        ...
      },
      {
        "id": "A8wm4k2s",
        "brandId": "oR439zks",
        "displayName": "User Notifications",
        "createdAt": "2023-12-07T12:33:33.630Z",
        "updatedAt": "2023-12-08T12:33:33.630Z",
        "status": "PENDING",
        ...
      }
      And so on...
    ]
  }
  ```

  ```json Error theme={null}
  {
    "campaigns": [],
    "error": "Internal server error"
  }
  ```
</ResponseExample>
