> 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/call/reference/x402-extensions.md).

# x402 extensions

Call payments carry the vapi builder code; x402 discovery and payment-identifier extensions support discovery and safe retries.

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

Use this page to see which x402 extensions Call sends with payments and which discovery metadata it reads. The live 402 response tells you which optional extensions an API advertises.

## Payment extensions

### `builder-code`

The console and the `vapi` client attach `builder-code` with the value `vapi` to every payment they make. Facilitators can use it for on-chain attribution.

The payment carries the builder code in `extensions`:

```json
{
  "extensions": {
    "builder-code": {
      "info": {
        "s": ["vapi"]
      }
    }
  }
}
```

When the API declares an application code, the client echoes it as `a`. The client does not send `w`.

### `payment-identifier`

When an API advertises `payment-identifier`, the client generates an identifier and sends it in the payment. The same identifier and request fingerprint can be used to recognize a safe retry. Reusing the identifier for a different request fingerprint is rejected by an API that enforces the extension.

The client adds the identifier to the advertised extension metadata and records it as `paymentId` in the local receipt:

```json
{
  "extensions": {
    "payment-identifier": {
      "info": {
        "required": true,
        "id": "pay_example"
      },
      "schema": {
        "type": "object",
        "required": ["id"]
      }
    }
  }
}
```

## Bazaar discovery metadata

Providers can advertise the `bazaar` extension in their 402 response. Call reads the Bazaar input metadata, including the request method when it is present. `vapi check` reports whether the extension is advertised. Missing Bazaar metadata produces the `bazaar_metadata_missing` warning and does not block a listing.

The Coinbase x402 Bazaar mirror provides the resource URL and accepts data such as the network and amount. vAPI also reads Bazaar input and catalog metadata such as service name, description, method, tags, icon URL, x402 version, last-updated time, and quality when those fields are present.

## What vAPI sends and honours

| Extension or metadata | What vAPI sends                                                                | What vAPI honours                                                                                            |
| --------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| `builder-code`        | `info.s` includes `vapi` on every console and `vapi` client payment.           | A declared application code in `info.a` and the server's declared extension metadata.                        |
| `payment-identifier`  | Sends an `info.id` only when the API advertises the extension.                 | The same identifier can identify a retry with the same request fingerprint; receipts keep it as `paymentId`. |
| `bazaar`              | It is provider-declared discovery metadata, not a payment field added by Call. | Provider 402 metadata and Coinbase Bazaar resource, accepts, input, and catalog fields for discovery.        |

See [Networks and schemes](/call/reference/networks-and-schemes.md) for how mirrored Bazaar offers are filtered for payment.

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/call/reference/x402-extensions.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.
