Accept the terms or the DPA
The legal.accept operation: POST /api/v1/legal_acceptance in the REST API and the legal_accept tool in the MCP server.
/api/v1/legal_acceptanceRecords that the organization accepts a version of Ownrecord's Terms of Service (terms) or Data
Processing Agreement (dpa). Read the document first at /legal/{document}/{version}.
version must be the version in effect or an announced newer one (see acceptableVersions in
legal.acceptance_get). Sign-up records the terms; the DPA must be accepted before a brand goes live; a
material change to either is announced 30 days ahead and accepted again by an owner or admin.
Only a person signed in to the console can accept, with org:write (owners and admins). API keys, agents,
apps and OAuth clients can't, and neither can platform staff under a support-access grant. Accepting the
version already accepted changes nothing.
At a glance
- REST:
POST /api/v1/legal_acceptance - MCP tool:
legal_accept - Operation ID:
legal.accept - Scope: Organization
- Permission:
org:write - Risk tier:
write - Dry run: Supported (send
Ownrecord-Dry-Run: true) - Idempotency:
Idempotency-Keyrequired - Modes: Test and live
- Authentication: API key with the
org:writescope - Since: M12
Request
Body
A JSON object (Content-Type: application/json):
| Field | Type | Required | Description |
|---|---|---|---|
document | one of terms, dpa | Yes | |
version | string | Yes |
Response
200 OK with a JSON object:
| Field | Type | Description |
|---|---|---|
object | "legal_acceptance" | |
organizationId | org_… ID | |
actionRequired | boolean | |
updateAnnounced | boolean | |
documents | array of object | |
documents[].document | one of terms, dpa | |
documents[].title | string | |
documents[].status | one of accepted, update_announced, acceptance_required, not_accepted, not_applicable | |
documents[].acceptedVersion | string or null | |
documents[].acceptedAt | date-time or null | |
documents[].current | object | |
documents[].current.version | string | |
documents[].current.effectiveDate | string | |
documents[].current.status | one of draft, approved | |
documents[].current.url | string | |
documents[].current.versionUrl | string | |
documents[].upcoming | object or null | |
documents[].acceptableVersions | array of string |
Examples
Accept the DPA before going live
POST /api/v1/legal_acceptance
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14
Content-Type: application/json
{
"document": "dpa",
"version": "1.0"
}
Response (200):
{
"object": "legal_acceptance",
"organizationId": "org_01m4tx5nj7ekd958x53w4bntcg",
"actionRequired": false,
"updateAnnounced": false,
"documents": [
{
"document": "terms",
"title": "Terms of Service",
"status": "accepted",
"acceptedVersion": "1.0",
"acceptedAt": "2026-10-26T09:30:00.000Z",
"current": {
"version": "1.0",
"effectiveDate": "2026-10-26",
"status": "draft",
"url": "/legal/terms",
"versionUrl": "/legal/terms/1.0"
},
"upcoming": null,
"acceptableVersions": ["1.0"]
},
{
"document": "dpa",
"title": "Data Processing Agreement",
"status": "accepted",
"acceptedVersion": "1.0",
"acceptedAt": "2026-10-27T10:00:00.000Z",
"current": {
"version": "1.0",
"effectiveDate": "2026-10-26",
"status": "draft",
"url": "/legal/dpa",
"versionUrl": "/legal/dpa/1.0"
},
"upcoming": null,
"acceptableVersions": ["1.0"]
}
]
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
legal_version_not_acceptable | 400 | The version isn't the one in effect or an announced newer one. | Accept the version in effect, or an announced newer version. details.acceptable lists the versions you can accept; read them at /legal/{document}/{version}. |
permission_denied | 403 | You aren't an owner or admin signed in to the console, or this is the platform organization. | Ask an organization owner or admin for a role or scope that allows this action. |
validation_failed | 400 | The document isn't terms or dpa, or the version is missing. | Fix the fields listed in details.issues and send the request again. |
version_conflict | 409 | The organization changed at the same time; retry. | Fetch the object again and retry the change. |
It can also return these common errors: api_version_unsupported, invalid_json, unsupported_media_type, authentication_required, api_key_invalid, resource_not_found, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, approval_required, approval_rejected, approval_expired, stale_approval, approval_policy_denied, rate_limited, internal_error.