# API Changelog

This page tracks changes to the Lathe Studio API. We follow a **6-month deprecation window** for breaking changes — deprecated endpoints and fields remain functional for at least 6 months after the deprecation notice, with a sunset date published in advance.

* * *

## [v1.0.0 — March 2026](/content/docs/resources/changelog#v100-march-2026/index.html)

**Initial API release.**

### Endpoints

- `POST /api/v1/builds` — Create a build from your CI/CD pipeline
- `GET /api/v1/builds` — List builds with pagination and filtering
- `GET /api/v1/testruns/{id}` — Get a test run by ID
- `GET /api/v1/testruns/{id}/results` — Get execution results for a test run
- `POST /api/v1/results/ingest` — Ingest automated test results from CI/CD pipelines
- `GET /api/v1/projects` — List projects
- `GET /api/v1/projects/{id}/testcases` — List test cases (for automation framework sync)
- `GET /api/v1/releases/{id}/progress` — Release readiness summary
- `GET /api/v1/organizations` — List organizations
- `GET /api/v1/events` — Discover supported webhook event types
- `GET /api/v1/openapi` — OpenAPI spec discovery (redirects to `/openapi.json`)

### Authentication

- API key authentication (Bearer token, `pt_live_<hex>` format)
- Scope-based access control:
  - `builds:read`, `builds:create`, `builds:update`
  - `testruns:read`, `testruns:create`
  - `results:read`, `results:submit`
  - `projects:read`

* * *

## [v1.1.0 — May 2026](/content/docs/resources/changelog#v110-may-2026/index.html)

### Endpoints

- `GET /api/v1/testruns` — List test runs
- `POST /api/v1/testruns` — Create a test run via API
- `POST /api/v1/testruns/{id}/results` — Submit automation results directly to a test run
- `GET /api/v1/webhooks` — List webhook subscriptions
- `POST /api/v1/webhooks` — Create webhook subscription
- `DELETE /api/v1/webhooks/{id}` — Delete webhook subscription

### Webhooks

Outgoing webhooks are now live on Pro (up to 5 endpoints) and Enterprise (unlimited) plans.

Subscribable events:

- `build.created.v1` — New build created (UI or API)
- `testrun.created.v1` — New test run created
- `testrun.submitted.v1` — Test run submitted
- `testrun.completed.v1` — Test run marked completed
- `testcase.failed.v1` — Test case execution records a fail
- `release.released.v1` — Release status changes to completed

Features:

- HMAC-SHA256 signature verification (`X-Perpetual-Signature` header)
- Automatic retries with exponential backoff (5 attempts over ~14 hours)
- Delivery log stored for audit and debugging

* * *

## [Breaking Change Policy](/content/docs/resources/changelog#breaking-change-policy/index.html)

We take backward compatibility seriously. Before making any breaking change:

1. A **deprecation notice** is published in this changelog and announced via email to billing owners
2. The deprecated behavior remains functional for a minimum of **6 months**
3. A **sunset date** is published at least 60 days in advance
4. After sunset, the old behavior is removed in a minor version increment

**What counts as a breaking change:**

- Removing an endpoint
- Removing a required or optional request field
- Changing the type of a response field
- Changing the meaning of an error code
- Removing a scope

**What does NOT count as a breaking change:**

- Adding new optional request fields
- Adding new response fields
- Adding new endpoints
- Adding new error codes
- Adding new webhook event types
- Fixing incorrect behavior that was clearly a bug

* * *

## [Versioning](/content/docs/resources/changelog#versioning/index.html)

The API uses URL path versioning: `/api/v1/`, `/api/v2/`, etc.

Within a major version, all changes are backward-compatible. A new major version (e.g., `/api/v2/`) is only released for breaking changes, and both versions are supported simultaneously for at least 12 months.
