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

# Send to a template

> Shows an announcement on every active pass of a template.

Use this for news every holder should see, such as "Doors open at 7". It reaches the template's active passes in your API key's environment, as they are when it's sent.

How it reaches each wallet:

* **Apple Wallet:** the text replaces the pass's **Announcements** field on the back, and Wallet shows it on the lock screen. Apple only alerts when the text changes, so a text identical to the current announcement is rejected.
* **Google Wallet:** the title and body appear as a message on each pass. Google allows 3 notifications per pass in 24 hours. Passes past that get the message without an alert.

A wallet's text is required when the template's [`issuePlatforms`](https://tapace.lk/docs/api-reference/templates/get) offers that wallet, or an active pass in your API key's environment uses it. Text for any other wallet is ignored.

**id** `string` *required*

The template ID.

**Idempotency-Key** `string` *required*

A unique value, such as a UUID, so a retry never sends twice.

**appleText** `string`

The Apple Wallet message, up to 120 characters.

**googleTitle** `string`

The Google Wallet message title, up to 60 characters.

**googleBody** `string`

The Google Wallet message body, up to 500 characters.

**scheduledFor** `string`

When to send it, as an ISO 8601 time from 5 minutes to 24 hours from now. Leave it out to send now.

### Response

Returns the new [notification](https://tapace.lk/docs/api-reference/notifications/get.md) with status `201`. Follow its progress in `totals` with [Get a notification](https://tapace.lk/docs/api-reference/notifications/get.md).

### Errors

| Status | When |
| - | - |
| `400` | A required text is missing or too long, `scheduledFor` is outside the allowed window, the Apple text is identical to the current announcement, the template is archived, or no wallet is offered or in use. |
| `404` | The template doesn't exist. |

```bash cURL theme={null}
curl https://api.tapace.lk/v1/templates/tmpl_Q4vN8xT2mLr7KpZs3Wd1/notifications \
  -H "Authorization: Bearer $TAPACE_API_KEY" \
  -H "Idempotency-Key: 9e2a7c4b-1f3d-4b8e-a6c2-5d9f1b3e7a20" \
  -H "Content-Type: application/json" \
  -d '{
    "appleText": "Doors open at 7 tonight.",
    "googleTitle": "Doors at 7",
    "googleBody": "Doors open at 7 tonight. See you there!",
    "scheduledFor": "2026-10-18T13:30:00.000Z"
  }'
```

```json 201 theme={null}
{
  "object": "notification",
  "id": "ntf_Bv6Kp2Wx9Lm4Tq8Rz3Nc",
  "scope": "template",
  "environment": "test",
  "templateId": "tmpl_Q4vN8xT2mLr7KpZs3Wd1",
  "passId": null,
  "deploymentId": null,
  "deploymentRevision": null,
  "appleText": "Doors open at 7 tonight.",
  "googleTitle": "Doors at 7",
  "googleBody": "Doors open at 7 tonight. See you there!",
  "status": "scheduled",
  "statusReason": null,
  "scheduledFor": "2026-10-18T13:30:00.000Z",
  "audience": 0,
  "actor": { "id": "cmgx4k2p90001ab12cd34ef56", "name": null, "email": null },
  "totals": {
    "pending": 0,
    "apple": { "delivered": 0, "devices": 0, "notInstalled": 0, "failed": 0, "skipped": 0 },
    "google": { "sent": 0, "limitReached": 0, "notSaved": 0, "failed": 0, "skipped": 0 }
  },
  "delivery": null,
  "createdAt": "2026-10-18T09:00:00.000Z",
  "updatedAt": "2026-10-18T09:00:00.000Z",
  "startedAt": null,
  "sentAt": null
}
```


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