> ## Documentation Index
> Fetch the complete documentation index at: https://blank.build/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAPI Reference

> The generated OpenAPI 3.1.1 description of Blank API v2, and how to use it for codegen and validation.

# OpenAPI Reference

Blank API v2 is described by a single OpenAPI 3.1.1 document. Every page under this section is generated from it, so the request and response schemas you see here are the schemas the API actually enforces.

|                  |                                                                               |
| ---------------- | ----------------------------------------------------------------------------- |
| Specification    | OpenAPI 3.1.1                                                                 |
| Title / version  | Blank API, `2.0.0`                                                            |
| Server           | `https://api.blank.build/api/v2`                                              |
| Operations       | 34, plus one outbound webhook                                                 |
| Security scheme  | `BlankApiKey` — HTTP bearer, `blank_live_…` or `blank_test_…`                 |
| Error media type | `application/problem+json`                                                    |
| Download         | [blank-api-v2.yaml](https://blank.build/docs/api-reference/blank-api-v2.yaml) |

## How it is produced

Zod schemas and route metadata in Blank's API contract package are the single source of truth. Runtime validation, this OpenAPI document, the SDK's types, and its response validation are all generated from that one registry, and CI rejects any drift between them.

That means:

* An operation documented here exists at runtime with exactly this shape.
* A field absent here is absent from the API.
* Request schemas are **strict** — an unexpected property is a `422 validation_failed`, not a silently ignored field.

## Using the specification

Generate a client for a language the SDK does not cover:

```bash theme={null}
curl -sO https://blank.build/docs/api-reference/blank-api-v2.yaml
openapi-generator-cli generate -i blank-api-v2.yaml -g python -o ./blank-client
```

Other things it is good for: contract-testing your integration, driving a mock server in CI, and diffing releases to spot contract changes before they reach production.

<Note>
  If you are writing TypeScript, use
  [`@blankdotbuild/sdk`](/docs/for-developers/quickstart) instead of a generated
  client. It adds runtime response validation, bounded retries, durable
  idempotency keys, typed Problem Details errors, pagination helpers, and
  webhook signature verification on top of the same contract.
</Note>

## Operations by tag

| Tag                 | Operations                                                                                                                                                                                       |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| System              | `getSolanaManifest`                                                                                                                                                                              |
| Identity            | `getApiIdentity`                                                                                                                                                                                 |
| Tokens              | `listTokens`, `getToken`                                                                                                                                                                         |
| Market data         | `getTokenMarketSnapshot`, `listTokenCandles`, `listTokenTrades`, `getTokenHolderStats`                                                                                                           |
| Staking             | `getStakingPool`, `listStakingLeaderboard`, `listOwnedStakingPositions`                                                                                                                          |
| Fees                | `getTokenFeeState`, `listTokenFeeDistributions`                                                                                                                                                  |
| Presales            | `listPresales`, `getPresale`, `getPresaleParticipation`                                                                                                                                          |
| Predictions         | `listPredictionRounds`, `getPredictionRound`, `listRoundPredictions`, `listPredictionStandings`, `getPredictionEligibility`, `getOwnedPrediction`, `createPrediction`                            |
| Operations          | `getOperation`                                                                                                                                                                                   |
| Transaction intents | `getTransactionIntent`, `submitTransactionIntent`                                                                                                                                                |
| Webhooks            | `createWebhookEndpoint`, `listWebhookEndpoints`, `getWebhookEndpoint`, `updateWebhookEndpoint`, `deleteWebhookEndpoint`, `rotateWebhookSecret`, `listWebhookDeliveries`, `replayWebhookDelivery` |

The document also declares `receiveBlankWebhookEvent`, the signed CloudEvent that Blank sends **to** your endpoint. See [Webhooks](/docs/for-developers/webhooks).

For a compact index with scopes and rate policies, see the [HTTP reference](/docs/reference/http-reference).

## Trying operations from this reference

<Warning>
  Do not paste a production API key into a browser-based request panel. Keys are
  server-side credentials, and pasting one into any browser page risks leaking
  it through history, extensions, or shared screens. Use a `blank_test_` key
  against a non-production deployment, or run the equivalent `curl` from a
  server shell.
</Warning>
