# Changelog

Changes to the API, webhooks and the connect page. Additive changes ship in v1; anything breaking gets a new version.

## How we version

- The version is in the path: `https://api.apexly.dev/v1`.
- v1 only grows. New fields, new endpoints, new events, new error codes and new status reasons can appear at any time, so ignore fields you don't know and treat unknown `status_reason` and `error.code` values as "see the docs URL".
- A breaking change ships as `/v2`, with both versions running for 12 months.
- The [OpenAPI document](https://api.apexly.dev/v1/openapi.json) is the source of truth for every field.

## October 2026 · v1 private beta

The first public version of the API.

- **Domains**: create, read, list (filter by status, hostname prefix or metadata), verify now, delete. Subdomains via one CNAME, apex domains via A + TXT, optional `apex_redirect` to `www`.
- **Domain states**: `pending_dns`, `verifying`, `issuing`, `active`, `dns_broken`, `cert_failed`, `expired`, `held`, `deleted`, each with a `status_reason` and a [troubleshooting page](/docs/troubleshooting/dns_record_missing).
- **Webhooks**: nine events, signed with `Apexly-Signature`, retried seven times over 24 hours, redeliverable from `POST /v1/events/{id}/redeliver`. Signing secrets rotate with a 24-hour overlap.
- **Origin requests**: original `Host`, `X-Forwarded-Proto`, and `X-Apexly-Domain-Id`, `X-Apexly-App-Id`, `X-Apexly-Timestamp`, `X-Apexly-Signature` on every request.
- **Connect page**: a hosted page per domain that detects the customer's DNS provider, shows the record with their provider's steps, and emails them when the domain is live.
- **White-label**: your own CNAME target host on Growth and above.
- **Test mode**: test keys, test domains on a ten-second timer, and the sandbox origin.
- **Errors**: every error carries `code`, `message`, `fix` and a `docs` link to its [page](/docs/errors/validation_failed).

- [Quickstart](/docs/quickstart)
- [Webhooks](/docs/webhooks)
- [Limits and pricing](/docs/limits-and-pricing)
