API REFERENCE

POST /api/content/packs/{id}/generate

On this page
POST/api/content/packs/{id}/generate

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.

Authentication

x-api-key in header

bearerAuth bearer

Request

cURL
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 for this request
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

idstringrequired

Request body required

application/json

organization_idstring

format: 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_idstringrequired

format: 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_revisionintegerrequired

maximum: 9007199254740991

approved_max_usdnumberrequired

maximum: 100

Responses

200Current owned result; running is not completed.

application/json

jobobjectrequired
Properties for job
idstringrequired

format: uuid

revisionintegerrequired

minimum: 1

statusstring · enumrequired

Values: "draft", "needs_input", "ready_to_quote", "awaiting_approval", "running", "partial", "completed", "failed", "canceled"

briefobjectrequired
Properties for brief
artist_namestring

minLength: 1 · maxLength: 2000

artist_account_idstring

format: 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_titlestring

minLength: 1 · maxLength: 2000

recording_versionstring

minLength: 1 · maxLength: 2000

audio_urlstring

format: uri · maxLength: 4000

audio_start_secondsnumber

minimum: 0 · maximum: 1200

occasionstring · enum

Values: "new_release", "anniversary", "reissue", "remix", "rediscovery"

original_release_datestring

format: 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_datestring

format: 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_actionstring

Default: "listen"

minLength: 1 · maxLength: 2000

destination_urlstring

format: uri · maxLength: 4000

audiencestring

minLength: 1 · maxLength: 2000

song_summarystring

minLength: 1 · maxLength: 2000

lyrics_excerptstring

maxLength: 1000

creative_directionstring

minLength: 1 · maxLength: 2000

allow_creative_defaultsboolean

Default: 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_idstring

format: 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
textstringrequired

minLength: 1 · maxLength: 2000

kindstring · enumrequired

Values: "customer_assertion", "source_observation", "creative_proposal"

source_urlstring

format: uri · maxLength: 4000

deliverablesobjectrequired
quoteobject | null

Quote id, fingerprint, revision, expiry, complete line_items, maximum_usd, credits, piece/file/caption counts and retry policy.

assetsarray<object>required
Item properties for assets

object

readinessobjectrequired
Properties for readiness
readyboolean
missingarray<string>
Item properties for missing

string

assumptionsarray<string>
Item properties for assumptions

string

next_actionstringrequired
400Invalid input.

application/json

statusstringrequired
errorstringrequired
billingUrlstring

format: uri

401Authentication required.

application/json

statusstringrequired
errorstringrequired
billingUrlstring

format: uri

402Insufficient credits; use returned billingUrl.

application/json

statusstringrequired
errorstringrequired
billingUrlstring

format: uri

403Workspace access denied.

application/json

statusstringrequired
errorstringrequired
billingUrlstring

format: uri

404Owned resource not found.

application/json

statusstringrequired
errorstringrequired
billingUrlstring

format: uri

409Stale quote/revision, unresolved submission, budget/state conflict or required execution capability unavailable.

application/json

statusstringrequired
errorstringrequired
billingUrlstring

format: uri

Full specification

Download the OpenAPI file for complete schemas, constraints, and examples.

Download content.json
View operation source
json
{
  "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"
}

Get started with Recoup.