Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions content/docs/contracts/example-cases.json
Original file line number Diff line number Diff line change
Expand Up @@ -1233,13 +1233,13 @@
"content/docs/source/api-reference/openapi/accounts.json": "1a5a04f9ec358a15b8339b7029c9fed5fe69c6f042c8b03b6b4f03f3aafdeeed",
"content/docs/source/api-reference/openapi/content.json": "f790ee44d1b881709e393a65500bec23493e21a391c7b66555e0c78750f95239",
"content/docs/source/api-reference/openapi/research.json": "f301a714e994e99b1dbcfc63ee18824537cf42813d8df3906ac7c2436a481ae0",
"content/docs/source/api-reference/openapi/releases.json": "64ed2324df2cafb93567aa04e44aaa643d1f567a13f9ef9832f4d853e61f2dc7",
"content/docs/source/api-reference/openapi/releases.json": "85b1ca7af667bac8a8f67dd04b0bd986cbd03f8bd287066401de2132d825ace6",
"content/docs/source/api-reference/openapi/social.json": "5bd167a78cf6a17c46724486e2921882be20969ea32f3c0297f5b7e7ba9a30aa",
"content/docs/source/api-reference/openapi/context.json": "7784ee1d8c4b6753cc47bf518f468effa58d50fb9d0289009edf0caad3d05a67",
"content/docs/source/api-reference/openapi/projects.json": "b059cf8baa83a7f73a3c15db19f54fa56e46a3840e91bd42979b83550f543ace",
"content/docs/source/api-reference/openapi/sessions.json": "85af56cc150374b28c25541c45db15849c71fdeb6288cf90dc2beb08f494e83e",
"content/docs/source/api-reference/sites/overview.mdx": "1430730142df476e6cec9ea40aab751b0a48373d1479254da70bd8a545ae51b2",
"content/docs/source/credits.mdx": "377d965fc531dc096e2553c8f4b24cffe4c8b84918af6abfb49531aef77a88f3",
"content/docs/source/credits.mdx": "2a0cdf8ddd408b7a7ebfe0abb0e185a23c66af4035790223c4f5f595c41a9b7c",
"content/docs/source/api-reference/admins/agent-signups.mdx": "a6b65f3ad1b0ead873b83cdccf2254cdd3afa1556ae94738502c9b1fc46954bc"
},
"examples": {
Expand Down
4 changes: 2 additions & 2 deletions content/docs/contracts/operation-inventory.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"apiSourceCommit": "4d94095ce71304f5179ee0f7f7d2725927ec0490",
"apiSourceCommit": "3bd97f45fd265d9b611647af02d8dec3e444c06d",
"evidence": "Static source only; tool discovery and OAuth host verification remain separate. Conditional registration and scope filters mean this is not a promised catalog count.",
"operations": [
{
Expand Down Expand Up @@ -3797,7 +3797,7 @@
"content/docs/source/api-reference/openapi/context.json": "7784ee1d8c4b6753cc47bf518f468effa58d50fb9d0289009edf0caad3d05a67",
"content/docs/source/api-reference/openapi/players.json": "4a4c90583fe1de6487444581b293a32b1cc04622fc929965ab90f365feb8bc94",
"content/docs/source/api-reference/openapi/projects.json": "b059cf8baa83a7f73a3c15db19f54fa56e46a3840e91bd42979b83550f543ace",
"content/docs/source/api-reference/openapi/releases.json": "64ed2324df2cafb93567aa04e44aaa643d1f567a13f9ef9832f4d853e61f2dc7",
"content/docs/source/api-reference/openapi/releases.json": "85b1ca7af667bac8a8f67dd04b0bd986cbd03f8bd287066401de2132d825ace6",
"content/docs/source/api-reference/openapi/research.json": "f301a714e994e99b1dbcfc63ee18824537cf42813d8df3906ac7c2436a481ae0",
"content/docs/source/api-reference/openapi/sandbox.json": "c61a2bb965b9c9a1eade2e226fdc8af0cb1aa2213f23236d8607d13b65dbec15",
"content/docs/source/api-reference/openapi/sessions.json": "85af56cc150374b28c25541c45db15849c71fdeb6288cf90dc2beb08f494e83e",
Expand Down
2 changes: 1 addition & 1 deletion content/docs/manifest.json

Large diffs are not rendered by default.

10 changes: 4 additions & 6 deletions content/docs/source/api-reference/openapi/releases.json
Original file line number Diff line number Diff line change
Expand Up @@ -3626,7 +3626,7 @@
"post": {
"operationId": "postSongsAnalyzeBatch",
"summary": "Ask many questions about one song",
"description": "Pending release. This operation is documented ahead of its API release and is not callable on the production API until that release ships.\n\nAsk up to 40 short questions about one audio file in a single request. The audio is downloaded once, then every prompt is answered against it, one after another, in the order sent. Use it instead of one [`POST /api/songs/analyze`](/api-reference/songs/analyze) call per question: a batch pays the per-call base price once, not once per prompt.\n\nSend `audio_url` and `prompts`, an array of `{ id, prompt, max_new_tokens }`. `id` is your key for the answer (1 to 64 characters, unique within the batch), `prompt` is 1 to 4,000 characters, and the optional `max_new_tokens` (1 to 2048, default 400) bounds that one answer. `temperature` (default 0.2), `top_p` (default 1) and `do_sample` (default false) apply to every prompt in the batch.\n\nPricing: `$0.05` once per batch plus `$0.001166` per second of the batch's total inference time (`elapsed_seconds`, audio download included), charged once after the batch succeeds, as a single usage row. A batch that runs 90 seconds costs `$0.15494`. The balance must hold `$0.05` before the model runs, otherwise the response is `402`. A batch the model service rejects is not charged.\n\nA batch is all or nothing: if the model service rejects it, the response is `502` and no answers are returned. Prompts run one after another, so a batch of many long answers can take several minutes; the request stays open until it finishes, so use a generous client timeout.",
"description": "Ask up to 40 short questions about one audio file in a single request. The audio is downloaded once, then every prompt is answered against it, one after another, in the order sent. Use it instead of one [`POST /api/songs/analyze`](/api-reference/songs/analyze) call per question: a batch pays the per-call base price once, not once per prompt.\n\nSend `audio_url` and `prompts`, an array of `{ id, prompt, max_new_tokens }`. `id` is your key for the answer (1 to 64 characters, unique within the batch), `prompt` is 1 to 4,000 characters, and the optional `max_new_tokens` (1 to 2048, default 400) bounds that one answer. `temperature` (default 0.2), `top_p` (default 1) and `do_sample` (default false) apply to every prompt in the batch.\n\nPricing: `$0.05` once per batch plus `$0.001166` per second of the batch's total inference time (`elapsed_seconds`, audio download included), charged once after the batch succeeds, as a single usage row. A batch that runs 90 seconds costs `$0.15494`. The balance must hold `$0.05` before the model runs, otherwise the response is `402`. A batch the model service rejects is not charged.\n\nA batch is all or nothing: if the model service rejects it, the response is `502` and no answers are returned. Prompts run one after another, so a batch of many long answers can take several minutes; the request stays open until it finishes, so use a generous client timeout.",
"security": [
{
"apiKeyAuth": []
Expand Down Expand Up @@ -3805,15 +3805,14 @@
}
}
}
},
"x-recoup-availability": "pending"
}
}
},
"/api/songs/moments": {
"post": {
"operationId": "postSongsMoments",
"summary": "Find a song's sections and moments",
"description": "Pending release. This operation is documented ahead of its API release and is not callable on the production API until that release ships.\n\nFinds a song's sections and its best short moments for licensing and editing, with the measurements an edit or a sync pitch needs. Times and numbers come from measuring the audio itself (the beat grid, loudness, which passages repeat), not from a language model. An audio model then listens to a clip of each moment and adds a short description.\n\nSend `audio_url` (MP3, WAV or FLAC). Optionally send `section_order`, the section headers from a lyric sheet in order, to name the sections from the sheet, and `tempo_hint`, the tempo in BPM from your metadata, to correct a beat tracker that locked onto half or double time. `describe` chooses which moments get a description: `true` (the default) for every moment, `false` for none, or a list of moment types.\n\nThe response has the song's `sections`, its `moments` with `6`, `15` and `30` second `cuts` on the beat grid, and a per-second `energy_curve`. It also carries an extended measurement: loudness and peaks (`lufs`, `true_peak_dbtp`, `broadcast_ready`), the stereo image, a seven-band spectrum (`band_profile`), a six-axis sound `fingerprint`, `key`, `time_signature`, `valence` and `arousal`, `mute_drops`, a `chord_loop` estimate and typed `edit_points`. Store `measured_with` with each result: it changes whenever the measurement's results would change. The fingerprint formulas and the band reference split were calibrated on a small sample of songs, so treat them as comparable numbers within a version, not as norms.\n\nPricing: `$0.01` per song measured, plus the [analyze](/api-reference/songs/analyze) rate (`$0.05` per model call plus `$0.001166` per second of inference time) for each moment described. The balance must hold `$0.01` plus `$0.05` for every moment that may be described before anything runs, which is `$0.36` with the default `describe: true`, otherwise the response is `402`. A moment whose description fails comes back without a description and is not charged. If the measurement itself fails, nothing is charged.\n\nA request can take a few minutes when the measurement and model services are starting cold, up to a limit of 300 seconds.",
"description": "Finds a song's sections and its best short moments for licensing and editing, with the measurements an edit or a sync pitch needs. Times and numbers come from measuring the audio itself (the beat grid, loudness, which passages repeat), not from a language model. An audio model then listens to a clip of each moment and adds a short description.\n\nSend `audio_url` (MP3, WAV or FLAC). Optionally send `section_order`, the section headers from a lyric sheet in order, to name the sections from the sheet, and `tempo_hint`, the tempo in BPM from your metadata, to correct a beat tracker that locked onto half or double time. `describe` chooses which moments get a description: `true` (the default) for every moment, `false` for none, or a list of moment types.\n\nThe response has the song's `sections`, its `moments` with `6`, `15` and `30` second `cuts` on the beat grid, and a per-second `energy_curve`. It also carries an extended measurement: loudness and peaks (`lufs`, `true_peak_dbtp`, `broadcast_ready`), the stereo image, a seven-band spectrum (`band_profile`), a six-axis sound `fingerprint`, `key`, `time_signature`, `valence` and `arousal`, `mute_drops`, a `chord_loop` estimate and typed `edit_points`. Store `measured_with` with each result: it changes whenever the measurement's results would change. The fingerprint formulas and the band reference split were calibrated on a small sample of songs, so treat them as comparable numbers within a version, not as norms.\n\nPricing: `$0.01` per song measured, plus the [analyze](/api-reference/songs/analyze) rate (`$0.05` per model call plus `$0.001166` per second of inference time) for each moment described. The balance must hold `$0.01` plus `$0.05` for every moment that may be described before anything runs, which is `$0.36` with the default `describe: true`, otherwise the response is `402`. A moment whose description fails comes back without a description and is not charged. If the measurement itself fails, nothing is charged.\n\nA request can take a few minutes when the measurement and model services are starting cold, up to a limit of 300 seconds.",
"security": [
{
"apiKeyAuth": []
Expand Down Expand Up @@ -4472,8 +4471,7 @@
}
}
}
},
"x-recoup-availability": "pending"
}
}
}
},
Expand Down
5 changes: 0 additions & 5 deletions content/docs/source/api-reference/songs/analyze-batch.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ openapi: "/api-reference/openapi/releases.json POST /api/songs/analyze/batch"
sidebarTitle: "Analyze with many prompts"
---

