API Docs

API changelog

Breaking changes, additions, deprecations. Scoped to the API surface — the product changelog lives elsewhere.

Overview

What goes here

The product changelogcovers user-facing shipped features — the things you’d tell a customer about. This page tracks API-specific changes: endpoints added, response shapes adjusted, auth flows altered, anything an integrator needs to know about.

Backwards-incompatible changes are extremely rare. We’d version-namespace the API path before breaking an existing client.

Entries

History

May 13, 2026

Documented multi-page reference

No API changes. The OpenAPI spec at https://api.inksong.app/openapi.jsonis byte-identical to yesterday’s.

This is a documentation split: the single /docs page is now nine — one hub plus pages for authentication, documents, voice profiles, webhooks, errors, rate limits, SDKs, and this changelog. Old URLs that pointed at section anchors on the single page now redirect to the matching sub-page.

May 9, 2026

Production API live

First public access to /api/v1/documents/* and /api/v1/voice-profiles/*. Authentication via X-API-Key with ink_live_ prefix.

Rate limits are in place from day one: 20 uploads per hour per authenticated user, 60 reads per minute per IP, 10 auth attempts per minute per IP. Document status enum settled at pending, processing, completed, failed.

May 6, 2026

OpenAPI spec published

The spec at https://api.inksong.app/openapi.json becomes the canonical source-of-truth for endpoints, request shapes, and response shapes. The MDX pages on this site are written by hand, but the spec is generated directly from the FastAPI handlers — if the two disagree, trust the spec.

Generate clients from it with openapi-typescript, openapi-python-client, or whatever your language ecosystem prefers.

Stability

Our commitment

We don’t break v1 endpoints without versioning. New endpoints can land at any time and are non-breaking by definition. Adding a field to an existing response is non-breaking too — your JSON parser should ignore unknown keys. Removing or renaming a field would only happen under a v2 path, announced here, with the old version supported in parallel.