API REFERENCE
POST /api/content/packs/{id}/generate
On this page
/api/content/packs/{id}/generateRelease rollout pending; discover current host capabilities before execution. Approve the current quote and budget ceiling. Start or resume the same job without duplicate submission.
Authentication
x-api-key in header
bearerAuth bearer
Request
curl --request POST \
--url 'https://api.recoupable.dev/api/content/packs/YOUR_ID/generate' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"quote_id": "YOUR_ID",
"expected_revision": 0,
"approved_max_usd": 0
}'Replace the YOUR_ placeholders with your values. Required query parameters are included; optional parameters are listed below.
Try it
Fill in the fields, send the request from your browser, and read the live response. The curl below updates as you type.
Kept in this browser tab only and cleared when it closes.
curl --request POST \
--url 'https://recoup-api.vercel.app/api/content/packs/{id}/generate' \
--header 'Content-Type: application/json' \
--data '{
"quote_id": "YOUR_ID",
"expected_revision": 0,
"approved_max_usd": 0
}'Parameters
Path parameters
idstringrequiredRequest body required
application/json
organization_idstringformat: uuid · pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
quote_idstringrequiredformat: uuid · pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
expected_revisionintegerrequiredmaximum: 9007199254740991
approved_max_usdnumberrequiredmaximum: 100
Responses
200Current owned result; running is not completed.+
application/json
jobobjectrequiredProperties for job
idstringrequiredformat: uuid
revisionintegerrequiredminimum: 1
statusstring · enumrequiredValues: "draft", "needs_input", "ready_to_quote", "awaiting_approval", "running", "partial", "completed", "failed", "canceled"
briefobjectrequiredProperties for brief
artist_namestringminLength: 1 · maxLength: 2000
artist_account_idstringformat: uuid · pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
song_titlestringminLength: 1 · maxLength: 2000
recording_versionstringminLength: 1 · maxLength: 2000
audio_urlstringformat: uri · maxLength: 4000
audio_start_secondsnumberminimum: 0 · maximum: 1200
occasionstring · enumValues: "new_release", "anniversary", "reissue", "remix", "rediscovery"
original_release_datestringformat: date · pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
campaign_datestringformat: date · pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
primary_actionstringDefault: "listen"
minLength: 1 · maxLength: 2000
destination_urlstringformat: uri · maxLength: 4000
audiencestringminLength: 1 · maxLength: 2000
song_summarystringminLength: 1 · maxLength: 2000
lyrics_excerptstringmaxLength: 1000
creative_directionstringminLength: 1 · maxLength: 2000
allow_creative_defaultsbooleanDefault: false
reference_image_urlsarray<string>Default: []
maxItems: 5
Item properties for reference_image_urls
string
constraintsarray<string>Default: []
maxItems: 12
Item properties for constraints
string
platformsarray<string · enum>Default: ["instagram","tiktok"]
minItems: 1 · maxItems: 6
Item properties for platforms
string · enum · "instagram", "tiktok", "youtube", "facebook", "linkedin", "x"
context_brief_idstringformat: uuid · pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
evidencearray<object>Default: []
maxItems: 20
Item properties for evidence
textstringrequiredminLength: 1 · maxLength: 2000
kindstring · enumrequiredValues: "customer_assertion", "source_observation", "creative_proposal"
source_urlstringformat: uri · maxLength: 4000
deliverablesobjectrequiredquoteobject | nullQuote id, fingerprint, revision, expiry, complete line_items, maximum_usd, credits, piece/file/caption counts and retry policy.
assetsarray<object>requiredItem properties for assets
object
readinessobjectrequiredProperties for readiness
readybooleanmissingarray<string>Item properties for missing
string
assumptionsarray<string>Item properties for assumptions
string
next_actionstringrequired400Invalid input.+
application/json
statusstringrequirederrorstringrequiredbillingUrlstringformat: uri
401Authentication required.+
application/json
statusstringrequirederrorstringrequiredbillingUrlstringformat: uri
402Insufficient credits; use returned billingUrl.+
application/json
statusstringrequirederrorstringrequiredbillingUrlstringformat: uri
403Workspace access denied.+
application/json
statusstringrequirederrorstringrequiredbillingUrlstringformat: uri
404Owned resource not found.+
application/json
statusstringrequirederrorstringrequiredbillingUrlstringformat: uri
409Stale quote/revision, unresolved submission, budget/state conflict or required execution capability unavailable.+
application/json
statusstringrequirederrorstringrequiredbillingUrlstringformat: uri
Full specification
Download the OpenAPI file for complete schemas, constraints, and examples.
Download content.jsonView operation source
{
"operationId": "generateReleasePack",
"description": "Release rollout pending; discover current host capabilities before execution. Approve the current quote and budget ceiling. Start or resume the same job without duplicate submission.",
"security": [
{
"apiKeyAuth": []
},
{
"bearerAuth": []
}
],
"responses": {
"200": {
"description": "Current owned result; running is not completed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackResponse"
}
}
}
},
"400": {
"description": "Invalid input.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackError"
}
}
}
},
"401": {
"description": "Authentication required.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackError"
}
}
}
},
"402": {
"description": "Insufficient credits; use returned billingUrl.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackError"
}
}
}
},
"403": {
"description": "Workspace access denied.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackError"
}
}
}
},
"404": {
"description": "Owned resource not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackError"
}
}
}
},
"409": {
"description": "Stale quote/revision, unresolved submission, budget/state conflict or required execution capability unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReleasePackError"
}
}
}
}
},
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenerateReleasePackRequest"
}
}
}
},
"x-recoup-availability": "pending"
}