<Warning>
Pending release. This page documents the reviewed contract ahead of the API
release. The endpoint is not callable on the production API until that release ships.
</Warning>

## Which to use

Use a batch when you have several short questions about the same song, for example genre, tempo, instruments and vocal style as four prompts. The audio is downloaded once and the base price is paid once, so a batch of 36 prompts costs one base price plus the seconds it runs, not 36 base prices.
Expand Down
5 changes: 0 additions & 5 deletions content/docs/source/api-reference/songs/moments.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ openapi: "/api-reference/openapi/releases.json POST /api/songs/moments"
sidebarTitle: "Find song moments"
---

<Warning>
Pending release. This page documents the reviewed contract ahead of the API
release. The endpoint is not callable on the production API until that release ships.
</Warning>

## Which to use

Use this endpoint when you need to know when things happen in a song and how it measures: where the sections and best moments start and end, ready-made 6, 15 and 30 second cuts on the beat grid, loudness and peaks, the spectrum, key, and where to cut in and out. Those times and numbers come from measuring the audio, so they are repeatable.
Expand Down
8 changes: 4 additions & 4 deletions content/docs/source/credits.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ Some Recoup endpoints are billed in **credits** — primarily endpoints that hit
| **Content generation** ([`/api/content/image`](/api-reference/content/generate-image), [`video`](/api-reference/content/generate-video), upscale, transcribe and analyze) | Yes | Model-specific generation and inference charges apply. Hosted pipelines charge their component operations; estimates are advisory. |
| **AI Chat — streaming** ([`POST /api/chat`](/api-reference/chat/workflow)) | Yes | Variable cost based on model token usage, with a per-request minimum. |
| **Music analysis** ([`POST /api/songs/analyze`](/api-reference/songs/analyze)) | Yes | \$0.05 per model call plus \$0.001166 per second of inference time; `full_report` is the sum of its 13 calls. |
| **Music analysis batch** ([`POST /api/songs/analyze/batch`](/api-reference/songs/analyze-batch)) | Yes | \$0.05 once per batch plus \$0.001166 per second of the batch's inference time, however many prompts it carries. Pending release. |
| **Song moments** ([`POST /api/songs/moments`](/api-reference/songs/moments)) | Yes | \$0.01 per song measured, plus the music analysis rate for each moment described. Pending release. |
| **Music analysis batch** ([`POST /api/songs/analyze/batch`](/api-reference/songs/analyze-batch)) | Yes | \$0.05 once per batch plus \$0.001166 per second of the batch's inference time, however many prompts it carries. |
| **Song moments** ([`POST /api/songs/moments`](/api-reference/songs/moments)) | Yes | \$0.01 per song measured, plus the music analysis rate for each moment described. |
| **Social scrape** ([`/api/socials/{id}/scrape`](/api-reference/social/scrape), [`/api/artist/socials/scrape`](/api-reference/artist/socials-scrape)) | Yes | \$0.05, plus \$0.01 per post requested via `posts` — per social profile scraped. |
| **Other operations** | Consult the endpoint contract | [Artist CRUD](/api-reference/artists/list), [sandboxes](/api-reference/sandboxes/list), [sessions](/api-reference/sessions/get), [scheduled tasks](/api-reference/tasks/get), [account/org management](/api-reference/accounts/id), [agent signup](/api-reference/agents/signup), [Spotify proxies](/api-reference/spotify/search), etc. Subscription gating may still apply. |

