---
title: "Ask for a price"
method: POST
path: "/creators/{id}/price-request"
---

# Ask for a price

`POST /creators/{id}/price-request`

## Request

- Base URL: `https://app.distribution.tech/api/v1`
- URL: `https://app.distribution.tech/api/v1/creators/{id}/price-request`
- Auth: HTTP bearer

Ask our team for the price of an approved creator with nothing on sale (ask_price true and price_estimate on its row; the estimate is never a price). The team prices it, the price then shows on the creator (creator_get offerings) and as a priced answer on your plan, held for you for 48 hours; nothing is booked or charged until you add the creator to a plan and approve it. It reaches our team, never the creator. One open ask per creator: asking again answers already true and sends nothing. Opening the creator counts as one creator opened today (free when already opened). 3 asks for one creator and 20 in all in any 24 hours (rate_limited, reason daily_limit, with retry_after and resets_at saying when that limit reopens). A creator with a format on sale answers conflict, reason already_priced: add it with plan_add_creator. Optionally campaign_id: one of your campaigns the ask is for. Scope: creators:read. No Idempotency-Key: an ask is one open request per creator, so a retry while it is open answers already true; once it is answered or its 48 hours run out, asking again opens a new one. MCP tool: creator_ask_price.

## Path parameters

- `id` string, uuid, required

## Request body

- AskPriceInput: Optional. Send {} or no body to ask from no campaign.
  - `campaign_id` string, uuid: One of your campaigns this ask is for; the priced answer then shows on that campaign's plan. Another brand's or an unknown id is dropped.

## Response `200`

Asked, or already asked (already true).

- PriceAsked
  - `creator_id` string, uuid, required
  - `requested` unknown, required
  - `already` boolean, required: true: an ask for this creator is still open (an earlier call, or a teammate's click in the app); nothing new was sent. An ask is held for 48 hours: once it is answered or expires, the next call opens a new ask and answers already false.
  - `status` 'requested' | 'priced', required: requested: our team is pricing it. priced: a price is on the creator now (creator_get offerings) and held for you for 48 hours.
  - `requested_at` string, date-time, required
  - `next` string, required: What happens next, in one sentence.

## Other responses

- `400`: A parameter is not valid: details.problems names each field and what it accepts.
- `401`: No API key, an unknown one, or a revoked one.
- `403`: The key lacks creators:read, or the demo workspace (forbidden).
- `404`: No approved creator has that id.
- `409`: conflict, reason already_priced: a format is on sale; add it with plan_add_creator instead.
- `422`: unprocessable: not answered today; listed so every POST declares the same statuses.
- `429`: Too many creator reads (the creator meter: opening this creator counts as one creator opened today, free when already opened), or the daily ask limit: 3 for one creator and 20 in all in 24 hours (rate_limited, details.reason daily_limit). Retry-After says when.
- `500`: internal: the request failed on our side. Try again.
- `502`: unavailable: the ask did not reach our team, so it was not kept. Try again in a minute.
- `503`: unavailable: the service or this part of it is not reachable right now. Try again shortly.

---

[API](https://skmtc.dev/distribution/apis/distribution-api.md) · [All operations](https://skmtc.dev/distribution/apis/distribution-api/llms.txt) · [OpenAPI document](https://skmtc.dev/distribution/apis/distribution-api/revisions/5ca6ca44a7c0?raw)
