# Versioning & changelog
URL: https://skedcast.com/developers/changelog

The public API is versioned in the path (/v1) and evolves additively. We add fields and endpoints without bumping the version; breaking changes ship under a new version with a deprecation window.

## Stability promise
Within /v1 you can rely on:
- New optional fields and endpoints may be added at any time — handle unknown fields gracefully.
- Existing field names, types, and enum values won't change meaning under /v1.
- Breaking changes ship as a new version (/v2) with advance notice and an overlap period.
- Error codes are stable identifiers — branch on code, not on title or detail text.

## Releases
2026-09 — additive: media assets now carry `ready` (an alias of `publishable`, under the name pollers reach for first), and post targets carry `permalink` alongside `externalId` on both `GET /posts/:id` and `GET /post-targets/:id`. SkedCast now stores the URL each platform reports at publish time, so `permalink` is populated on TikTok, Instagram and Threads too — and Telegram private channels and Facebook Stories, which previously had no retrievable link. No existing field changed.
2026-07 — post lifecycle (PATCH a draft; reschedule / cancel / retry / bulk on post targets), event-driven webhooks (HMAC-signed deliveries), OAuth token revocation (RFC 7009), and an `update_post` MCP tool.
2026-06 — v1 launch: posts, clients, accounts, agency, analytics (incl. per-entity drill-downs), reports, best-times, and media; API keys with rotation; OAuth 2.1 (PKCE + DCR); the remote MCP server.

## FAQ
**Q: How will I be told about breaking changes?**
A: Breaking changes only land in a new version path. We announce deprecations ahead of time and keep the previous version running through an overlap window.
