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

> ## Agent Instructions
> Start with the plan page, https://docs.scrip.dev/agents.md. It covers connecting, configuring, integrating, verifying, and operating a Scrip program.
> Events are asynchronous. `POST /v1/events` returns 202 when the event is accepted. Rules run afterward, so wait for the `event.completed` webhook or poll `GET /v1/events/{id}` before you read balances.
> Send the participant's `external_id` with an event. The first event for a new `external_id` enrolls the participant, so do not create participants first.
> The hosted MCP server is https://mcp.scrip.dev/mcp. It uses OAuth and is read-only. Make changes through the REST API or the dashboard.
> Add `.md` to any docs URL to get the page as Markdown. Request and response schemas are in https://docs.scrip.dev/openapi.json.

# Changelog

> Dated changes to the Scrip API, including every breaking change

Breaking changes carry a date here. See [Versioning](/versioning).

<Update label="October 2026" description="API contract" tags={["Breaking"]} rss={{ title: "Scrip API contract, October 2026", description: "Errors carry request IDs. Lists, enums, archiving, state updates, participant IDs, durations, and webhooks follow one contract." }}>
  This release sets one contract across the API.

  * Every error has `type`, `code`, `message`, `request_id`, and `doc_url`. The `doc_url` links to the entry on the [errors page](/errors).
  * Every list endpoint returns `data` and `pagination`, and takes `limit` and `cursor`.
  * Enum values are `UPPER_SNAKE` strings.
  * You archive a resource with `PATCH` and a `status` of `ARCHIVED`.
  * Requests authenticate with `Authorization: Bearer`.
  * You change participant and group tags, attributes, and counters with `PATCH`.
  * Any participant path accepts `ext:` followed by your `external_id` in place of the participant ID.
  * Durations use the units in [Limits and durations](/limits#durations). Money amounts are strings.
  * The `VOID_PENDING` rule action cancels a pending accrual by reference.
  * Webhook deliveries carry the Standard Webhooks headers, and you can send a test delivery to an endpoint.
  * A rejected event produces an `event.rejected` webhook.
</Update>


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