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

# HTTP API overview

The vAPI Network HTTP API provides public Call discovery reads and bearer-authenticated listing management at launch.

{% hint style="info" %}
Call is launching. The console does not serve Call yet; this page describes the launch flow.
{% endhint %}

{% hint style="info" %}
vAPI Router, Stake and Agents are coming soon. This page describes how they work at launch.
{% endhint %}

The vAPI HTTP API gives you public discovery and catalogue reads for Call listings, plus a bearer-authenticated API for publishing and managing your own listings. Use it when you need direct HTTP access instead of the CLI, SDK, or MCP server.

## Base URL

Use this base URL for the API:

```
https://api.vapinetwork.ai
```

Public read endpoints do not need authentication. They are rate-limited. Listing writes and the machine listing API use a bearer credential.

To create an API key, open the [API keys page](https://api.vapinetwork.ai/connect?advanced=keys#api-keys) in the vAPI console. Send the key in the standard `Authorization` header:

```http
Authorization: Bearer vapi_...
```

An OAuth access token is also accepted where the API specifies bearer auth. API keys have no scopes today. Treat an active key as full authority over its profile's listings.

## Content types

Most successful API responses use JSON. Errors use either JSON or plain text as documented by each endpoint. Send JSON request bodies with `Content-Type: application/json` and ask for JSON with `Accept: application/json`.

These successful responses use a content type other than `application/json`:

| Endpoint                       | Content type               |
| ------------------------------ | -------------------------- |
| `GET /call/feed.xml`           | `application/atom+xml`     |
| `GET /.well-known/api-catalog` | `application/linkset+json` |
| `GET /api/supply/total`        | Plain-text decimal number  |
| `GET /api/supply/circulating`  | Plain-text decimal number  |

## Errors and status codes

The documented routes use these statuses for the cases described in the API contract:

| Status | Meaning in the documented routes                                                                                |
| ------ | --------------------------------------------------------------------------------------------------------------- |
| `201`  | A listing was created as a draft.                                                                               |
| `202`  | A listing recheck was accepted.                                                                                 |
| `401`  | Bearer authentication or a signature is invalid.                                                                |
| `403`  | A claim signer is not the payout wallet.                                                                        |
| `404`  | A listing or catalogue entry is not found, unpublished, or not owned by the credential.                         |
| `409`  | A state change is invalid, a slug collides, a claim is already owned, or a mirrored listing cannot be resynced. |
| `422`  | A publish or status request has no usable x402 challenge.                                                       |
| `429`  | A protection or recheck rate limit was reached.                                                                 |
| `503`  | The nonce store or a payout network is unavailable.                                                             |

Unknown `/api/*` paths return the resource-not-found route, not an HTML page.

## Versioning and deprecated paths

Public paths are versionless. A breaking change gets a new path. The old path can remain as a deprecated alias for one release, with these headers on the deprecated path:

```http
Deprecation: true
Link: </api/call/discovery>; rel="successor-version"
```

Bodies, statuses, and authentication are the same on an alias and its canonical path. The discovery alias points to `/api/call/discovery`; the services alias points to `/api/call/services`.

For `GET /api/network/services`, the successor header is instead:

```http
Deprecation: true
Link: </api/call/services>; rel="successor-version"
```

## Endpoint index

The public API also exposes these endpoints:

| Method        | Path                         | Purpose                                                |
| ------------- | ---------------------------- | ------------------------------------------------------ |
| `GET`         | `/api/call/identity/:wallet` | Read an ERC-8004 identity and reputation for a wallet. |
| `GET`         | `/api/wallet/usage`          | Read call and spend totals for a wallet.               |
| `POST`        | `/api/wallet/onramp-session` | Create a Coinbase Onramp session for a wallet.         |
| `GET`, `HEAD` | `/api/supply/total`          | Read the total supply as whole vAPI units.             |
| `GET`, `HEAD` | `/api/supply/circulating`    | Read the circulating supply as whole vAPI units.       |
| `POST`        | `/api/support/reports`       | Submit a privacy-preserving client report.             |
| `GET`         | `/api/tasks/readiness`       | Check public task deployment readiness.                |
| `GET`, `POST` | `/mcp`                       | Use the bearer-authenticated hosted MCP transport.     |
| `GET`         | `/mcp/health`                | Check the hosted MCP transport and revision.           |
| `POST`        | `/x402/decode`               | Decode a payment authorization after x402 payment.     |
| `GET`         | `/x402/openapi.json`         | Read the decoder's OpenAPI document.                   |
| `GET`         | `/.well-known/x402`          | Discover the public x402 resources.                    |

The detailed endpoint pages are:

| Endpoint                                   | Page                                                                    |
| ------------------------------------------ | ----------------------------------------------------------------------- |
| `GET /api/call/discovery`                  | [Discovery and services](/reference/http-api/discovery-and-services.md) |
| `GET /api/marketplace/discovery`           | [Discovery and services](/reference/http-api/discovery-and-services.md) |
| `GET /api/call/services`                   | [Discovery and services](/reference/http-api/discovery-and-services.md) |
| `GET /api/network/services`                | [Discovery and services](/reference/http-api/discovery-and-services.md) |
| `GET /api/calls/list`                      | [Listing detail](/reference/http-api/listing-detail.md)                 |
| `GET /api/calls/search`                    | [Discovery and services](/reference/http-api/discovery-and-services.md) |
| `GET /api/calls/:serviceId`                | [Listing detail](/reference/http-api/listing-detail.md)                 |
| `POST /api/call/listings/:slug/resync`     | [Listing detail](/reference/http-api/listing-detail.md)                 |
| `GET /api/call/stats`                      | [Stats and activity](/reference/http-api/stats-and-activity.md)         |
| `GET /api/call/activity`                   | [Stats and activity](/reference/http-api/stats-and-activity.md)         |
| `GET /api/call/activity/:address`          | [Stats and activity](/reference/http-api/stats-and-activity.md)         |
| `GET /call/feed.xml`                       | [Feed and API catalog](/reference/http-api/feed-and-api-catalog.md)     |
| `GET /.well-known/api-catalog`             | [Feed and API catalog](/reference/http-api/feed-and-api-catalog.md)     |
| `HEAD /.well-known/api-catalog`            | [Feed and API catalog](/reference/http-api/feed-and-api-catalog.md)     |
| `GET /api/call/listings/mine`              | [Listings write API](/reference/http-api/listings-write-api.md)         |
| `GET /api/call/listings/payout-nonce`      | [Listings write API](/reference/http-api/listings-write-api.md)         |
| `GET /api/call/listings/splitters`         | [Listings write API](/reference/http-api/listings-write-api.md)         |
| `POST /api/call/listings/probe`            | [Listings write API](/reference/http-api/listings-write-api.md)         |
| `POST /api/call/listings`                  | [Listings write API](/reference/http-api/listings-write-api.md)         |
| `POST /api/call/listings/:slug/status`     | [Listings write API](/reference/http-api/listings-write-api.md)         |
| `GET /api/call/listings/claim-nonce`       | [Claim and edit](/reference/http-api/claim-and-edit.md)                 |
| `POST /api/call/listings/claim`            | [Claim and edit](/reference/http-api/claim-and-edit.md)                 |
| `PATCH /api/call/listings/:slug`           | [Claim and edit](/reference/http-api/claim-and-edit.md)                 |
| `POST /oauth/device_authorization`         | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `POST /oauth/token`                        | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `GET /api/agents`                          | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `PATCH /api/agents/:clientId`              | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `DELETE /api/agents/:clientId`             | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `GET /api/agents/self`                     | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `DELETE /api/agents/self`                  | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `GET /api/agents/self/router`              | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `POST /api/agents/self/router-key`         | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `POST /api/agents/self/router-balance-key` | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `GET /api/agents/self/stake`               | [Agents and Router](/reference/http-api/agents-and-router.md)           |
| `POST /api/router/top-up/{1\|5\|20\|50}`   | [Agents and Router](/reference/http-api/agents-and-router.md)           |

Checked on 2026-10-02.


---

# 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.vapinetwork.ai/reference/http-api/api-overview.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.
