What changed in the public API — endpoints, request and response schemas, authentication, error codes, plans, quotas and the base URL. Generated from the contract itself; edit the contract, never this file.
A release that moved none of those things moved nothing you can observe, so it gets no entry here.
POST /v1/keysrequest: addedsource,source.source,source.medium,source.campaign,source.content.
- Python client SDK updated.
- TypeScript client SDK updated.
POST /v1/keysdescription revised.- Contract version
1.0.0(was0.1.0).
- Python client SDK updated.
- TypeScript client SDK updated.
GET /v1/usagedescription revised.
POST /v1/keysnow answers202on success (was201).POST /v1/keys/claimnow answers201on success (was200).POST /v1/keys/{id}/rotatenow answers201on success (was200).GET /v1/subscriptionresponse:planChangesGoThroughacceptsprovider_managed.POST /v1/subscription/cancelresponse: addedfinalInvoice.
POST /api/billing/webhooknow requires a signed request. Callers without one are rejected.GET /v1/subscriptionnow requires a signed-in dashboard session. Callers without one are rejected.POST /v1/subscription/plannow requires a signed-in dashboard session. Callers without one are rejected.POST /v1/subscription/cancelnow requires a signed-in dashboard session. Callers without one are rejected.GET /v1/invoicesnow requires a signed-in dashboard session. Callers without one are rejected.GET /v1/paymentsnow requires a signed-in dashboard session. Callers without one are rejected.
- Python client SDK updated.
- TypeScript client SDK updated.
POST /v1/checkoutdescription revised.GET /v1/subscriptiondescription revised.POST /v1/subscription/plandescription revised.POST /v1/subscription/canceldescription revised.
- Added
GET /v1/subscription— Your current plan, billing window and available changes (dashboard session required) (no API key required) - Added
POST /v1/subscription/plan— Upgrade or downgrade to another plan (dashboard session required) (no API key required) - Added
POST /v1/subscription/cancel— Cancel this plan and end metered access (dashboard session required) (no API key required) - Added
GET /v1/invoices— Every invoice issued against this account, newest first (dashboard session required) (no API key required) - Added
GET /v1/payments— Every payment attempted against this account and how it went (dashboard session required) (no API key required)
- Python client SDK updated.
- TypeScript client SDK updated.
- Added
GET /v1/keys— List your API keys for this API - Added
POST /v1/keys/claim— Exchange an emailed claim token for the API key (no API key required) - Added
POST /v1/keys/{id}/revoke— Revoke one of your API keys - Added
POST /v1/keys/{id}/rotate— Replace one of your API keys with a new secret
POST /v1/keysrequest: addedname.POST /v1/keysresponse: addedstatus,email,expiresAt,next,message; removedapiKey,accountId,product,quotaPerPeriod,plan,warning,usage.
- Base URL is
https://controlgraph-api.com. A client generated from an earlier copy of this contract points elsewhere and must be regenerated.
- Python client SDK updated.
- TypeScript client SDK updated.
POST /v1/keyssummary and description revised.
- Added
GET /v1/usage— Your consumption and remaining allowance for this period
- Plans published. Billed per mapped change.
| Plan | Per month | Included mapped changes | Additional | Overage cap |
|---|---|---|---|---|
| Developer | $499 | 500 | $1.50 each | $1,000 |
| Growth | $1,999 | 2,500 | $1.10 each | $4,000 |
| Scale | $5,000 | 8,000 | $0.80 each | $10,000 |
| Enterprise | $10,000 | 25,000 | $0.50 each | $20,000 |
- TypeScript client SDK updated.
- First published contract, 8 operations:
GET /health— Liveness and deployed version (no API key required)GET /— Service index — endpoints, auth and error format (no API key required)POST /v1/changes— Map regulatory changes onto your obligations, controls, evidence and deadlinesPOST /v1/demo/map— Public demo — map one change with no API key (no API key required)GET /v1/obligation-types— The code catalogue: obligation types, evidence kinds, findings and the priority weights (no API key required)POST /v1/checkout— Start a hosted Square checkout for a paid tier (no API key required)POST /api/billing/webhook— Square billing events, forwarded by the shared hub (no API key required)POST /v1/keys— Create a free sandbox API key (no API key required)
- Keys are sent as
bearerauthorization, or as thex-api-keyheader.
- Errors return a machine-readable
error.code:invalid_api_key,missing_api_key,quota_exceeded,rate_limited,invalid_request,not_found,method_not_allowed,payload_too_large,conflict,internal_error.
- Free sandbox keys allow 50 mapped changes per period, no card required.
- Python client SDK published.
- TypeScript client SDK published.
Derived from the published API contract, the plan catalog, the free sandbox allowance and the client SDKs, as each of them changed. Every headline above is built from the entries beneath it. Dates are the dates the change shipped. Base-URL entries name only origins the API is actually served on: a loopback or platform-assigned host is written before the product domain is attached and was never an address anyone integrated against.