Skip to content

Tenant Agreements

View and accept the personalized agreement instances generated for the authenticated tenant. Each document (Terms of Service, Privacy Policy, DPA) is generated with the tenant's own business name and RUC substituted in at registration time — the stored content is an immutable snapshot of what was in effect when the account was created.

Use Agreement Acceptance to check whether any document needs re-acceptance. Use POST /v1/tenants/agreements (on that same page) to record acceptance.

List documents

GET /v1/tenants/agreements/history

Authentication: Authorization: Bearer <api-key>

Response

json
{
  "ok": true,
  "documents": [
    {
      "id": "00000000-0000-0000-0000-000000000001",
      "documentType": "TERMS",
      "templateVersion": "2026-07-01",
      "status": "ACCEPTED",
      "generatedAt": "2026-07-01T14:00:00.000Z",
      "acceptedAt": "2026-07-01T14:05:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000002",
      "documentType": "PRIVACY",
      "templateVersion": "2026-07-01",
      "status": "ACCEPTED",
      "generatedAt": "2026-07-01T14:00:00.000Z",
      "acceptedAt": "2026-07-01T14:05:00.000Z"
    },
    {
      "id": "00000000-0000-0000-0000-000000000003",
      "documentType": "DPA",
      "templateVersion": "2026-07-01",
      "status": "ACCEPTED",
      "generatedAt": "2026-07-01T14:00:00.000Z",
      "acceptedAt": "2026-07-01T14:05:00.000Z"
    }
  ]
}

Returns all instances across all versions, newest first per type. Status is PENDING (generated, not yet accepted) or ACCEPTED. When a new template version is published, a new PENDING instance appears here after the first call to GET /v1/tenants/agreements or this endpoint.

Get a document (rendered HTML)

GET /v1/tenants/agreements/:type

Authentication: Authorization: Bearer <api-key>

URL parameter: :type must be TERMS, PRIVACY, or DPA.

Returns the tenant's personalized document as a complete, self-contained text/html page (styled, same formal-document formatting as GET /v1/agreements/:type — see its Notes) — the exact content that was stored at generation time, including the tenant's own business name and RUC where applicable (particularly visible in the DPA). A disclaimer notice is prepended pointing to the support inbox for questions before accepting.

Response headers include:

  • X-Document-StatusPENDING or ACCEPTED
  • X-Template-Version — the template version this instance was generated from
  • X-Accepted-At — ISO timestamp of acceptance (only present when ACCEPTED)

Errors

StatusCodeWhen
400VALIDATION_FAILED:type is not a valid document type
401UNAUTHORIZEDMissing or invalid API key
404AGREEMENT_NOT_FOUNDNo template has been published yet for this type
429TOO_MANY_REQUESTSRate limit exceeded

Both endpoints on this page are read-only, so they stay reachable even if the tenant's account is SUSPENDED — see the ACCOUNT_SUSPENDED entry in the error catalogue.

Notes

  • Documents are generated at registration and lazily for any new template version when this endpoint or GET /v1/tenants/agreements is called — no separate step is needed to "request" a document.
  • Viewing the document does not change its status. Call POST /v1/tenants/agreements separately.
  • All historical instances are preserved — accepting a new version never overwrites the old accepted record. GET /v1/tenants/agreements/history returns the full history per type ordered newest first.
  • For admin backfill of pre-existing tenants, see POST /v1/admin/tenants/:id/agreements.

Comprobify API Documentation