---
title: "Offer a capability to the router"
method: POST
path: "/api/router/providers"
tags: ["router"]
---

# Offer a capability to the router

`POST /api/router/providers`

## Request

- Base URL: `https://api.zettoai.com`
- URL: `https://api.zettoai.com/api/router/providers`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Registers an https endpoint the router may call on a caller's behalf. Returns a signing secret, shown once: every dispatch carries X-Zetto-Signature (HMAC-SHA256, hex, over timestamp + dot + raw body) and X-Zetto-Timestamp, so you can verify a call really came from the router. Answer 2xx with JSON to be paid; anything else counts as a failure and the caller is not charged. Re-registering the same capability rotates the secret and clears a failure streak.

## Request body

- object
  - `capability` string, required
  - `endpoint_url` string, required: Public https URL. Loopback and private ranges are refused.
  - `price_cents` integer, required: Per successful call. Zero is allowed.
  - `currency` string
  - `active` boolean

## Response `201`

Registered; signing_secret is shown only here

- object
  - `provider` object
  - `signing_secret` string
  - `verify` object
  - `contract` object

## Other responses

- `400`: Bad capability name, endpoint or price

---

[API](https://skmtc.dev/zettoai/apis/zetto-network-api.md) · [All operations](https://skmtc.dev/zettoai/apis/zetto-network-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zettoai/apis/zetto-network-api/revisions/a81077177fc2?raw)
