# Anis Partner API > Integrate with Anis: guides, API reference and error pages for the Anis Partner API. Before writing code against this API, read the rules for AI assistants: https://developers.anis.ly/agents/anis-partners/SKILL.md — they hold what costs money when broken, above all how to retry an order without buying twice. Use an Anis SDK where one exists (.NET today). Signing by hand must follow https://developers.anis.ly/docs/signing-requests.md byte for byte and pass the published test vectors. Every page here also exists as Markdown: add `.md` to its address (`/docs/overview/` → `/docs/overview.md`). All of it in one file: https://developers.anis.ly/llms-full.txt. The site also has Arabic pages for people (under /ar); every file for AI models, this one included, is in English. ## Getting started - [Overview](https://developers.anis.ly/docs/overview.md): How the Anis Partner API works — your application, its keys, signed calls, verified answers and safe orders. - [Enrol a key](https://developers.anis.ly/docs/enrol-a-key.md): Turn an Anis invitation into an active signing key — the steps, the proof, the time limits and what to do when something goes wrong. - [Your first call](https://developers.anis.ly/docs/first-call.md): Register the client, read your profile, and check your signature when something does not verify. - [Build with an AI assistant](https://developers.anis.ly/docs/ai-assistants.md): Give your AI coding assistant the files it needs, so the code it writes follows the rules that protect your money. ## Guides - [Signing requests](https://developers.anis.ly/docs/signing-requests.md): The exact rules for signing an Anis Partner request with HTTP Message Signatures — profiles, components, the signature base and the traps. - [Verifying answers](https://developers.anis.ly/docs/verifying-answers.md): How a client checks that an answer really came from Anis — and why it must throw away any answer it cannot check. - [Signing test vectors](https://developers.anis.ly/docs/test-vectors.md): Exact requests, answers and signatures to test a client you write yourself — before it ever calls Anis. - [Orders and recovery](https://developers.anis.ly/docs/orders-and-recovery.md): Placing an order safely, the answers it can get, and how to recover when you do not know whether it went through. - [Errors and limits](https://developers.anis.ly/docs/errors-and-limits.md): What every refusal carries, how to branch on it, and the limits that can apply to your application. - [Routes and permissions](https://developers.anis.ly/docs/routes-and-permissions.md): Every call, the permission it needs, how it is authenticated and which limits it counts toward. - [Security](https://developers.anis.ly/docs/security.md): Keeping your key safe, why every answer is verified, key replacement and revocation, card codes and your clock. - [Observability](https://developers.anis.ly/docs/observability.md): What to record, what to alert on, and how to trace one purchase across your system and Anis. ## Reference - [API reference](https://developers.anis.ly/reference.md): Every route of the Anis Partner API: what it does, what it needs and what it returns. - [Error codes](https://developers.anis.ly/errors.md): Every refusal the Anis Partner API can return, what it means and what to do. - [Changelog](https://developers.anis.ly/changelog.md): What changed in the Anis Partner API, the SDKs and this website. ## SDKs - [.NET (C#)](https://developers.anis.ly/sdks/dotnet.md): The Anis Partner SDK for .NET 8 and .NET 10 — install, register, call, handle refusals and observe. ## Files for tools - [Rules for AI assistants](https://developers.anis.ly/agents/anis-partners/SKILL.md): what an assistant must never get wrong with this API; add it to your assistant - [OpenAPI description](https://developers.anis.ly/openapi.json): every call, field and answer; it cannot express signing - [Error codes as data](https://developers.anis.ly/errors.json): for each code: send again unchanged? was the order placed? what to do - [Signing test vectors](https://developers.anis.ly/vectors/index.json): exact requests, answers and signatures to test a hand-written client against ## Every API call - [Read your profile](https://developers.anis.ly/reference/read-profile.md): Your application’s identity, the Anis business account it acts for, and the permissions its current policy grants. - [List wallets](https://developers.anis.ly/reference/list-wallets.md): The wallets your application may use, with their balances. - [Read a wallet](https://developers.anis.ly/reference/read-wallet.md): One wallet and its balance. - [List catalogue categories](https://developers.anis.ly/reference/list-categories.md): The top level of the catalogue, as this wallet sees it. - [List subcategories of a category](https://developers.anis.ly/reference/list-subcategories.md): The subcategories under one category. - [Read a subcategory](https://developers.anis.ly/reference/read-subcategory.md): One subcategory. - [List cards for sale](https://developers.anis.ly/reference/list-cards.md): The cards of a subcategory that this wallet can buy, with the price this wallet pays. - [Place an order](https://developers.anis.ly/reference/create-order.md): Buys cards from a wallet, under an operation id you choose and keep. - [Read an order](https://developers.anis.ly/reference/read-order.md): Where an order stands. - [List owned cards](https://developers.anis.ly/reference/list-owned-cards.md): The cards a wallet has bought, with their codes hidden. - [Read an owned card](https://developers.anis.ly/reference/read-owned-card.md): One bought card, with its codes hidden. - [Reveal a card](https://developers.anis.ly/reference/reveal-card.md): Shows one bought card’s codes. - [Reveal an invoice](https://developers.anis.ly/reference/reveal-invoice.md): Shows the codes of every card on an invoice — all of them or none, up to 100. - [Check your signature](https://developers.anis.ly/reference/check-signature.md): The signature self-check: runs your call through Anis’s full checks and reports exactly what Anis saw — the method, address, path and query it signed over, the key it found and the permissions in force. - [Read an invitation](https://developers.anis.ly/reference/read-invitation.md): The invitation’s state and when it expires. - [Submit a public key](https://developers.anis.ly/reference/submit-key.md): Sends the PUBLIC half of a new P-256 key, and receives the challenge to prove you hold the private half. - [Prove you hold the key](https://developers.anis.ly/reference/submit-proof.md): Sends the proof of possession. - [Read enrolment status](https://developers.anis.ly/reference/read-enrollment-status.md): Where the key stands: waiting for proof, waiting for Anis staff, active, or no longer available. - [Anis’s public signing keys](https://developers.anis.ly/reference/signing-keys.md): Every public key that may sign Anis’s answers — including the next one before a rotation and the previous one after it. ## Every error code - [invalid_credentials — Invalid credentials](https://developers.anis.ly/errors/invalid-credentials.md) - [signature_expired — Signature expired](https://developers.anis.ly/errors/signature-expired.md) - [invalid_content_digest — Invalid content digest](https://developers.anis.ly/errors/invalid-content-digest.md) - [replay_detected — Replay detected](https://developers.anis.ly/errors/replay-detected.md) - [source_ip_not_allowed — Source address not allowed](https://developers.anis.ly/errors/source-ip-not-allowed.md) - [insufficient_scope — Insufficient scope](https://developers.anis.ly/errors/insufficient-scope.md) - [binding_not_authorized — Account not authorised](https://developers.anis.ly/errors/binding-not-authorized.md) - [resource_not_found — Not found](https://developers.anis.ly/errors/resource-not-found.md) - [card_not_found — Card not found](https://developers.anis.ly/errors/card-not-found.md) - [wallet_not_granted — Wallet not granted](https://developers.anis.ly/errors/wallet-not-granted.md) - [validation_failed — Validation failed](https://developers.anis.ly/errors/validation-failed.md) - [idempotency_conflict — Operation id already used](https://developers.anis.ly/errors/idempotency-conflict.md) - [operation_processing — Order still processing](https://developers.anis.ly/errors/operation-processing.md) - [allowed_debt_consent_required — Allowed-debt consent required](https://developers.anis.ly/errors/allowed-debt-consent-required.md) - [insufficient_balance — Insufficient balance](https://developers.anis.ly/errors/insufficient-balance.md) - [purchase_not_allowed — Purchase not allowed](https://developers.anis.ly/errors/purchase-not-allowed.md) - [purchase_not_allowed — Order refused](https://developers.anis.ly/errors/order-refused.md) - [owner_limit_exceeded — Spending allowance used up](https://developers.anis.ly/errors/owner-limit-exceeded.md) - [daily_limit_exceeded — Daily limit reached](https://developers.anis.ly/errors/daily-limit-exceeded.md) - [rate_limited — Rate limited](https://developers.anis.ly/errors/rate-limited.md) - [wallet_disabled — Wallet disabled](https://developers.anis.ly/errors/wallet-disabled.md) - [wallet_expired — Wallet expired](https://developers.anis.ly/errors/wallet-expired.md) - [business_subscription_required — Business subscription required](https://developers.anis.ly/errors/business-subscription-required.md) - [account_inactive — Account inactive](https://developers.anis.ly/errors/account-inactive.md) - [currency_not_supported — Currency not supported](https://developers.anis.ly/errors/currency-not-supported.md) - [card_unavailable — Card unavailable](https://developers.anis.ly/errors/card-unavailable.md) - [quantity_unavailable — Quantity unavailable](https://developers.anis.ly/errors/quantity-unavailable.md) - [price_changed — Price changed](https://developers.anis.ly/errors/price-changed.md) - [reveal_not_allowed — Reveal not allowed](https://developers.anis.ly/errors/reveal-not-allowed.md) - [invoice_reveal_limit_exceeded — Invoice too large to reveal](https://developers.anis.ly/errors/invoice-reveal-limit-exceeded.md) - [invitation_invalid — Invitation invalid](https://developers.anis.ly/errors/invitation-invalid.md) - [challenge_expired — Challenge replaced](https://developers.anis.ly/errors/challenge-expired.md) - [key_proof_invalid — Public key invalid](https://developers.anis.ly/errors/key-proof-invalid.md) - [key_duplicate — Invitation already used](https://developers.anis.ly/errors/key-duplicate.md) - [dependency_unavailable — Service unavailable](https://developers.anis.ly/errors/dependency-unavailable.md) - [request_timeout — Request timeout](https://developers.anis.ly/errors/request-timeout.md) - [internal_error — Internal error](https://developers.anis.ly/errors/internal-error.md)