Expand Down Expand Up @@ -248,8 +248,8 @@ Current as of this revision of the page. The authoritative source is the per-end
| [`POST /api/research/deep`](/api-reference/research/deep) | \$0.25 per call |
| [`POST /api/image/generate`](/api-reference/image/generation) | Per-call price; see endpoint reference |
| [`POST /api/songs/analyze`](/api-reference/songs/analyze) | `$0.05 + $0.001166 × elapsed_seconds` per model call; `full_report` = 13 calls |
| [`POST /api/songs/analyze/batch`](/api-reference/songs/analyze-batch) | `$0.05 + $0.001166 × elapsed_seconds` once per batch, `elapsed_seconds` being the whole batch; pending release |
| [`POST /api/songs/moments`](/api-reference/songs/moments) | `$0.01` per song measured, plus `$0.05 + $0.001166 × elapsed_seconds` per moment described; pending release |
| [`POST /api/songs/analyze/batch`](/api-reference/songs/analyze-batch) | `$0.05 + $0.001166 × elapsed_seconds` once per batch, `elapsed_seconds` being the whole batch |
| [`POST /api/songs/moments`](/api-reference/songs/moments) | `$0.01` per song measured, plus `$0.05 + $0.001166 × elapsed_seconds` per moment described |

## Billing recovery and units

Expand Down
Loading
Loading