# Selo > CI for x402. Selo pays your endpoint before your users do. - [Introduction](https://docs.useselo.xyz/index.md): Selo is CI for x402. It pays your endpoint before your users do. - [Your first release test](https://docs.useselo.xyz/quickstart.md): Authorize your x402 endpoint, run a free preflight, and let Selo pay it on Algorand Mainnet to get a PASS, FAIL or INCONCLUSIVE verdict. - [How Selo works](https://docs.useselo.xyz/how-it-works.md): The full flow of a release test: two payment legs in a fixed order, five checks, a deterministic verdict and a signed attestation. - [Use Selo from a coding agent](https://docs.useselo.xyz/agents.md): Hand a release test to Claude Code, Cursor or another coding agent, while the wallet and the Mainnet approval stay with you. - [Authorize your endpoint](https://docs.useselo.xyz/guides/authorize-endpoint.md): Prove you control a paid route by serving a one-line token from its origin, so Selo is allowed to test it. - [Run a preflight](https://docs.useselo.xyz/guides/preflight.md): Check for free that Selo can test your endpoint, and see every price, before anyone pays. - [Write a release contract](https://docs.useselo.xyz/guides/release-contract.md): Declare the status, content type and JSON Schema a paid response must satisfy, so Selo fails a release that breaks them. - [Run a release test](https://docs.useselo.xyz/guides/run-release-test.md): Pay Selo once from the CLI, let it pay your endpoint as a real x402 client, and turn the verdict into an exit code. - [Gate deploys in GitHub Actions](https://docs.useselo.xyz/guides/github-actions.md): Promote a commit to production only after Selo has paid the staged release and signed a PASS for that exact commit. - [Verify a signed verdict](https://docs.useselo.xyz/guides/verify-attestation.md): Check offline that Selo signed a verdict, and that it is for the release, URL and method you are about to ship. - [Recover an interrupted run](https://docs.useselo.xyz/guides/resume.md): Fetch the result of a paid run whose outcome you never saw, without paying a second time. - [Pay with any x402 client](https://docs.useselo.xyz/guides/any-x402-client.md): Run a Selo release test from your own code: authorize, preflight, then pay POST /v1/release-test with a standard x402 v2 payment on Algorand. - [Try it with the demo merchant](https://docs.useselo.xyz/guides/demo-merchant.md): Run Selo's demo x402 merchant on your own domain and reproduce a healthy release that Selo fails, then the fix it passes. - [The five release checks](https://docs.useselo.xyz/concepts/checks.md): What each release check proves, how Selo measures it, and every result code it can report. - [Verdicts and the gate](https://docs.useselo.xyz/concepts/verdicts.md): How Selo reduces five check results to PASS, FAIL or INCONCLUSIVE, and how the CLI turns that verdict into an exit code. - [Payments and spend limits](https://docs.useselo.xyz/concepts/payments.md): The two payment legs of a release test, why Selo is paid before it pays, and how the budget is enforced in the database. - [Authorization](https://docs.useselo.xyz/concepts/authorization.md): Why Selo tests only routes their owner has authorized, how the well-known file proof works, and what happens when an authorization lapses. - [Signed attestations](https://docs.useselo.xyz/concepts/attestations.md): The Ed25519-signed record of a release test: every payload field, the exact bytes Selo signs, and how to verify one with any Ed25519 library. - [Security model](https://docs.useselo.xyz/concepts/security.md): What Selo will connect to, how it keeps secrets out of evidence and logs, who can read a report, and what it stores. - [Held payments and reconciliation](https://docs.useselo.xyz/concepts/reconciliation.md): What an UNRESOLVED downstream payment is, why Selo holds it instead of guessing, and how the operator resolves it only on chain proof. - [Pricing and limits](https://docs.useselo.xyz/resources/pricing-and-limits.md): Every price, spend cap, time limit and size limit that applies to a Selo release test, in one place. - [Proof on Algorand Mainnet](https://docs.useselo.xyz/resources/mainnet-proof.md): The public record of Selo's release tests on Algorand Mainnet, with both payment legs, the verdicts and the evidence files. - [FAQ](https://docs.useselo.xyz/resources/faq.md): Short answers to the questions developers ask before they let Selo pay their x402 endpoint. - [Known limitations](https://docs.useselo.xyz/resources/limitations.md): What Selo does not do yet, stated plainly, and what to do about each gap. - [Changelog](https://docs.useselo.xyz/resources/changelog.md): What changed in Selo, newest first, from the commit history and the claims ledger. - [CLI overview](https://docs.useselo.xyz/cli/overview.md): Install the selo CLI from a checkout and learn its global behaviour, environment variables, exit codes and payment approval rules. - [selo auth](https://docs.useselo.xyz/cli/auth.md): Create, verify and inspect the authorization that lets Selo test one URL and method. - [selo preflight](https://docs.useselo.xyz/cli/preflight.md): Check for free that Selo can test your endpoint, and see every price, before anything is paid. - [selo test](https://docs.useselo.xyz/cli/test.md): Pay Selo once for a release test of your endpoint and turn the verdict into an exit code that gates the release. - [selo verify](https://docs.useselo.xyz/cli/verify.md): Verify a signed Selo attestation offline against keys you trust, for an exact release, URL and method. - [Output files](https://docs.useselo.xyz/cli/files.md): Every file the selo CLI writes: the run state, the selo.gate.v1 summary, the signed attestation and the GitHub job summary. - [GitHub Action reference](https://docs.useselo.xyz/cli/github-action.md): Every input, output and mode of the Selo release gate composite action, how it installs the CLI, and how to keep the payment wallet safe. - [API overview](https://docs.useselo.xyz/api-reference/introduction.md): Base URL, request rules, the call sequence, x402 payment, idempotency and the discovery files of the Selo API. - [Errors and reason codes](https://docs.useselo.xyz/api-reference/errors.md): Every error code the Selo API returns, with its HTTP status, and every reason code you can find in a preflight, a check or a verdict. - [Objects](https://docs.useselo.xyz/api-reference/objects.md): Field-by-field reference for the release test response, check results, the private report, signed attestations, attestation keys, authorizations and preflights. - [Create an authorization](https://docs.useselo.xyz/api-reference/authorizations/create-an-authorization.md): Start proving that you control a target. Selo returns a one-time token; serve it as a line in `/.well-known/selo-verification.txt`, then call the verify endpoint. The authorization covers exactly one origin, path and method. The challenge stays open for one hour. This call is free and contac… - [Verify an authorization](https://docs.useselo.xyz/api-reference/authorizations/verify-an-authorization.md): Selo fetches `/.well-known/selo-verification.txt` with `GET` (10 second timeout, at most 4096 bytes, redirects followed only within the same origin, at most 3) and looks for a line equal to `expectedContent`. On success the authorization becomes `VERIFIED` for 24 hours. Calling it again on a… - [Get an authorization](https://docs.useselo.xyz/api-reference/authorizations/get-an-authorization.md): Read the current state of an authorization. A `PENDING` or `VERIFIED` authorization past `expiresAt` is moved to `EXPIRED` by this read. - [Run a preflight](https://docs.useselo.xyz/api-reference/preflight/run-a-preflight.md): Check, for free, that a target can be tested before you pay. Selo checks the authorization, sends one unpaid request to the target (with `requestBody` for `POST`, 10 second timeout, redirects not followed), reads its x402 v2 challenge, and requires an `exact` USDC payment on Algorand priced at or be… - [Get a preflight](https://docs.useselo.xyz/api-reference/preflight/get-a-preflight.md): Read a stored preflight, eligible or not, with status 200. The response is not re-evaluated: compare `expiresAt` with the current time before paying. - [Run a release test](https://docs.useselo.xyz/api-reference/release-tests/run-a-release-test.md): Run a paid release test. This route is protected by x402 v2 and costs 1.00 USDC on Algorand Mainnet. - [Get a private report](https://docs.useselo.xyz/api-reference/reports/get-a-private-report.md): Read the full report of a finished release test. The token is the last path segment of `reportUrl`. The token is the only credential: anyone who has the link can read the report, so keep it out of logs and public CI output. Responses carry `noindex`, `no-store` and `no-referrer` headers. - [Get attestation keys](https://docs.useselo.xyz/api-reference/attestation-keys/get-attestation-keys.md): Public Ed25519 keys that verify the `attestation` on release test responses. Match `signature.keyId` to a key, then verify the signature over the canonical JSON of `payload`. Cacheable for 5 minutes. - [Get llms.txt](https://docs.useselo.xyz/api-reference/discovery/get-llmstxt.md): Plain-text description of Selo and its endpoints for language-model agents. - [Get the agent card](https://docs.useselo.xyz/api-reference/discovery/get-the-agent-card.md): Machine-readable card describing Selo and its `x402-release-test` skill. - [Check health](https://docs.useselo.xyz/api-reference/health/check-health.md): Liveness check. Returns 200 only when the API can query its database. ## OpenAPI Specs - [openapi](/openapi.json) ## Optional - [Website](https://useselo.xyz) - [GitHub](https://github.com/Enoch208/selo) - [Pilot guide](https://github.com/Enoch208/selo/blob/main/docs/PILOT_GUIDE.md) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.