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

> Shows a message on one holder's pass, now or at a set time.

Use this for a message meant for one holder, such as "Your table is ready". To message every holder of a template, [send to a template](https://tapace.lk/docs/api-reference/notifications/send-to-template.md). To change a value on the pass and alert the holder about it, [update the pass](https://tapace.lk/docs/api-reference/passes/update.md) with `notificationMode: "notify"` instead.

How it reaches each wallet:

* **Apple Wallet:** the text replaces the pass's **Message for you** 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 one is rejected.
* **Google Wallet:** the title and body appear as a message on the pass. Google allows 3 notifications per pass in 24 hours. Beyond that, the message is added without an alert.

**id** `string` *required*

The pass ID.

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

A unique value, such as a UUID, so a retry never sends twice. See [Idempotency](https://tapace.lk/docs/idempotency.md).

**appleText** `string`

The Apple Wallet message, up to 120 characters. Required when the pass is issued for Apple Wallet.

**googleTitle** `string`

The Google Wallet message title, up to 60 characters. Required when the pass is issued for Google Wallet.

**googleBody** `string`

The Google Wallet message body, up to 500 characters. Required when the pass is issued for Google Wallet.

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

Texts for a wallet the pass isn't issued for are ignored.

### Response

Returns the new [notification](https://tapace.lk/docs/api-reference/notifications/get.md) with status `201`. Its `status` is `queued` when it's sent now, or `scheduled`.

### 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 one, or the pass is voided. |
| `404` | The pass doesn't exist. |

```bash cURL theme={null}
curl https://api.tapace.lk/v1/passes/pass_7hGk2LmQ9xVt4RnB8cYe/notifications \
  -H "Authorization: Bearer $TAPACE_API_KEY" \
  -H "Idempotency-Key: 4d8b1e3a-7c2f-4a9e-b5d1-2e6c9a3f7b10" \
  -H "Content-Type: application/json" \
  -d '{
    "appleText": "Your table is ready.",
    "googleTitle": "Table ready",
    "googleBody": "Your table is ready. Please come to the front desk."
  }'
```

```json 201 theme={null}
{
  "object": "notification",
  "id": "ntf_Qm3Vx8Lt2Nr7Kp4Zs9Wc",
  "scope": "pass",
  "environment": "test",
  "templateId": "tmpl_Q4vN8xT2mLr7KpZs3Wd1",
  "passId": "pass_7hGk2LmQ9xVt4RnB8cYe",
  "deploymentId": null,
  "deploymentRevision": null,
  "appleText": "Your table is ready.",
  "googleTitle": "Table ready",
  "googleBody": "Your table is ready. Please come to the front desk.",
  "status": "queued",
  "statusReason": null,
  "scheduledFor": null,
  "audience": 0,
  "actor": { "id": "cmgx4k2p90001ab12cd34ef56", "name": null, "email": null },
  "totals": null,
  "delivery": null,
  "createdAt": "2026-10-18T09:00:00.000Z",
  "updatedAt": "2026-10-18T09:00:00.000Z",
  "startedAt": null,
  "sentAt": null
}
```

```json 400 theme={null}
{
  "error": {
    "type": "invalid_request_error",
    "message": "Enter the Apple Wallet message."
  },
  "requestId": "req_8f3a2c1d9e7b6a54"
}
```


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