> ## 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.

# HTTP Reference

> Every Blank API v2 operation: method, path, operation ID, required scope, rate policy, and success status.

# HTTP Reference

The complete public contract is 36 operations under one origin:

```
https://api.blank.build/api/v2
```

Paths in the tables below are relative to that origin. Every operation ID matches the [OpenAPI reference](/docs/api-reference/introduction), where you can also see full request and response schemas.

Anything outside `/api/v2` is an internal Blank plane with no stability contract. There is no v1 contract and no unversioned alias.

## Reading the tables

* **Auth** — `Anonymous` needs no credential. `Any key` needs a valid key but no scope. Anything else is the exact scope set required; a key must carry **all** of them.
* **Rate policy** — the value reported in `X-RateLimit-Policy`. Limits are environment configuration; read the rate-limit headers rather than hardcoding numbers.
* **Idempotent** — `Yes` means the operation is a mutation and **requires** an `Idempotency-Key` header.
* Operations marked with `If-Match` additionally require the resource's current `version` as a strong ETag.

See [Conventions](/docs/for-developers/conventions) for pagination, headers, retries, and concurrency, and [Errors](/docs/reference/errors) for the Problem Details envelope.

## System

| Method | Path               | Operation ID        | Auth      | Rate policy         | Success |
| ------ | ------------------ | ------------------- | --------- | ------------------- | ------- |
| `GET`  | `/solana/manifest` | `getSolanaManifest` | Anonymous | `public-read-cheap` | 200     |

## Identity

| Method | Path  | Operation ID     | Auth    | Rate policy    | Success |
| ------ | ----- | ---------------- | ------- | -------------- | ------- |
| `GET`  | `/me` | `getApiIdentity` | Any key | `api-key-read` | 200     |

## Tokens

| Method | Path             | Operation ID | Auth      | Rate policy         | Success |
| ------ | ---------------- | ------------ | --------- | ------------------- | ------- |
| `GET`  | `/tokens`        | `listTokens` | Anonymous | `public-read-cheap` | 200     |
| `GET`  | `/tokens/{mint}` | `getToken`   | Anonymous | `public-read-cheap` | 200     |

Query for `listTokens`: `cursor`, `limit` (1–100, default 50), `status`, `launchType`. See [Tokens and market data](/docs/for-developers/market-data).

## Market data

| Method | Path                     | Operation ID             | Auth      | Rate policy             | Success |
| ------ | ------------------------ | ------------------------ | --------- | ----------------------- | ------- |
| `GET`  | `/tokens/{mint}/market`  | `getTokenMarketSnapshot` | Anonymous | `public-read-cheap`     | 200     |
| `GET`  | `/tokens/{mint}/candles` | `listTokenCandles`       | Anonymous | `public-read-expensive` | 200     |
| `GET`  | `/tokens/{mint}/trades`  | `listTokenTrades`        | Anonymous | `public-read-cheap`     | 200     |
| `GET`  | `/tokens/{mint}/holders` | `getTokenHolderStats`    | Anonymous | `public-read-cheap`     | 200     |

`listTokenCandles` requires `from`, `to`, and `interval` (`1m`, `5m`, `15m`, `1h`, `4h`, `1d`) and returns at most 1,000 points.

## Staking

| Method | Path                                 | Operation ID                | Auth           | Rate policy             | Success |
| ------ | ------------------------------------ | --------------------------- | -------------- | ----------------------- | ------- |
| `GET`  | `/tokens/{mint}/staking`             | `getStakingPool`            | Anonymous      | `public-read-cheap`     | 200     |
| `GET`  | `/tokens/{mint}/staking/leaderboard` | `listStakingLeaderboard`    | Anonymous      | `public-read-expensive` | 200     |
| `GET`  | `/tokens/{mint}/staking/positions`   | `listOwnedStakingPositions` | `staking:read` | `api-key-read`          | 200     |

See [Staking](/docs/for-developers/developer-staking).

## Fees

| Method | Path                               | Operation ID                | Auth        | Rate policy    | Success |
| ------ | ---------------------------------- | --------------------------- | ----------- | -------------- | ------- |
| `GET`  | `/tokens/{mint}/fees`              | `getTokenFeeState`          | `fees:read` | `api-key-read` | 200     |
| `GET`  | `/tokens/{mint}/fee-distributions` | `listTokenFeeDistributions` | `fees:read` | `api-key-read` | 200     |

See [Fees](/docs/for-developers/fee-status).

## Presales

| Method | Path                           | Operation ID              | Auth            | Rate policy         | Success |
| ------ | ------------------------------ | ------------------------- | --------------- | ------------------- | ------- |
| `GET`  | `/presales`                    | `listPresales`            | Anonymous       | `public-read-cheap` | 200     |
| `GET`  | `/presales/{id}`               | `getPresale`              | Anonymous       | `public-read-cheap` | 200     |
| `GET`  | `/presales/{id}/participation` | `getPresaleParticipation` | `presales:read` | `api-key-read`      | 200     |

See [Presales](/docs/for-developers/presales).

## Predictions

