> For the complete documentation index, see [llms.txt](https://docs.antivamp.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.antivamp.io/developers/api-reference.md).

# API Reference

The full AntiVamp Partner API endpoint list with methods and access, plus the machine-readable OpenAPI spec and interactive portal where deep schemas live.

> **This page is the map. The portal and OpenAPI spec are the territory — full request/response schemas live there.**

Every endpoint below lives under `https://antivamp.io/api/v1`. For complete field-level schemas, examples, and try-it, use the machine-readable sources.

{% hint style="info" %}
📡 View the machine-readable endpoint reference at [AntiVamp API](https://antivamp.io/api).
{% endhint %}

## Machine-readable spec

<table><thead><tr><th width="220">Source</th><th>URL</th></tr></thead><tbody><tr><td>🧭 <strong>Interactive portal</strong></td><td><a href="https://antivamp.io/api">https://antivamp.io/api</a></td></tr><tr><td>📄 <strong>OpenAPI (raw JSON)</strong></td><td><a href="https://antivamp.io/api/v1/openapi">https://antivamp.io/api/v1/openapi</a></td></tr></tbody></table>

The spec is **OpenAPI 3.1.0**, titled *AntiVamp Partner API*. Generate clients or types from it directly:

```bash
curl https://antivamp.io/api/v1/openapi -o antivamp.openapi.json
```

{% hint style="success" %}
✅ Prefer the first-party [`@antivamp_io/sdk`](/developers/sdk.md) for Node — it verifies signatures and fails closed for you. Generate a client from the OpenAPI spec only when you're on a non-Node stack.
{% endhint %}

## Access legend

* **Public** — no key required.
* **Partner** — `Authorization: Bearer <key>`; some require a scope or (in production) the `X-AntiVamp-Keeper` header.

***

## 🧬 Identity

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="90">Access</th></tr></thead><tbody><tr><td>GET / POST</td><td><code>/v1/identity/check</code></td><td>Check availability + status for a normalized name + ticker</td><td>Public · key optional</td></tr><tr><td>GET</td><td><code>/v1/identity/status?key=</code></td><td>Look up status by identity key</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/protected-identities</code></td><td>List protected identities (<code>q,chain,status,cursor,limit≤50</code>). <strong>Production data only.</strong> <code>status</code> defaults to <code>active</code> (= <code>reserved|protected|blocked</code>); pass <code>status=all</code> to include expired/launched rows.</td><td>Public</td></tr></tbody></table>

## ✅ Validation

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="150">Access</th></tr></thead><tbody><tr><td>POST</td><td><code>/v1/launches/validate</code></td><td>Return a signed <code>allow</code>/<code>block</code>/… decision</td><td>Partner · <code>launch:validate</code></td></tr></tbody></table>

## 📣 Reporting

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="150">Access</th></tr></thead><tbody><tr><td>POST</td><td><code>/v1/launches/report</code></td><td>Record a launch + token/mint (no lock)</td><td>Partner · <code>launch:report</code></td></tr><tr><td>POST</td><td><code>/v1/events/bonded</code></td><td>Report the ~$69k bond goal (time-limited lock)</td><td>Partner · <code>event:report</code> · prod keeper</td></tr><tr><td>POST</td><td><code>/v1/events/milestone</code></td><td>Report the ~$1M milestone (extended lock)</td><td>Partner · <code>event:report</code> · prod keeper</td></tr></tbody></table>

## 🔒 Reservations

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="150">Access</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/reservations?wallet=</code></td><td>List reservations for a wallet. <code>wallet</code> is <strong>required</strong> (400 <code>wallet_required</code>) and must be plain alphanumeric 3–64 chars — wildcards rejected (400 <code>invalid_wallet</code>). EVM matches case-insensitively; Solana is exact. Production data only. Returns <code>{ adapter, scope, wallet, summary, records[] }</code>.</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/reservations/quote</code></td><td>Price a reservation</td><td>Partner · <code>reservation:prepare</code></td></tr><tr><td>POST</td><td><code>/v1/reservations/prepare</code></td><td>Return a creator-signable on-chain tx + immutable <code>revenueShare</code> snapshot (attribution from API key; no JSON hold). Sandbox prepares are always <code>simulated:true</code> and must be settled with <code>sandbox-confirm</code>.</td><td>Partner · <code>reservation:prepare</code></td></tr><tr><td>POST</td><td><code>/v1/embed/reservations/prepare</code></td><td>Hosted embed prepare — attribution from allowlisted <code>launchpad</code> (no browser API key). Creates pending prepare + ledger draft only.</td><td>Public embed</td></tr><tr><td>POST</td><td><code>/v1/embed/reservations/settle</code></td><td>Hosted embed settle after on-chain confirm — accrues partner ledger and stamps launchpad on the identity index.</td><td>Public embed</td></tr><tr><td>POST</td><td><code>/v1/reservations/sandbox-confirm</code></td><td>Force-confirm a <code>simulated</code> prepare with no on-chain payment; seeds sandbox protection and accrues the partner ledger draft</td><td>Partner · sandbox · <code>reservation:prepare</code></td></tr><tr><td>GET / POST</td><td><code>/v1/reservations/status</code></td><td>Read reservation status</td><td>Partner · <code>reservation:prepare</code></td></tr><tr><td>POST</td><td><code>/v1/reservations</code></td><td>Sandbox-only lifecycle seeding (requires <code>durationSeconds</code>)</td><td>Partner · sandbox · <code>reservation:prepare</code></td></tr></tbody></table>

## 💰 Partner revenue

Commercial terms, the 60% partner / 40% AntiVamp split, the earnings ledger, and payout rules are documented in [Partner Program & Revenue Sharing](/for-launchpads/partner-program.md).

<table><thead><tr><th width="110">Method</th><th width="320">Path</th><th>Purpose</th><th width="150">Access</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/partner/profile</code></td><td>Split (40/60 protocol/partner bps — partners earn 60%), payout wallets, routing</td><td>Partner · <code>partner:revenue</code></td></tr><tr><td>GET</td><td><code>/v1/partner/revenue</code></td><td>Accrued ledger (on-chain confirmation only; payouts gated off)</td><td>Partner · <code>partner:revenue</code></td></tr><tr><td>POST</td><td><code>/v1/partner/payout-wallets/verify/challenge</code></td><td>Start Solana/EVM ownership challenge</td><td>Partner · <code>partner:payout</code></td></tr><tr><td>POST</td><td><code>/v1/partner/payout-wallets/verify</code></td><td>Complete wallet verification</td><td>Partner · <code>partner:payout</code></td></tr><tr><td>POST</td><td><code>/v1/partner/payout-wallets/rotate</code></td><td>Archive verified wallet + challenge a new address</td><td>Partner · <code>partner:payout</code></td></tr><tr><td>GET</td><td><code>/v1/partner/reservations</code></td><td>Attributed reservations + ledger status</td><td>Partner · <code>partner:revenue</code></td></tr><tr><td>POST</td><td><code>/v1/partner/reservations/sync</code></td><td>Reconcile pending prepares on-chain, then return list</td><td>Partner · <code>partner:revenue</code></td></tr><tr><td>GET</td><td><code>/v1/partner/payout-batches</code></td><td>Daily 24h payout plans / queues / paid (read-only)</td><td>Partner · <code>partner:revenue</code></td></tr><tr><td>GET</td><td><code>/v1/partner/revenue/reconcile</code></td><td>Soft prepare↔ledger consistency check</td><td>Partner · <code>partner:revenue</code></td></tr></tbody></table>

## ✍️ Signed Decisions

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="90">Access</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/keys</code></td><td>Public Ed25519 keys (<code>?environment=sandbox|production</code>)</td><td>Public</td></tr><tr><td>POST</td><td><code>/v1/decisions/verify</code></td><td>Verify a posted signed decision</td><td>Public</td></tr></tbody></table>

## 🔔 Webhooks

<table><thead><tr><th width="110">Method</th><th width="290">Path</th><th>Purpose</th><th width="90">Access</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/webhooks</code></td><td>List webhook endpoints</td><td>Partner</td></tr><tr><td>POST</td><td><code>/v1/webhooks</code></td><td>Register an HTTPS endpoint (secret shown once; private IPs rejected)</td><td>Partner</td></tr><tr><td>PATCH</td><td><code>/v1/webhooks/{id}</code></td><td>Update / rotate secret</td><td>Partner</td></tr><tr><td>DELETE</td><td><code>/v1/webhooks/{id}</code></td><td>Delete an endpoint (404 <code>webhook_not_found</code> if the id belongs to another partner)</td><td>Partner</td></tr><tr><td>GET</td><td><code>/v1/webhooks/deliveries</code></td><td>List delivery history</td><td>Partner</td></tr><tr><td>POST</td><td><code>/v1/webhooks/deliveries/{id}/replay</code></td><td>Replay a failed delivery</td><td>Partner</td></tr><tr><td>POST</td><td><code>/v1/webhooks/test</code></td><td>Send a signed test event</td><td>Partner</td></tr></tbody></table>

## 🧪 Sandbox

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="110">Access</th></tr></thead><tbody><tr><td>POST</td><td><code>/v1/sandbox/keys</code></td><td>Self-serve sandbox key (key + secret shown once)</td><td>Public</td></tr><tr><td>POST</td><td><code>/v1/sandbox/keys</code> + <code>X-Antivamp-Rotate: 1</code></td><td>Safe sandbox rotate (same <code>partner_id</code>, rebind stores, revoke old; email must match + be verified)</td><td>Partner · sandbox</td></tr><tr><td>GET</td><td><code>/v1/sandbox/keys</code></td><td>Introspect the calling key (usage + limits + <code>emailVerified</code>)</td><td>Partner</td></tr><tr><td>DELETE</td><td><code>/v1/sandbox/keys</code></td><td>Revoke the calling key</td><td>Partner</td></tr><tr><td>GET</td><td><code>/v1/sandbox/logs</code></td><td>Recent request logs</td><td>Partner</td></tr><tr><td>GET</td><td><code>/v1/sandbox/usage</code></td><td>Usage metrics</td><td>Partner</td></tr></tbody></table>

{% hint style="info" %}
🔐 Production API-key rotation is operator-only — see [Keys, Email Verification & Rotation](/for-launchpads/keys-and-email.md).
{% endhint %}

## ⛓️ Chains & Health

<table><thead><tr><th width="110">Method</th><th width="260">Path</th><th>Purpose</th><th width="90">Access</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/chains</code></td><td>Live per-chain status + health</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/health</code></td><td>Service health</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/solana/quote</code></td><td>Solana reservation price quote</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/solana/reserve-context</code></td><td>On-chain context for a reserve tx</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/solana/blockhash</code></td><td>Recent Solana blockhash</td><td>Public</td></tr><tr><td>GET</td><td><code>/v1/solana/tx-status</code></td><td>Solana transaction status</td><td>Public</td></tr></tbody></table>

## ⚖️ Disputes & Partner Access

<table><thead><tr><th width="110">Method</th><th width="290">Path</th><th>Purpose</th><th width="90">Access</th></tr></thead><tbody><tr><td>GET</td><td><code>/v1/disputes</code></td><td>List disputes</td><td>Public</td></tr><tr><td>POST</td><td><code>/v1/disputes</code></td><td>File a dispute (EVM claimants sign a wallet proof)</td><td>Public</td></tr><tr><td>POST</td><td><code>/v1/partners/request</code></td><td>Request partner access</td><td>Public</td></tr><tr><td>POST</td><td><code>/v1/partners/production-request</code></td><td>Request production access</td><td>Partner</td></tr><tr><td>POST</td><td><code>/v1/partners/verify-email</code></td><td>Consume a one-time email verification token</td><td>Public</td></tr></tbody></table>

{% hint style="warning" %}
⚠️ Internal admin routes under `/api/internal/*` are not part of the public API and are not documented here.
{% endhint %}

***

## Continue exploring

* 📡 [API Overview](/developers/api-overview.md) — the same endpoints grouped by task, with guides
* 📦 [SDK Reference](/developers/sdk.md) — the typed client for these endpoints
* 🔑 [Authentication](/developers/authentication.md) — keys, scopes, and idempotency
* ❌ [Errors](/developers/errors.md) — the canonical error model
* 🚦 [Rate Limits](/developers/rate-limits.md) — per-key limits and backoff


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.antivamp.io/developers/api-reference.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
