> 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/sell-on-call/publishing-from-the-cli.md).

# Publish from the CLI

Publish, activate, verify-request and claim vAPI Call listings from the vapi CLI, for one API or a batch, with the payout wallet signing locally.

This page is for providers who want to publish and manage Call listings from the `vapi` CLI instead of the console wizard at `/call/my-apis/new`. Deploying the FeeSplitter that receives your payouts is a wallet transaction and stays in the console.

For machine-managed publishing, see the [HTTP write API](https://docs.vapinetwork.ai/reference/http-api/listings-write-api). For an API that vAPI already indexed, see [claim and edit](https://docs.vapinetwork.ai/reference/http-api/claim-and-edit).

## Authenticate

Link an account with publishing rights to publish and claim without a registry API key. The login flag below requests the `call.publish` right.

```bash
vapi login --publish
```

Set the registry API key from a terminal. The CLI reads it from a prompt, never from an argument, and stores it in the OS secret store. `VAPI_API_KEY` is the CI route.

```bash
vapi auth set-key
```

The key is also used by claiming. Check or remove the stored key with these commands:

```bash
vapi auth status
vapi auth clear
```

## Publish one API

`vapi publish` accepts an origin, one endpoint, or an OpenAPI document. The CLI probes the URL, prints each probe step, and lets you choose the endpoints to list. A refusal exits before signing anything.

```bash
vapi publish https://weather.example
```

Use `--mode` when you want to identify the URL explicitly. Provide the listing name, description, and category for non-interactive use.

```bash
vapi publish https://weather.example/openapi.json --mode openapi --name Weather --description "Weather data" --category data --yes
```

The available publish options are:

| Option                                           | What it does                                                                     |
| ------------------------------------------------ | -------------------------------------------------------------------------------- |
| `--method`                                       | Sets the method for an endpoint probe.                                           |
| `--mode <origin\|endpoint\|openapi>`             | Identifies the URL as an origin, endpoint, or OpenAPI document.                  |
| `--name <text>`                                  | Sets the listing name.                                                           |
| `--description <text>`                           | Sets the listing description.                                                    |
| `--category <ai\|data\|crypto\|compute\|search>` | Sets the listing category.                                                       |
| `--select <names>`                               | Selects endpoint names to list.                                                  |
| `--account <name>`                               | Selects the payout wallet that signs.                                            |
| `--yes`                                          | Takes all discovered endpoints without interactive selection.                    |
| `--resume`                                       | Skips endpoints your authenticated account already lists and publishes the rest. |

The payout wallet signs one message that confirms it receives Call payouts. No payment is made by that signature. A listing can contain at most 20 endpoints.

## Publish a batch

When a source contains more than 20 endpoints, the CLI creates several listings with up to 20 endpoints each. The listings use names such as `Weather (1/4)` and keep probe order.

Select endpoints by name in a script:

```bash
vapi publish https://weather.example --select forecast,alerts --name Weather --description "Weather data" --category data --account provider
```

Use `--yes` to take all discovered endpoints in a terminal-free run:

```bash
vapi publish https://weather.example --yes --name Weather --description "Weather data" --category data --account provider
```

Each endpoint receives a result. A batch refused on its own merits does not stop the next batch. A rejected key, rate limit, or outage stops the run.

If a run stops, repeat it with `--resume`. The CLI checks your authenticated account's listings, skips those endpoints, and lists the rest.

```bash
vapi publish https://weather.example --resume --name Weather --description "Weather data" --category data --account provider
```

## Activate a listing

After the FeeSplitter is deployed, activate the listing with its slug.

```bash
vapi publish activate weather-call
```

Activation takes the listing live after every endpoint passes a fresh probe and the deployed splitter passes its on-chain checks.

## Request review

Verification is separate from listing. Ask vAPI to review a live listing with its slug.

```bash
vapi publish verify-request weather-call
```

## List your listings

Show every listing owned by your authenticated account.

```bash
vapi publish list
```

## Claim a listing vAPI indexed

vAPI can index an API from a public x402 catalog before you publish it. If the listing pays the wallet you control, claim it from the CLI.

```bash
vapi claim https://weather.example --account provider
```

The claim is signed by the selected payee wallet. The registry matches that signer against the listings' `payTo`. A wallet that is not the payee, an origin with nothing to claim, and an already-owned listing each fail separately.

After claiming, use `vapi publish list` to see the listings owned by your authenticated account. Use `vapi publish verify-request <slug>` to ask for review.

## Next

* [Check an x402 API](/call/sell-on-call/check-an-x402-api.md)
* [List your API](/call/sell-on-call/list-your-api.md)
* [Listings write API](https://docs.vapinetwork.ai/reference/http-api/listings-write-api)

Checked on 2026-10-15.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.vapinetwork.ai/call/sell-on-call/publishing-from-the-cli.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
