Changelog
API version history and updates
v1.9 — Current
October 1, 2026
New
- Reimagine and Remove vocals. Upload a song you have the rights to — as a file or a URL — with
POST /v1/songs/uploads.POST /v1/reimagine(2 credits: 1 to transcribe the upload, 1 for the first render; 2 for each render after that) writes and performs a new track from its lyrics in a style you choose;POST /v1/remove-vocals(1 credit) returns the recording without the singing. Uploads need an explicit rights confirmation from your end user, are capped at 10 an hour and 30 a day, are kept for 24 hours, and the tracks you make are private to your account. See the Reimagine & Remove vocals guide. GET /v1/songs/uploads/:idreturns the lyrics we heard, with the words we weren't sure of listed inlowConfidenceWords.GET /v1/songs/configreturns prices, limits, upload caps and the current rights statements.GET /v1/templateslists the curated styles.
Changed
GET /v1/generationsacceptstype=reimagineandtype=remove_vocals.- Webhook payloads for Reimagine and Remove vocals tracks carry a
typefield.
v1.8
September 2, 2026
New
- Request a certificate at generation time.
POST /v1/generationsandPOST /v1/instrumentalaccept a new optionalcertificateboolean. Set it totrueand we issue the generation certificate the moment the track completes, then deliver its number, its public verification URL and a download URL for the PDF on your webhook. The202response echoes the flag back. - New Certificates guide. Covers the two supported workflows — keep your tracks and request the PDF whenever you like, or delete your tracks and archive the PDF when the webhook arrives — plus the webhook payload and the recommended automation pattern.
Changed
- The certificate endpoints are now
/certificate.GET /v1/generations/:id/licenseis nowGET /v1/generations/:id/certificate, and the same for sound effects. The document is a provenance attestation and grants no licence, so the old name was misleading. The old paths keep working — nothing you have already written needs changing.
Notes
- Fully backwards compatible. Omitting
certificate, or sendingfalse, behaves exactly as before, and both/licensepaths stay registered. certificatemust be a real JSON boolean — the string"true"is read as "no certificate". Checkdata.certificateon the202to confirm what we accepted.- Certificates are free: requesting one never costs a credit, and one that fails to issue arrives as
certificate: nullwithout ever holding up delivery of the track. - The download URL has no expiry, but it works only while the generation exists. Once you delete the track it returns
404, and after the 30-day retention window the certificate can no longer be produced. The public verification URL, built from the certificate number, keeps working regardless. - The download endpoint requires the
X-API-Keyheader, so it is not clickable in a browser — it is an endpoint for automation. To eyeball a certificate, open itsverifyUrl. POST /v1/sound-effectsdoes not take the flag; sound-effect certificates are always fetched on demand.
v1.7
August 13, 2026
New
- Vocal gender on music generation.
POST /v1/generationsaccepts a new optionalvocalGenderfield —auto(default),female, ormale— steering the singing voice on tracks that havelyrics.
Notes
- Fully backwards compatible. Omitting the field, or sending
auto, behaves exactly as before. data.promptin the response echoes the prompt actually used, which includes the vocal phrasing whenvocalGenderwas set. Store it if you want to reproduce a track exactly.- Feeding a returned
promptback in astagswith a differentvocalGenderreplaces the previous phrasing rather than stacking it, so the two can never conflict. - It is a strong steer, not a guarantee: in blind testing the requested gender was never inverted, but a small share of takes come out too indistinct to call. Re-generating with a different
seedusually resolves it.
v1.6
August 7, 2026
New
- Generation certificates. Every completed track and sound effect on a paid plan now has a downloadable PDF generation certificate — a formal, single-page document issued by Riku AI LLC confirming the work was generated by you on Finetuning, with your prompt, settings, and the AI model. Finetuning claims no ownership of generated works; all rights stay with the creator. Two new endpoints return the PDF binary:
GET /v1/generations/:id/license(now/certificate) — certificate for a music or instrumental trackGET /v1/sound-effects/:id/license(now/certificate) — certificate for a sound effect
- Public certificate verification. Every certificate carries a permanent number and a public verification page at
https://finetuning.ai/verify/<number>— anyone can confirm it, no account or API key needed.
Notes
- Certificate downloads use the blanket 60/min/user read limit. The certificate number and issue date are permanent — repeat downloads return the same certificate, and renaming a track refreshes the PDF on the next download without changing its number.
- Certificates require a Plus, Pro, or Lifetime plan (
PAID_PLAN_REQUIREDon free accounts) and acompletedwork (NOT_READYotherwise).
v1.5
July 2, 2026
New
- Zapier: instrumental & sound-effect generation. The Zapier integration gained two actions — Create Instrumental Track and Create Sound Effect — plus a Find Sound Effect by ID search to fetch the finished clip. The New Completed Track trigger fires for instrumental tracks too (they share the music library).
Notes
- No API changes in this release — the Zapier actions wrap the existing
POST /v1/instrumentalandPOST /v1/sound-effectsendpoints.
v1.4
June 25, 2026
New
- Instrumental generation is now on the API.
POST /v1/instrumentalcreates a vocal-free track from a plain text description — the model picks the instrumentation and tempo, so there's no BPM, key, scale, or time signature to set. Instrumentals draw from the same monthly credit pool as music. typefilter and field on generations reads.GET /v1/generationsaccepts?type=musicor?type=instrumental, and both the list and detail responses now include atypefield. Instrumental tracks live in the same store as music — there is noGET /v1/instrumental.ftCLI gained instrumental and sound-effect commands.ft instrumental(aliasft inst) generates a track and reusesft get/ft download/ft list --type instrumentalfor reads. The newft sfxgroup (generate,list,get,download) covers sound effects. See the command reference.
Notes
- Each create endpoint — music, instrumental, and sound effects — has its own 10/min/user burst limit (
GENERATION_RATE_LIMITED). Reads stay on 60/min/user. - When read back, an instrumental track's
parameters.bpm,parameters.keyscale, andparameters.timesignaturearenull;durationandseedare present.
v1.3
New
- Sound effects are now on the API. Generate short AI sound effects (1–8 s) with three new endpoints:
POST /v1/sound-effects— generate a sound effectGET /v1/sound-effects— list your sound effectsGET /v1/sound-effects/:id— get one sound effect (poll for completion)
POST /v1/sound-effectsaccepts an optionalwebhookURL — we POST the finished (or failed) clip to your endpoint, just like music. See Webhooks.
Notes
- Sound effects are metered by a shared daily cap of 100 per UTC day — API and web-app generations draw from the same pool. Every create response returns
dailyRemaining; exceeding it returnsDAILY_LIMIT_REACHED. See Rate Limits. - Creation has its own burst limit of 10/min/user (
GENERATION_RATE_LIMITED), separate from music. Reads stay on the 60/min/user limit. - Sound effects carry no musical parameters, so the webhook payload's
parametersfield isnullfor SFX.
v1.2
New
- Bulk track deletion.
POST /v1/generations/bulk-deletepermanently deletes up to 100 tracks in one request, with per-item success/error reporting. See Bulk delete. - Playlists are now on the API. Five new endpoints:
GET /v1/playlists— list your playlistsGET /v1/playlists/:id— get a playlist with its tracksPOST /v1/playlists/:id/tracks— add up to 100 tracksPOST /v1/playlists/:id/tracks/bulk-remove— remove up to 100 tracksPOST /v1/playlists/:id/tracks/move— move up to 100 tracks to another playlist
- All bulk endpoints share the same model: 100 IDs max per request, partial success (one bad ID doesn't fail the batch), and a per-item
errorsarray. New error codesADD_FAILEDandMOVE_FAILEDare returned when zero items in a batch succeed. See Errors.
Notes
- Playlist privacy rules are enforced server-side: public playlists may only contain public tracks, and private playlists may only contain your own tracks. The API never changes a track's visibility for you.
- A bulk request counts as one request against the 60/min rate limit, regardless of how many IDs it carries.
- The
ftCLI supports all five endpoints:ft delete,ft playlists, andft playlist add / remove / move. See the command reference.
v1.1
New
- Zapier integration (private beta). Connect Finetuning to 8,000+ apps — auto-generate tracks and route finished MP3s anywhere, no code. See Zapier.
POST /v1/generationsaccepts awebhookURL — we POST the completed (or failed) track to your endpoint, so you don't have to poll. See Webhooks.tagsmaximum increased from 500 → 700 characters.durationrange widened from 10–180 → 5–210 seconds (free tier remains capped at 120).
Changed
POST /v1/generationsnow returns202 Accepted(previously201 Created).- Rate limiting on
POST /v1/generationsis now reported separately asGENERATION_RATE_LIMITED(10/min/user);RATE_LIMITEDcontinues to cover read endpoints (60/min/user). See Rate Limits.
v1.0
Base URL: https://pub.finetuning.ai
Endpoints
GET /v1/me— Account info and credit balancePOST /v1/generations— Create a new music generationGET /v1/generations— List your generationsGET /v1/generations/:id— Get generation details
Features
- Text-to-music generation with customizable parameters
- Tag-based genre and mood guidance
- BPM, key, scale, and energy controls
- Credit-based billing
- Rate limiting with standard headers
More endpoints and features are coming soon — stay tuned!