1. Create a key
Sign in to your workspace at app.distribution.tech and open Developers. Create a key and pick its scopes: inventory:read for step 2, campaigns:write for step 3 and campaigns:read for step 4. Copy the key when it is shown; it is shown once.
A key that writes (campaigns:write or plans:approve) also needs a mandate: the most a plan may total, a monthly cap, the channels, whether it may sign, an expiry, and the brand terms a person accepted for it. See Authentication and Scopes.
2. Read your network coverage
curl https://app.distribution.tech/api/v1/inventory \
-H "Authorization: Bearer $DISTRIBUTION_API_KEY"
The answer lists each channel on sale with how many approved creators reach your audience, how many are bookable now, and how strong coverage is. The full response is on GET /inventory.
3. Start a campaign
curl https://app.distribution.tech/api/v1/campaigns \
-X POST \
-H "Authorization: Bearer $DISTRIBUTION_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-launch-2026-10-19" \
-d '{
"goal": "launch",
"product": "Your product in one line",
"moment": "Version 2 goes live on November 12",
"window_start": "2026-11-10",
"window_end": "2026-11-20",
"budget_usd": 2000
}'
This needs campaigns:write. goal is one of launch, funding, feature or program, and budget_usd is the most to spend, held to your key's mandate. The answer carries campaign_id and plan, a priced plan whose plan.plan_id is the PLAN_ID for step 4, or plan is null with a plan_note when nothing on sale fits yet. A retry with the same Idempotency-Key returns the first answer and never starts a second campaign. Every field is on POST /campaigns.
4. Quote the plan
curl https://app.distribution.tech/api/v1/plans/PLAN_ID/quote \
-H "Authorization: Bearer $DISTRIBUTION_API_KEY"
This needs campaigns:read. The quote is the plan as it would be signed: each creator, format, date and all-in price, the total, and whether your key's mandate allows signing it now. Approving it (POST /plans/{id}/approve) needs plans:approve and returns the payment link.
Next
- Run the whole flow from an agent over MCP: Run a campaign with your agent.
- Every error and what to do about it: Errors.
- What changed in each release: API release notes.