---
name: recuut-integration
description: Use whenever interacting with recuut, including integrating paid access, configuring or reviewing an existing integration, testing payment flows, or troubleshooting behavior; follow the canonical guides and OpenAPI.
---

# Integrate recuut

Use this skill for any task that interacts with recuut, including adding, changing, reviewing, testing, or troubleshooting an integration.

## Use the canonical sources

Read the source that matches the work before changing code:

- [Documentation index](https://docs.recuut.com/llms.txt) to discover the current pages and their direct Markdown URLs.
- [How recuut works](https://docs.recuut.com/llms.mdx/guides/concepts/how-recuut-works/content.md) for the product model and paid-request lifecycle.
- [Set up your product](https://docs.recuut.com/llms.mdx/guides/setup/content.md) for the resource, revision, Price, and test key.
- [Pull contracts](https://docs.recuut.com/llms.mdx/guides/pull-contracts/content.md) and [FastAPI](https://docs.recuut.com/llms.mdx/guides/fastapi/content.md) or [Django](https://docs.recuut.com/llms.mdx/guides/django/content.md) when the application uses a maintained Python integration.
- [Direct HTTP integration](https://docs.recuut.com/llms.mdx/guides/http/content.md) for the language-neutral server flow.
- [Test a paid request](https://docs.recuut.com/llms.mdx/guides/test-paid-request/content.md) for the payer flow, paid retry, and receipt check.
- [API Reference](https://docs.recuut.com/llms.mdx/api-reference/content.md) and the [Merchant OpenAPI document](https://docs.recuut.com/openapi.json) for current endpoints, fields, and response schemas.

Fetch the Markdown URLs directly. The HTML pages do not negotiate Markdown through an `Accept` header. Keep each guide's prerequisites and verification steps beside the code you use; do not copy a code block without its payment and result-release instructions.

Treat those pages and the OpenAPI document as the contract. Do not reproduce endpoint schemas, invent fields, or rely on examples in this skill when the canonical source is available.

## Preserve these boundaries

- Keep the merchant API key on the server. Never put it in browser code, a public repository, a payer request, or a client-controlled field.
- Start with a recuut test workspace and test API key. Prove the unpaid and paid paths there before proposing a live key or real assets.
- recuut does not create, control, or fund a payer wallet. Follow the current payer steps in Test a paid request and leave wallet creation, authorization, and funding to the payer.
- The maintained framework integrations are FastAPI and Django. Use Direct HTTP for other server stacks, and do not claim another framework is supported unless the canonical docs add it.
- Do not release a protected result after an unpaid, failed, or pending response. Follow the selected guide's completion and receipt rules.

## Work through the integration

1. Inspect the merchant's server framework, existing authentication boundary, protected operation, and side effects. Keep payment enforcement on the server.
2. Ask for any missing product choices: the resource and published revision, reporting values, price, and whether the operation has side effects that require idempotency.
3. In the recuut test workspace, follow Set up your product to create or confirm the resource, revision, test Price, payment requirement, and test API key. Do not fabricate generated IDs.
4. Choose one documented path: Direct HTTP, FastAPI, or Django. Follow its guide and use the OpenAPI document for exact request and response shapes.
5. Prove that an unpaid request returns `402` with `PAYMENT-REQUIRED` and no protected result. Then follow Test a paid request to retry with payment proof.
6. Prove that the protected result appears only after successful completion. Check the transaction and receipt as described in the guide, including the pending path when it applies.
7. Report the chosen path, changed files, test evidence, values the merchant still needs to supply, and any step that was not exercised. Do not describe a local or test result as live verification.
