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

# Update a pass

> Changes a pass's field values and pushes them to every wallet that has it.

Send only the fields that change. See [Update passes](/guides/update-passes) for how notifications and delivery work.

<ParamField path="id" type="string" required>
  The pass ID.
</ParamField>

<ParamField header="Idempotency-Key" type="string" required>
  A unique value for this update.
</ParamField>

<ParamField body="fieldValues" type="object">
  New values keyed by field key. Each value is a string, a number, or `null` to clear an optional field. Fields you leave out keep their values.
</ParamField>

<ParamField body="notificationMode" type="string" default="silent">
  `silent` updates the pass quietly. `notify` also shows a notification on the holder's lock screen.
</ParamField>

### Response

<ResponseField name="pass" type="object">
  The updated [pass](/api-reference/passes/get).
</ResponseField>

<ResponseField name="update" type="object">
  A record of this change.

  <Expandable title="properties">
    <ResponseField name="id" type="string">
      Unique ID, starting with `pupd_`.
    </ResponseField>

    <ResponseField name="notificationMode" type="string">
      `silent` or `notify`.
    </ResponseField>

    <ResponseField name="walletChanged" type="boolean">
      Whether the change is visible in wallets.
    </ResponseField>

    <ResponseField name="changes" type="object">
      What changed. `fields` lists each field with its `key`, `label`, `from` and `to` values.
    </ResponseField>

    <ResponseField name="delivery" type="object">
      Progress per wallet: `apple.status` and `google.status`. See [delivery status](/guides/update-passes#delivery-status).
    </ResponseField>
  </Expandable>
</ResponseField>

### Errors

| Status | When |
| - | - |
| `400` | A key isn't a per-pass field, a required field would be cleared, nothing changed, or the pass is voided. |
| `404` | The pass doesn't exist. |
| `409` | The pass changed while this update was being saved. Retry the request. |

<RequestExample>
  ```bash cURL theme={null}
  curl -X PATCH https://api.tapace.lk/v1/passes/pass_7hGk2LmQ9xVt4RnB8cYe \
    -H "Authorization: Bearer $TAPACE_API_KEY" \
    -H "Idempotency-Key: 0b9e4c1a-7d2f-4e8b-a6c3-5f1d9e2b7a40" \
    -H "Content-Type: application/json" \
    -d '{
      "fieldValues": { "points": 150 },
      "notificationMode": "notify"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "pass": {
      "object": "pass",
      "id": "pass_7hGk2LmQ9xVt4RnB8cYe",
      "status": "active",
      "fieldValues": { "memberName": "Nimal Perera", "points": 150 },
      "updatedAt": "2026-10-13T10:30:00.000Z"
    },
    "update": {
      "object": "pass_update",
      "id": "pupd_Lm4Xq8Vt2Nr7Kz3Pw9Bc",
      "passId": "pass_7hGk2LmQ9xVt4RnB8cYe",
      "notificationMode": "notify",
      "walletChanged": true,
      "changes": {
        "fields": [
          { "key": "points", "label": "Points", "from": "120", "to": "150" }
        ]
      },
      "delivery": {
        "apple": { "status": "pending", "devices": 1, "error": null },
        "google": { "status": "pending", "message": "pending", "error": null }
      },
      "createdAt": "2026-10-13T10:30:00.000Z"
    }
  }
  ```
</ResponseExample>


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