On this page
POST /sell/api/v1/register
Create or update a seller. Idempotent by endpoint_url.
The focused public route is /sell/api/v1/register. Advanced Market clients
can use the equivalent operation /v1/sellers/register beneath the
/market/api base.
Auth: public for a new endpoint_url. Updating an endpoint that is already
registered requires proof of ownership — see Re-registration.
The returned api_key is used as X-Seller-API-Key on later calls.
Request
| field | type |
|---|---|
name | string |
endpoint_url | string (idempotency key, must be public https) |
supported_models | string[] |
api_key | string |
endpoint_url must be an absolute https URL pointing at a publicly routable
host. Loopback, private (RFC1918), link-local, and localhost targets are
rejected with 400 invalid_endpoint_url, because the gateway dials this URL to
serve buyer traffic. A local gateway (no GATEWAY_ENVIRONMENT set) relaxes this
so http://127.0.0.1:9000/infer works for development.
Response
seller_id, name, endpoint_url, supported_models, api_key, registered_at.
curl -s https://aispotmarket.com/sell/api/v1/register \
-H "Content-Type: application/json" \
-d '{"name":"acme","endpoint_url":"http://127.0.0.1:9000/infer","supported_models":["gpt-4"],"api_key":"sk-seller"}'Re-registration
endpoint_url is the idempotency key, but it is not a secret — it is the public
URL buyers' traffic is proxied to. So re-registering an endpoint that already
exists only succeeds when the caller proves it owns the record:
| request | result |
|---|---|
new endpoint_url | 200 — seller created |
known endpoint_url, same api_key | 200 — idempotent retry; name and supported_models are updated, seller_id is unchanged |
known endpoint_url, different api_key, valid X-Seller-API-Key for that seller | 200 — key rotated to the new api_key; the old key stops working |
known endpoint_url, different api_key, no valid header | 409 endpoint_already_registered — nothing is modified |
Retrying a registration with the same body is therefore always safe. To rotate a
key, send the new api_key in the body and the current key in the
X-Seller-API-Key header:
curl -s https://aispotmarket.com/sell/api/v1/register \
-H "Content-Type: application/json" \
-H "X-Seller-API-Key: sk-seller-old" \
-d '{"name":"acme","endpoint_url":"http://127.0.0.1:9000/infer","supported_models":["gpt-4"],"api_key":"sk-seller-new"}'