Skip to content

Collabs

A collab is an organization’s brief that creators can apply to. Org-scoped: the URL identifies the organization.

OperationMethod + pathToken scopeRoleNotes
List collabsGET /organizations/:organization_id/collabs.jsonread or writeOrganization memberPaginated
Show collabGET /organizations/:organization_id/collabs/:id.jsonread or writeOrganization memberETag on show
Create collabPOST /organizations/:organization_id/collabs.jsonwriteOrganization adminCreates a draft
Update collabPATCH /organizations/:organization_id/collabs/:id.jsonwriteOrganization adminpurge_banner_image removes banner
Delete collabDELETE /organizations/:organization_id/collabs/:id.jsonwriteOrganization adminOnly draft collabs without submissions can be deleted
{
"id": "qZmRpL",
"name": "Spring Lipstick Drop",
"state": "published",
"currency": "usd",
"countries": ["US", "CA"],
"website": "https://example.com/lipstick",
"require_spark_ads": true,
"requires_product_shipment": false,
"submissions_count": 24,
"completed_count": 6,
"published_at": "2026-04-15T10:00:00Z",
"created_at": "2026-04-01T10:00:00Z",
"updated_at": "2026-05-01T10:00:00Z",
"url": "https://hypemarket.ai/organizations/gKpMxN/collabs/qZmRpL.json",
"banner_image_url": "https://hypemarket.ai/rails/active_storage/...",
"brief": "<p>Show the lipstick in a get-ready-with-me video...</p>"
}

state is one of draft, submitted_for_review, published, paused. brief is included on show only and is rendered HTML (rich text).

GET /organizations/:organization_id/collabs.json

Returns the organization’s collabs (subject to your role’s policy scope). Paginated.

GET /organizations/:organization_id/collabs/:id.json

Returns one collab including the rendered brief HTML. Sets an ETag.

POST /organizations/:organization_id/collabs.json
{
"collab": {
"name": "Spring lipsticks",
"website": "https://example.com/lipstick",
"currency": "eur",
"countries": ["FR", "DE"],
"require_spark_ads": true,
"requires_product_shipment": false,
"brief": "<p>Show the lipstick in a get-ready-with-me video...</p>"
}
}

Creates a draft collab. Requires a write-scoped token and an admin role on the organization.

You can send a collab payload to override the server-created draft defaults. Any omitted fields keep the generated defaults (for example the default name, default countries, default brief template, and the database default currency).

If you omit collab entirely, the server still creates a draft from defaults only.

To pre-fill from a product page, pass a top-level website query param such as ?website=https://.... That prefill flow is primarily intended for the web UI and may replace generated fields such as name, brief, countries, website, and banner_image.

PATCH /organizations/:organization_id/collabs/:id.json
{
"collab": {
"name": "Updated name",
"currency": "eur",
"countries": ["FR", "DE"],
"brief": "<p>New brief…</p>"
}
}

Returns 200 OK with the updated collab. To remove an existing banner, include "purge_banner_image": "1" inside the collab payload.

DELETE /organizations/:organization_id/collabs/:id.json

Returns 204 No Content only for draft collabs with no submissions. Fails with 403 if the collab is no longer a draft, and 422 if any submissions exist.

State transitions (not yet exposed via JSON)

Section titled “State transitions (not yet exposed via JSON)”

POST .../submit, .../pause, .../unpause redirect today. JSON support is on the rollout list.

CodeWhen
401Missing token, or read token attempting a write
403You’re authenticated but your role can’t perform this action
404Collab or org does not exist for you
422Validation failed