Finetuning.aiFinetuning.ai

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/:id returns the lyrics we heard, with the words we weren't sure of listed in lowConfidenceWords.
  • GET /v1/songs/config returns prices, limits, upload caps and the current rights statements.
  • GET /v1/templates lists the curated styles.

Changed

  • GET /v1/generations accepts type=reimagine and type=remove_vocals.
  • Webhook payloads for Reimagine and Remove vocals tracks carry a type field.

v1.8

September 2, 2026

New

  • Request a certificate at generation time. POST /v1/generations and POST /v1/instrumental accept a new optional certificate boolean. Set it to true and 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. The 202 response 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/license is now GET /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 sending false, behaves exactly as before, and both /license paths stay registered.
  • certificate must be a real JSON boolean — the string "true" is read as "no certificate". Check data.certificate on the 202 to confirm what we accepted.
  • Certificates are free: requesting one never costs a credit, and one that fails to issue arrives as certificate: null without 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-Key header, so it is not clickable in a browser — it is an endpoint for automation. To eyeball a certificate, open its verifyUrl.
  • POST /v1/sound-effects does 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/generations accepts a new optional vocalGender field — auto (default), female, or male — steering the singing voice on tracks that have lyrics.

Notes

  • Fully backwards compatible. Omitting the field, or sending auto, behaves exactly as before.
  • data.prompt in the response echoes the prompt actually used, which includes the vocal phrasing when vocalGender was set. Store it if you want to reproduce a track exactly.
  • Feeding a returned prompt back in as tags with a different vocalGender replaces 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 seed usually 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 track
    • GET /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_REQUIRED on free accounts) and a completed work (NOT_READY otherwise).

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


v1.4

June 25, 2026

New

  • Instrumental generation is now on the API. POST /v1/instrumental creates 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.
  • type filter and field on generations reads. GET /v1/generations accepts ?type=music or ?type=instrumental, and both the list and detail responses now include a type field. Instrumental tracks live in the same store as music — there is no GET /v1/instrumental.
  • ft CLI gained instrumental and sound-effect commands. ft instrumental (alias ft inst) generates a track and reuses ft get / ft download / ft list --type instrumental for reads. The new ft sfx group (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, and parameters.timesignature are null; duration and seed are 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 accepts an optional webhook URL — 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 returns DAILY_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 parameters field is null for SFX.

v1.2

New

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 ft CLI supports all five endpoints: ft delete, ft playlists, and ft 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/generations accepts a webhook URL — we POST the completed (or failed) track to your endpoint, so you don't have to poll. See Webhooks.
  • tags maximum increased from 500 → 700 characters.
  • duration range widened from 10–180 → 5–210 seconds (free tier remains capped at 120).

Changed

  • POST /v1/generations now returns 202 Accepted (previously 201 Created).
  • Rate limiting on POST /v1/generations is now reported separately as GENERATION_RATE_LIMITED (10/min/user); RATE_LIMITED continues 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 balance
  • POST /v1/generations — Create a new music generation
  • GET /v1/generations — List your generations
  • GET /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!

On this page