Skip to content

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.

POST/api/v1/legal_acceptance

Records 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-Key required
  • Modes: Test and live
  • Authentication: API key with the org:write scope
  • Since: M12

Request

Body

A JSON object (Content-Type: application/json):

FieldTypeRequiredDescription
documentone of terms, dpaYes
versionstringYes

Response

200 OK with a JSON object:

FieldTypeDescription
object"legal_acceptance"
organizationIdorg_… ID
actionRequiredboolean
updateAnnouncedboolean
documentsarray of object
documents[].documentone of terms, dpa
documents[].titlestring
documents[].statusone of accepted, update_announced, acceptance_required, not_accepted, not_applicable
documents[].acceptedVersionstring or null
documents[].acceptedAtdate-time or null
documents[].currentobject
documents[].current.versionstring
documents[].current.effectiveDatestring
documents[].current.statusone of draft, approved
documents[].current.urlstring
documents[].current.versionUrlstring
documents[].upcomingobject or null
documents[].acceptableVersionsarray of string

Examples

Accept the DPA before going live

HTTP
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):

JSON
{
  "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

CodeHTTP statusWhenWhat to do
legal_version_not_acceptable400The 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_denied403You 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_failed400The document isn't terms or dpa, or the version is missing.Fix the fields listed in details.issues and send the request again.
version_conflict409The 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.