| Method | Path                                                     | Operation ID               | Auth                | Rate policy             | Idempotent | Success |
| ------ | -------------------------------------------------------- | -------------------------- | ------------------- | ----------------------- | ---------- | ------- |
| `GET`  | `/tokens/{mint}/prediction-rounds`                       | `listPredictionRounds`     | Anonymous           | `public-read-cheap`     | —          | 200     |
| `GET`  | `/tokens/{mint}/prediction-rounds/{roundId}`             | `getPredictionRound`       | Anonymous           | `public-read-cheap`     | —          | 200     |
| `GET`  | `/tokens/{mint}/prediction-rounds/{roundId}/predictions` | `listRoundPredictions`     | Anonymous           | `public-read-expensive` | —          | 200     |
| `GET`  | `/tokens/{mint}/prediction-rounds/{roundId}/standings`   | `listPredictionStandings`  | Anonymous           | `public-read-expensive` | —          | 200     |
| `GET`  | `/tokens/{mint}/prediction-rounds/{roundId}/eligibility` | `getPredictionEligibility` | `predictions:read`  | `api-key-read`          | —          | 200     |
| `GET`  | `/predictions/{predictionId}`                            | `getOwnedPrediction`       | `predictions:read`  | `api-key-read`          | —          | 200     |
| `POST` | `/predictions`                                           | `createPrediction`         | `predictions:write` | `prediction-submit`     | Yes        | 201     |

See [Price predictions](/docs/for-developers/predictions).

## Operations

| Method | Path                        | Operation ID   | Auth              | Rate policy      | Success |
| ------ | --------------------------- | -------------- | ----------------- | ---------------- | ------- |
| `GET`  | `/operations/{operationId}` | `getOperation` | `operations:read` | `operation-read` | 200     |

## Transaction intents

| Method | Path                                          | Operation ID              | Auth                 | Rate policy          | Idempotent       | Success |
| ------ | --------------------------------------------- | ------------------------- | -------------------- | -------------------- | ---------------- | ------- |
| `GET`  | `/transaction-intents/{intentId}`             | `getTransactionIntent`    | `operations:read`    | `operation-read`     | —                | 200     |
| `POST` | `/transaction-intents/{intentId}/submissions` | `submitTransactionIntent` | `transactions:write` | `transaction-submit` | Yes + `If-Match` | 202     |

See [Operations and transaction intents](/docs/for-developers/operations).

## Webhooks

| Method   | Path                                               | Operation ID            | Auth             | Rate policy     | Idempotent       | Success |
| -------- | -------------------------------------------------- | ----------------------- | ---------------- | --------------- | ---------------- | ------- |
| `POST`   | `/webhook-endpoints`                               | `createWebhookEndpoint` | `webhooks:write` | `webhook-admin` | Yes              | 201     |
| `GET`    | `/webhook-endpoints`                               | `listWebhookEndpoints`  | `webhooks:read`  | `api-key-read`  | —                | 200     |
| `GET`    | `/webhook-endpoints/{endpointId}`                  | `getWebhookEndpoint`    | `webhooks:read`  | `api-key-read`  | —                | 200     |
| `PATCH`  | `/webhook-endpoints/{endpointId}`                  | `updateWebhookEndpoint` | `webhooks:write` | `webhook-admin` | Yes + `If-Match` | 200     |
| `DELETE` | `/webhook-endpoints/{endpointId}`                  | `deleteWebhookEndpoint` | `webhooks:write` | `webhook-admin` | Yes + `If-Match` | 200     |
| `POST`   | `/webhook-endpoints/{endpointId}/secret-rotations` | `rotateWebhookSecret`   | `webhooks:write` | `webhook-admin` | Yes + `If-Match` | 201     |
| `GET`    | `/webhook-endpoints/{endpointId}/deliveries`       | `listWebhookDeliveries` | `webhooks:read`  | `api-key-read`  | —                | 200     |
| `POST`   | `/webhook-deliveries/{deliveryId}/replays`         | `replayWebhookDelivery` | `webhooks:write` | `webhook-admin` | Yes              | 202     |

Blank also **sends** one request to you: the signed CloudEvent delivery, documented in the OpenAPI spec as the `receiveBlankWebhookEvent` webhook. See [Webhooks](/docs/for-developers/webhooks).

## Worked examples

Anonymous read with a conditional request:

```bash theme={null}
curl -s "https://api.blank.build/api/v2/tokens?status=bonding&limit=20" \
  -H "Accept: application/json" \
  -H 'If-None-Match: "aG9sZGVy..."' -i
```

Authenticated read from a server shell:

```bash theme={null}
curl -s "https://api.blank.build/api/v2/me" \
  -H "Authorization: Bearer $BLANK_API_KEY"
```

Mutation with durable idempotency:

```bash theme={null}
curl -s -X POST "https://api.blank.build/api/v2/predictions" \
  -H "Authorization: Bearer $BLANK_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: prediction-2026-08-10-round-17" \
  -d '{
    "roundId": "24c85940-7968-4b71-92dd-0d8f017cea5a",
    "walletAddress": "11111111111111111111111111111111",
    "predictedPriceInSol": "0.00042"
  }'
```

<Warning>
  Never run an authenticated example in a browser or embed a key in client-side
  code. Authenticated operations receive no browser CORS allowance.
</Warning>
