---
title: "Create a producer offer"
method: POST
path: "/api/offers/create/"
---

# Create a producer offer

`POST /api/offers/create/`

## Request

- Base URL: `https://productindex.ai`
- URL: `https://productindex.ai/api/offers/create/`
- Auth: one of:
  - API key in cookie `authjs.session-token`
  - HTTP bearer

Creates a new offer in `draft` status for a product the caller's organization has a verified `sells` or `manufactured_by` relationship to.

## Request body

- OfferCreateRequest
  - `product_slug` string, required
  - `headline` string, required
  - `detail` string
  - `destination_url` string, uri, required: Must be http or https.
  - `price_usd` number
  - `list_price_usd` number
  - `starts_at` string, date-time
  - `expires_at` string, date-time: Must be after starts_at when both are present.
  - `promo_code` string
  - `offer_types` string[]

## Response `201`

Offer created.

- object
  - `offer_id` string, required

## Other responses

- `400`: Validation error — missing/invalid `product_slug`, `headline` (required, ≤ 60 chars), `detail` (≤ 200 chars), `destination_url` (must be http/https), `price_usd`/`list_price_usd` (must be ≥ 0), `offer_types` (must be a subset of the valid enum), or `starts_at`/`expires_at` (expires_at must be after starts_at).
- `401`: No valid session or bearer token.
- `403`: Caller's org has no verified `sells`/`manufactured_by` relationship to `product_slug` (`no_verified_relationship`), the org is deactivated, or a session caller isn't a producer account.

---

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