# Scrip Docs > API documentation for Scrip, a rewards infrastructure API backed by a double-entry ledger. Build loyalty, cashback, and incentive programs with events, CEL-based rules, assets, participants, balance operations, redemptions, and webhooks. ## Docs - [AI resources](https://docs.scrip.dev/ai-resources.md): Context files and documentation links for AI coding tools - [Create an asset](https://docs.scrip.dev/api-reference/assets/create-an-asset.md): Create a new asset type within a program. - [Get an asset](https://docs.scrip.dev/api-reference/assets/get-an-asset.md): Retrieve an asset by ID. - [List assets](https://docs.scrip.dev/api-reference/assets/list-assets.md): List all assets for your organization. - [Assets](https://docs.scrip.dev/api-reference/assets/overview.md): Units of value that participants earn and spend - [Update an asset](https://docs.scrip.dev/api-reference/assets/update-an-asset.md): Update an asset's name, status, or maximum transaction amount. - [Cancel an automation](https://docs.scrip.dev/api-reference/automations/cancel-an-automation.md): Cancel a running or pending automation execution. - [Create an automation](https://docs.scrip.dev/api-reference/automations/create-an-automation.md): Create a scheduled or event-driven automation within a program. - [Delete an automation](https://docs.scrip.dev/api-reference/automations/delete-an-automation.md): Soft-delete (archive) an automation. - [Get an automation](https://docs.scrip.dev/api-reference/automations/get-an-automation.md): Retrieve an automation by ID. - [List automation subscriptions](https://docs.scrip.dev/api-reference/automations/list-automation-subscriptions.md): Returns per-participant subscription records for a participant-scoped automation. - [List automations](https://docs.scrip.dev/api-reference/automations/list-automations.md): Returns a paginated list of automations for a program. - [Automations](https://docs.scrip.dev/api-reference/automations/overview.md): Scheduled and triggered event generation - [Refresh subscriptions](https://docs.scrip.dev/api-reference/automations/refresh-subscriptions.md): Re-evaluate participant filters and update subscriptions for a participant_state automation. - [Trigger an automation](https://docs.scrip.dev/api-reference/automations/trigger-an-automation.md): Manually trigger an automation outside its normal schedule. - [Update an automation](https://docs.scrip.dev/api-reference/automations/update-an-automation.md): Partially update an automation. - [Data Model](https://docs.scrip.dev/api-reference/data-model.md): Reference map of Scrip's resources and how they relate - [Get an event](https://docs.scrip.dev/api-reference/events/get-an-event.md): Returns a single event by ID, including processing status and rule evaluation results. - [Get event by idempotency key](https://docs.scrip.dev/api-reference/events/get-event-by-idempotency-key.md): Look up an event by its idempotency key and program ID. - [Get event impact](https://docs.scrip.dev/api-reference/events/get-event-impact.md): Returns the full causal chain for a processed event: rule evaluations, journal entries with postings, state changes, and per-entity balance impact. - [Ingest an event](https://docs.scrip.dev/api-reference/events/ingest-an-event.md): Submit an event for asynchronous rule evaluation. The idempotency_key is the logical event identity scoped to the program: reusing the same key returns the same deterministic event_id and does not create another event, even if the payload differs. To correct or replace an event, submit a new event w… - [Ingest events in batch](https://docs.scrip.dev/api-reference/events/ingest-events-in-batch.md): Submit up to 100 events in a single request. Each event is validated independently; invalid events are rejected synchronously while valid events are accepted for asynchronous processing. Subscribe to event.failed webhooks for async error notification. - [List events](https://docs.scrip.dev/api-reference/events/list-events.md): List events for your organization. - [Events](https://docs.scrip.dev/api-reference/events/overview.md): Signals from your app that trigger rule evaluation - [Retry a failed event](https://docs.scrip.dev/api-reference/events/retry-a-failed-event.md): Reset a `FAILED` event to `PENDING` for reprocessing. - [Add a member to a group](https://docs.scrip.dev/api-reference/groups/add-a-member-to-a-group.md): Add a member to a group. - [Add a tag to a group](https://docs.scrip.dev/api-reference/groups/add-a-tag-to-a-group.md): Add a tag to the group. Idempotent. - [Adjust group balance](https://docs.scrip.dev/api-reference/groups/adjust-group-balance.md): Manually credit or debit a group's balance. - [Create a group](https://docs.scrip.dev/api-reference/groups/create-a-group.md): Create a participant group with initial members. At least one `ADMIN` member is required. - [Delete a group](https://docs.scrip.dev/api-reference/groups/delete-a-group.md): Soft-delete (archive) a group. - [Delete a group counter](https://docs.scrip.dev/api-reference/groups/delete-a-group-counter.md): Remove a counter from the group. - [Forfeit group balance](https://docs.scrip.dev/api-reference/groups/forfeit-group-balance.md): Moves group balance to breakage (system account). - [Get a group](https://docs.scrip.dev/api-reference/groups/get-a-group.md): Retrieve a group by ID, including current balances. - [Get group attribute](https://docs.scrip.dev/api-reference/groups/get-group-attribute.md): Returns a single attribute by key on a group. - [Get group attributes](https://docs.scrip.dev/api-reference/groups/get-group-attributes.md): Returns all attributes on a group. - [Get group balances](https://docs.scrip.dev/api-reference/groups/get-group-balances.md): Returns all balances for a group. - [Get group counter](https://docs.scrip.dev/api-reference/groups/get-group-counter.md): Returns a single counter by key on a group. - [Get group counters](https://docs.scrip.dev/api-reference/groups/get-group-counters.md): Returns all counters on a group. - [Get group state history](https://docs.scrip.dev/api-reference/groups/get-group-state-history.md): Returns a best-effort unified timeline of state changes (tags, counters, attributes, tiers). Tier entries are recorded alongside the canonical tier history; for authoritative tier transition details use the dedicated tier history endpoint. - [Get group tags](https://docs.scrip.dev/api-reference/groups/get-group-tags.md): Returns all tags on a group. - [Hold group balance](https://docs.scrip.dev/api-reference/groups/hold-group-balance.md): Moves group balance from AVAILABLE to HELD. - [List group members](https://docs.scrip.dev/api-reference/groups/list-group-members.md): List members in a group. - [List groups](https://docs.scrip.dev/api-reference/groups/list-groups.md): List all groups for your organization. - [Groups](https://docs.scrip.dev/api-reference/groups/overview.md): Collections of participants for team-based incentives - [Release group balance](https://docs.scrip.dev/api-reference/groups/release-group-balance.md): Moves group balance from HELD to AVAILABLE. - [Remove a member from a group](https://docs.scrip.dev/api-reference/groups/remove-a-member-from-a-group.md): Remove a member from a group. - [Remove a tag from a group](https://docs.scrip.dev/api-reference/groups/remove-a-tag-from-a-group.md): Remove a tag from the group. Idempotent. - [Remove group attribute](https://docs.scrip.dev/api-reference/groups/remove-group-attribute.md): Removes a single attribute by key from a group. - [Set a group attribute](https://docs.scrip.dev/api-reference/groups/set-a-group-attribute.md): Set a single attribute on the group. - [Set a group counter](https://docs.scrip.dev/api-reference/groups/set-a-group-counter.md): Set a counter on the group. - [Set group tags](https://docs.scrip.dev/api-reference/groups/set-group-tags.md): Replaces all tags on a group. - [Update a group](https://docs.scrip.dev/api-reference/groups/update-a-group.md): Update a group. - [Update group attributes](https://docs.scrip.dev/api-reference/groups/update-group-attributes.md): Merge key-value pairs into the group's attributes. - [Update group member role](https://docs.scrip.dev/api-reference/groups/update-group-member-role.md): Updates a member's role in a group. - [Introduction](https://docs.scrip.dev/api-reference/introduction.md): Base URL, request and response format, pagination, idempotency, and error conventions - [Add tag to participant](https://docs.scrip.dev/api-reference/participants/add-tag-to-participant.md): Add a tag to a participant. Idempotent. - [Adjust participant balance](https://docs.scrip.dev/api-reference/participants/adjust-participant-balance.md): Manually credit or debit a participant's balance. - [Create a participant](https://docs.scrip.dev/api-reference/participants/create-a-participant.md): Create a participant, or update if `external_id` already exists (upsert). - [Delete participant counter](https://docs.scrip.dev/api-reference/participants/delete-participant-counter.md): Remove a counter from a participant. Idempotent. - [Forfeit participant balance](https://docs.scrip.dev/api-reference/participants/forfeit-participant-balance.md): Forfeit balance from the specified bucket to the system breakage account. The `bucket` field is required and must be `AVAILABLE` or `HELD`. Unlike other balance operations, forfeit is allowed on closed participants. - [Get a participant](https://docs.scrip.dev/api-reference/participants/get-a-participant-by-internal-id.md): Retrieve a participant with full details. - [Get participant attribute](https://docs.scrip.dev/api-reference/participants/get-participant-attribute.md): Retrieve a single attribute by key. - [Get participant attributes](https://docs.scrip.dev/api-reference/participants/get-participant-attributes.md): Retrieve all attributes for a participant. - [Get participant balances](https://docs.scrip.dev/api-reference/participants/get-participant-balances.md): Returns current balances for a participant, broken down by bucket. - [Get participant counter](https://docs.scrip.dev/api-reference/participants/get-participant-counter.md): Retrieve a single counter by key. - [Get participant counters](https://docs.scrip.dev/api-reference/participants/get-participant-counters.md): Retrieve all counters for a participant. - [Get participant state history](https://docs.scrip.dev/api-reference/participants/get-participant-state-history.md): Returns a best-effort unified timeline of state changes (tags, counters, attributes, tiers). Tier entries are recorded alongside the canonical tier history; for authoritative tier transition details use the dedicated tier history endpoint. - [Get participant tags](https://docs.scrip.dev/api-reference/participants/get-participant-tags.md): Retrieve all tags for a participant. - [Get participant transaction history](https://docs.scrip.dev/api-reference/participants/get-participant-transaction-history.md): Retrieve transaction history for a participant. - [Hold participant balance](https://docs.scrip.dev/api-reference/participants/hold-participant-balance.md): Move balance from `AVAILABLE` to `HELD` bucket. - [List participants](https://docs.scrip.dev/api-reference/participants/list-or-get-participants.md): Returns a paginated list of participants. When `external_id` is provided, it is treated as an exact-match filter and the response shape remains the same list envelope. - [List participant events](https://docs.scrip.dev/api-reference/participants/list-participant-events.md): Retrieve events for a participant. - [List participant lots](https://docs.scrip.dev/api-reference/participants/list-participant-lots.md): List lots for a participant by asset. Only applicable to `LOT` inventory mode assets. - [Participants](https://docs.scrip.dev/api-reference/participants/overview.md): Users in your system who earn and spend value - [Release participant balance](https://docs.scrip.dev/api-reference/participants/release-participant-balance.md): Move balance from `HELD` back to `AVAILABLE` bucket. - [Remove participant attribute](https://docs.scrip.dev/api-reference/participants/remove-participant-attribute.md): Remove a single attribute by key. - [Remove tag from participant](https://docs.scrip.dev/api-reference/participants/remove-tag-from-participant.md): Remove a tag from a participant. - [Set participant attribute](https://docs.scrip.dev/api-reference/participants/set-participant-attribute.md): Set a single attribute by key. - [Set participant counter](https://docs.scrip.dev/api-reference/participants/set-participant-counter.md): Set a counter on a participant. - [Set participant tags](https://docs.scrip.dev/api-reference/participants/set-participant-tags.md): Replace all tags for a participant. - [Update a participant](https://docs.scrip.dev/api-reference/participants/update-a-participant.md): Partially update a participant. - [Update participant attributes](https://docs.scrip.dev/api-reference/participants/update-participant-attributes.md): Merge key-value pairs into a participant's attributes. - [Update participant status](https://docs.scrip.dev/api-reference/participants/update-participant-status.md): Update a participant's lifecycle state. - [Void hold participant balance](https://docs.scrip.dev/api-reference/participants/void-hold-participant-balance.md): Cancel provisionally issued HELD lots by `reference_id`, returning value to the original source account. Only processes lots created directly in HELD via CREDIT; lots moved to HELD via HOLD are excluded. Requires LOT mode asset. - [Burn program balance](https://docs.scrip.dev/api-reference/programs/burn-program-balance.md): Remove funds from a program's wallet for a PREFUNDED asset. - [Create a program](https://docs.scrip.dev/api-reference/programs/create-a-program.md): Create a new program. - [Fund a program](https://docs.scrip.dev/api-reference/programs/fund-a-program.md): Add funds to a program's wallet for a PREFUNDED asset. - [Get a program](https://docs.scrip.dev/api-reference/programs/get-a-program.md): Retrieve a program by ID. - [Get program balance](https://docs.scrip.dev/api-reference/programs/get-program-balance.md): Retrieve a program's wallet balance. - [Get program wallet transaction history](https://docs.scrip.dev/api-reference/programs/get-program-wallet-transaction-history.md): Retrieve transaction history for a program's wallet. - [Link asset to program](https://docs.scrip.dev/api-reference/programs/link-asset-to-program.md): Link an existing asset to a program. - [List program assets](https://docs.scrip.dev/api-reference/programs/list-program-assets.md): List assets linked to a program. - [List programs](https://docs.scrip.dev/api-reference/programs/list-programs.md): List all programs for your organization. - [Programs](https://docs.scrip.dev/api-reference/programs/overview.md): Top-level containers for incentive logic - [Update a program](https://docs.scrip.dev/api-reference/programs/update-a-program.md): Partially update a program. - [Get redemption](https://docs.scrip.dev/api-reference/redemptions/get-redemption.md): Retrieve a redemption by ID. - [List participant redemptions](https://docs.scrip.dev/api-reference/redemptions/list-participant-redemptions.md): List redemptions for a participant. - [List redemption reversals](https://docs.scrip.dev/api-reference/redemptions/list-redemption-reversals.md): List reversals for a redemption. - [Redemptions](https://docs.scrip.dev/api-reference/redemptions/overview.md): Spending participant balances for rewards or value - [Redeem a catalog item](https://docs.scrip.dev/api-reference/redemptions/redeem-a-catalog-item.md): Redeem a reward catalog item for a participant. - [Redeem points/assets](https://docs.scrip.dev/api-reference/redemptions/redeem-points-assets.md): Redeem an amount of an asset from a participant's `AVAILABLE` balance. - [Reverse a redemption](https://docs.scrip.dev/api-reference/redemptions/reverse-a-redemption.md): Reverse all or part of a redemption, returning funds to the participant. - [Get a journal entry](https://docs.scrip.dev/api-reference/reporting/get-a-journal-entry.md): Retrieve a journal entry by ID, including its double-entry postings. - [Get ledger summary](https://docs.scrip.dev/api-reference/reporting/get-ledger-summary.md): Returns aggregated ledger statistics per asset. Optionally filter by `program_id`. Provide both `from` and `to` to include period-scoped rollforward fields in the response. In period mode, `period_redeemed` is gross redemptions for the window; reversals and similar adjustments are reflected in `othe… - [Get program activity](https://docs.scrip.dev/api-reference/reporting/get-program-activity.md): Returns activity metrics per program. Use `since` to limit which programs are returned (only programs with activity after the timestamp). When `from` and `to` are provided, `event_count`, `total_issued` and `total_redeemed` are scoped to that period; otherwise they are all-time totals. Journal count… - [List journal entries](https://docs.scrip.dev/api-reference/reporting/list-journal-entries.md): List journal entries (double-entry audit trail). - [Reporting](https://docs.scrip.dev/api-reference/reporting/overview.md): Ledger summaries and program activity data - [Create a reward](https://docs.scrip.dev/api-reference/rewards/create-a-reward.md): Create a new reward in the program's catalog. - [Get a reward](https://docs.scrip.dev/api-reference/rewards/get-reward.md): Retrieve a specific reward by ID. - [List rewards](https://docs.scrip.dev/api-reference/rewards/list-rewards.md): List rewards for a program. - [Rewards](https://docs.scrip.dev/api-reference/rewards/overview.md): Catalog items available for redemption - [Update a reward](https://docs.scrip.dev/api-reference/rewards/update-a-reward.md): Partially update a reward. - [Create a rule](https://docs.scrip.dev/api-reference/rules/create-a-rule.md): Create a rule that evaluates a CEL condition against incoming events and executes actions when matched. - [Get a rule](https://docs.scrip.dev/api-reference/rules/get-a-rule.md): Retrieve a rule by ID. - [Get rule change history](https://docs.scrip.dev/api-reference/rules/get-rule-change-history.md): Retrieve the audit trail of changes for a specific rule. - [List rules](https://docs.scrip.dev/api-reference/rules/list-rules.md): List all rules for your organization. - [Rules](https://docs.scrip.dev/api-reference/rules/overview.md): Automated reward logic triggered by events - [Reset a rule budget](https://docs.scrip.dev/api-reference/rules/reset-a-rule-budget.md): Reset the consumed amount for a specific budget on a rule, identified by `asset_id`. - [Simulate a rule](https://docs.scrip.dev/api-reference/rules/simulate-a-rule.md): Dry-run a rule against sample event data. No ledger changes occur. - [Update a rule](https://docs.scrip.dev/api-reference/rules/update-a-rule.md): Partially update a rule. At least one field must be provided. If `actions` is included, it must contain at least one action (empty array is rejected). - [Validate a CEL condition](https://docs.scrip.dev/api-reference/rules/validate-a-cel-condition.md): Check whether a CEL expression is syntactically valid without creating a rule. - [Archive a tier](https://docs.scrip.dev/api-reference/tiers/archive-a-tier.md): Archives a tier. Archiving is one-way: an archived tier stops all new assignment and evaluation — SET_TIER rule actions, automatic qualification, and manual assignment — while existing participant tier state is preserved as historical. The tier and its levels remain readable. - [Create a tier](https://docs.scrip.dev/api-reference/tiers/create-a-tier.md): Creates a new tier with levels within a program. - [Get a tier](https://docs.scrip.dev/api-reference/tiers/get-a-tier.md): Returns a tier and all its levels, looked up by the tier's `key`. - [Get participant tier](https://docs.scrip.dev/api-reference/tiers/get-participant-tier.md): Returns the participant's current level for a single tier. - [List participant tiers](https://docs.scrip.dev/api-reference/tiers/list-participant-tiers.md): Returns the participant's tier levels for a program. The `program_id` query parameter is required. - [List tiers](https://docs.scrip.dev/api-reference/tiers/list-tiers.md): Returns all tiers and their levels for the given program. - [Tiers](https://docs.scrip.dev/api-reference/tiers/overview.md): Ranked progression tracks with qualification, retention, and downgrade policies - [Remove participant tier](https://docs.scrip.dev/api-reference/tiers/remove-participant-tier.md): Remove a participant's current tier level, downgrading them to base (rank 0). - [Set participant tier](https://docs.scrip.dev/api-reference/tiers/set-participant-tier.md): Directly set a participant's tier to a specific level, optionally with an expiration. - [Update a tier](https://docs.scrip.dev/api-reference/tiers/update-a-tier.md): Partially update a tier or its levels. - [Create a transfer](https://docs.scrip.dev/api-reference/transfers/create-a-transfer.md): Atomically transfer assets from one participant to one or more recipients. - [Transfers](https://docs.scrip.dev/api-reference/transfers/overview.md): Moving value between participants - [Create a webhook endpoint](https://docs.scrip.dev/api-reference/webhooks/create-a-webhook-endpoint.md): Register a URL to receive webhook notifications for selected event types. - [Delete a webhook endpoint](https://docs.scrip.dev/api-reference/webhooks/delete-a-webhook-endpoint.md): Soft-delete an endpoint by setting its status to ARCHIVED. Archived endpoints stop receiving deliveries. - [Get a delivery](https://docs.scrip.dev/api-reference/webhooks/get-a-webhook-delivery.md): Retrieve a single delivery attempt including response body and error details. - [Get a webhook endpoint](https://docs.scrip.dev/api-reference/webhooks/get-a-webhook-endpoint.md): Retrieve a webhook endpoint by ID. The signing secret is not included. - [List deliveries](https://docs.scrip.dev/api-reference/webhooks/list-webhook-deliveries.md): List delivery attempts for a specific webhook endpoint. - [List webhook endpoints](https://docs.scrip.dev/api-reference/webhooks/list-webhook-endpoints.md): List all webhook endpoints for your organization. - [Webhooks](https://docs.scrip.dev/api-reference/webhooks/overview.md): Real-time HTTP notifications for domain events - [Retry a delivery](https://docs.scrip.dev/api-reference/webhooks/retry-a-webhook-delivery.md): Reset a FAILED delivery back to PENDING for immediate redelivery. Only works on deliveries in FAILED status. - [Rotate endpoint secret](https://docs.scrip.dev/api-reference/webhooks/rotate-webhook-endpoint-secret.md): Generate a new signing secret. The old secret is immediately invalidated. - [Update a webhook endpoint](https://docs.scrip.dev/api-reference/webhooks/update-a-webhook-endpoint.md): Partial update. Only provided fields are changed; omitted fields are preserved. - [Authentication](https://docs.scrip.dev/authentication.md): API key authentication, request headers, rate limits, and error handling - [Cashback Card](https://docs.scrip.dev/examples/cashback-card.md): Category multipliers, spend thresholds, and monthly resets - [Common Patterns](https://docs.scrip.dev/examples/common-patterns.md): Copy-paste recipes for the most common reward behaviors - [Stripe Issuing](https://docs.scrip.dev/examples/stripe-issuing.md): Connect Stripe Issuing card transactions to your rewards program - [Asset Configuration](https://docs.scrip.dev/guides/asset-configuration.md): Inventory modes, issuance policies, and precision settings - [Automations](https://docs.scrip.dev/guides/automations.md): Scheduled and state-driven event generation - [Balance Operations](https://docs.scrip.dev/guides/balance-operations.md): Adjust, hold, release, and forfeit balances directly - [CEL Expressions](https://docs.scrip.dev/guides/cel-expressions.md): Write rule conditions and dynamic amounts with CEL - [Core Concepts](https://docs.scrip.dev/guides/core-concepts.md): How programs, assets, participants, events, rules, and the double-entry ledger fit together - [Event Processing](https://docs.scrip.dev/guides/event-processing.md): Event ingestion, rule matching, and action execution - [Groups](https://docs.scrip.dev/guides/groups.md): Shared wallets and state for teams, families, and organizational pools - [Ledger](https://docs.scrip.dev/guides/ledger.md): Double-entry journal entries, postings, and system accounts - [Lots & Expiration](https://docs.scrip.dev/guides/lots-and-expiration.md): Track individual credits with expiration and vesting dates - [Participants](https://docs.scrip.dev/guides/participants.md): Create and manage the users in your programs - [Programs](https://docs.scrip.dev/guides/programs.md): The top-level container for rules, assets, and participants - [Redemptions](https://docs.scrip.dev/guides/redemptions.md): Debit balances through amount redemptions and catalog purchases - [Reporting](https://docs.scrip.dev/guides/reporting.md): Ledger summaries, program activity, and API usage - [Rewards Catalog](https://docs.scrip.dev/guides/rewards-catalog.md): Define redeemable items with pricing, inventory limits, and availability windows - [Rule Actions](https://docs.scrip.dev/guides/rule-actions.md): Configure what happens when a rule matches - [State Management](https://docs.scrip.dev/guides/state-management.md): Tags, counters, and attributes for tracking participant state - [Testing](https://docs.scrip.dev/guides/testing.md): Validate rules before deploying with simulation - [Tiers](https://docs.scrip.dev/guides/tiers.md): Ranked progression tracks with qualification, retention, and downgrade policies - [Transfers](https://docs.scrip.dev/guides/transfers.md): Move funds between participants and groups within a program - [Webhooks](https://docs.scrip.dev/guides/webhooks.md): Real-time HTTP callbacks for balance changes, redemptions, and more - [Writing Rules](https://docs.scrip.dev/guides/writing-rules.md): Define when and how participants earn and spend - [Introduction](https://docs.scrip.dev/introduction.md): Rewards infrastructure API backed by a double-entry ledger. Send events, define earn rules, and operate incentive programs without building the accounting. - [Quickstart](https://docs.scrip.dev/quickstart.md): Create a program, configure an asset and rule, send an event, and verify the resulting balance ## OpenAPI Specs - [openapi](https://docs.scrip.dev/openapi.json)