## List templates

`GET https://whatsapp.paaltech.org/api/v1/businesses/{external_id}/whatsapp/templates`

Message templates of the business's WhatsApp accounts, 100 per page, by name. Components are exactly as Meta returns them. Templates Meta deleted are hidden unless `include_removed=1`.

Ability: `templates.read`

### Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `external_id` | string | yes | Your own ID for the business (Multi-SKUUL - the tenant ID). Max 191 characters. Pattern `^[A-Za-z0-9._:-]+$` |

### Query parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `status` | string | no | Case-insensitive, e.g. APPROVED, PENDING, REJECTED, PAUSED. Example `APPROVED` |
| `name` | string | no | Exact template name. |
| `language` | string | no | Template language, e.g. en_US. Example `en_US` |
| `include_removed` | boolean | no | Also list templates Meta no longer has (status REMOVED), kept with their history. |
| `page` | integer | no | Default `1` |

### Request

```bash
curl --request GET \
  --url 'https://whatsapp.paaltech.org/api/v1/businesses/presec/whatsapp/templates?status=APPROVED' \
  --header "Authorization: Bearer $PAALCHAT_TOKEN" \
  --header 'Accept: application/json'
```

### Responses

- **200** - A page of templates.

```json
{
  "data": [
    {
      "name": "fees_reminder",
      "language": "en_US",
      "category": "UTILITY",
      "status": "APPROVED",
      "rejection_reason": null,
      "components": [
        {
          "type": "BODY",
          "text": "Dear {{1}}, the fees balance for {{2}} is GHS {{3}}. Please pay before {{4}}.",
          "example": {"body_text": [["Mrs Mensah", "Kofi", "450.00", "30 October"]]}
        }
      ],
      "waba_id": "102290129340398",
      "last_synced_at": "2026-09-30T17:54:27+00:00"
    }
  ],
  "links": {
    "first": "https://whatsapp.paaltech.org/api/v1/businesses/presec/whatsapp/templates?page=1",
    "last": "https://whatsapp.paaltech.org/api/v1/businesses/presec/whatsapp/templates?page=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 100,
    "total": 1,
    "from": 1,
    "to": 1,
    "path": "https://whatsapp.paaltech.org/api/v1/businesses/presec/whatsapp/templates"
  }
}
```

- **401** - unauthenticated - missing, invalid, revoked or expired token

```json
{
  "error": {"code": "unauthenticated", "message": "A valid product token is required."}
}
```

- **403** - missing_ability, product_suspended or product_token_required

```json
{
  "error": {
    "code": "missing_ability",
    "message": "This token does not have the ability this request needs."
  }
}
```

- **404** - not_found - not yours, or does not exist

```json
{"error": {"code": "not_found", "message": "Business not found."}}
```

- **422** - validation_failed - fields are invalid; see errors.

```json
{
  "error": {
    "code": "validation_failed",
    "message": "The external id field format is invalid. (and 1 more error)"
  },
  "errors": {
    "external_id": ["The external id field format is invalid."],
    "name": ["The name field is required."]
  }
}
```

- **429** - rate_limited - over 300 requests/minute for this product

```json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Slow down and retry after the Retry-After header."
  }
}
```

