The getsorted API takes a short set of answers about a business and returns a personalised report across 27 UK regulations. Built for company formation platforms that want to hand every new company a clear compliance starting point, under their own brand.
Request a pilot key →Organic use of the report endpoint needs no key. Partner requests are identified by a partner_id and authenticated with an x-api-key header. Keys are issued by hand.
Pilots are free for 90 days. After that, access is a flat monthly licence. There is no per-call metering to reason about.
x-api-key: your-partner-key
Liveness check. No authentication.
{ "status": "ok", "version": "0.2.0" }
Returns the list of questions, including any show_if gate that controls when a question applies.
[
{
"id": "collects_personal_data",
"text": "Does your business collect or store any personal data?",
"help": "Names, emails, contact form submissions, and similar.",
"show_if": null
}
]
Generates a report. Send the answers you have collected. Missing answers are treated as unknown and never assumed.
{
"answers": {
"collects_personal_data": true,
"has_website": true,
"employs_people": false
},
"company": { "name": "Acme Ltd", "sic_code": "62010" },
"partner_id": "default",
"context": "checker"
}
| Field | Type | Notes |
|---|---|---|
| answers | object | Map of question id to true or false. Required. |
| company | object | Optional. name, companies_house_number, sic_code. A SIC code pre-fills sector answers, which user answers then override. |
| partner_id | string | Defaults to "default". Any other value requires a matching x-api-key. |
| context | string | "checker" or "start". Controls which partner offers may appear. |
{
"company": { "name": "Acme Ltd" },
"summary": {
"action_needed": 6,
"worth_checking": 4,
"looks_good": 9,
"not_applicable": 2,
"total": 21
},
"cards": [
{
"id": "ico_registration",
"title": "ICO Registration",
"status": "action_needed",
"severity": "high",
"regulation": "Data Protection (Charges and Information) Regulations 2018",
"summary": "Most businesses that process personal data must register with the ICO and pay an annual fee.",
"risk": "Fine up to GBP 4,350 for failure to register or renew.",
"action": "Register at ico.org.uk. GBP 52 per year for micro-organisations.",
"guidance_url": "https://ico.org.uk/for-organisations/data-protection-fee/",
"card_version": "1.0.0",
"card_reviewed": "2026-06-25",
"offers": []
}
]
}
| Card field | Type | Notes |
|---|---|---|
| status | string | action_needed, worth_checking, looks_good, or not_applicable. |
| offers | array | Partner links. Empty for partner traffic by default (see below). |
| card_version | string | Content version. card_reviewed is the last review date. |
Cards are sorted action_needed first, then worth_checking, looks_good, and not_applicable.
Generates a report and emails it. Requires consent and a valid email address. The email is sent via Resend.
{
"email": "founder@example.com",
"consent": true,
"answers": {
"collects_personal_data": true,
"has_website": true,
"employs_people": false
},
"company": { "name": "Acme Ltd", "sic_code": "62010" },
"partner_id": "default",
"context": "checker"
}
| Field | Type | Notes |
|---|---|---|
| string | Email address to send to. Required. | |
| consent | boolean | Must be true to send. Required. |
| answers | object | Map of question id to true or false. Required. |
| company | object | Optional. name, companies_house_number, sic_code. |
| partner_id | string | Defaults to "default". Any other value requires a matching x-api-key. |
| context | string | "checker" or "start". |
{ "status": "sent" }
On error (invalid email, missing consent, too many answers): returns 400 with a plain-English detail message.
The same engine is also exposed as a free public MCP server for AI assistants (Claude, Cursor, VS Code and others). No key needed. See the MCP server page for install commands.
A machine-readable OpenAPI spec for the REST endpoints is at https://api.getsorted.today/api/openapi.json.
Each partner_id resolves to a profile. Partner profiles have offers switched off by default, so getsorted's own commercial links never appear in front of your customers. You keep your own banking, insurance and accounting relationships. The offer slots are yours to fill.
Profiles can also carry a display name for light white-labelling, so the report reads under your brand.
/api/v2, never in place.card_version and a card_reviewed date, so you can see how current the guidance is.