A valid request URL is required to generate request examples{
"acceptance": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": 123,
"accepted_at": "2023-11-07T05:31:56Z",
"recorded": true
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Record an agreement from your own sign-up
How an agreement made in your own product is recorded: the sign-up form is yours, so the box was ticked in your app and this is your backend saying so.
The contact comes from the path and the version from the body, and both are resolved inside the key’s environment — a live key asking about a test contact answers 404, and no request field can move the question.
The row is marked source: api, permanently. These are the acceptances whose evidence is yours rather than ours, and a question about how you know somebody agreed has a different answer for them.
Agreeing twice is agreeing once: the acceptance’s own uniqueness makes a replay silent, and the surface’s Idempotency-Key replays the response for a retried request.
A valid request URL is required to generate request examples{
"acceptance": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"slug": "<string>",
"version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"version": 123,
"accepted_at": "2023-11-07T05:31:56Z",
"recorded": true
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Authorizations
An organization API key, uk_sk_live_… or uk_sk_test_…. The environment is resolved from the stored key row on every request, never from a request parameter.
Every route behind this credential is rate limited per key — 1000 requests a minute — with a second ceiling of 3000 a minute across all the keys of one environment, so splitting your traffic across keys isolates it and minting more keys does not buy more of it. A test key can never spend a live key's allowance. Every response carries the current state in headers; see the rate-limits guide.
Headers
A key you choose — a UUID, or your own identifier for the operation — that makes this write safe to retry. Send the same key again and you get the same response back: the same status, the same body, and Idempotent-Replay: true. The handler does not run a second time.
The key is scoped to your API key and the route, so keys never collide between environments or tenants. It is remembered for 24 hours. Reusing it for a different request is refused (422), and a second request arriving while the first is still running is refused too (409) — retry that one in a moment.
A request that failed with a 5xx or was rate limited leaves the key spendable: retry it with the same key.
255Path Parameters
The contact who agreed.
Body
The version in force, from GET /v1/legal/{publishable_key}.
Response
The agreement.
What an acceptance call answers with.
Show child attributes
Show child attributes