# Resources and revisions (/guides/concepts/resources-revisions)

A **resource** identifies the API endpoint, operation, or digital item that a payer can buy. It answers: *what access is being sold?*

Each Resource has an immutable integration key such as `text_generator`. The key is unique inside one environment. Use the same key for equivalent test and live Resources while keeping each environment's Resource and revision IDs distinct.

A **revision** defines the fixed reporting contract for one version of that resource. It answers: *which values explain this execution, and how should a historical transaction be interpreted?*

For example, a text-generation resource might have one revision that requires `input_tokens` and `output_tokens`. After you publish it, those rules do not change. Every transaction using that revision keeps the same meaning later.

This separation makes changes safe and visible:

- Adding, removing, or changing a reported value requires a new revision.
- A new revision changes how future executions are reported. It does not rewrite historical transactions.
- A price change is a separate payment-policy change. It does not change the reporting contract.

Framework integrations and generated Python types use the revision to validate reported values. Direct HTTP integrations send the same values through the Merchant API. The product meaning stays the same either way.

For the first guide, the dashboard handoff is concrete:

| Dashboard item | Example value | What your server keeps |
| --- | --- | --- |
| Resource | API · **Text generation API** · `text_generator` | The integration key correlates equivalent test and live Resources. |
| Published revision | **Text generation v1** with `input_tokens` and `output_tokens` | The generated Python type, or an `acr_…` revision ID for raw HTTP. |
| Price | Fixed **0.01 USD** | Nothing supplied by the caller; Recuut applies it. |

Create and publish these values in [the Direct HTTP setup](/guides/http/#1-create-the-test-payment-policy). Copy the revision ID only after publication.

[See how prices stay separate →](/guides/concepts/prices-payment-policy/)
