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/historyAuthentication: Authorization: Bearer <api-key>
Response
{
"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/:typeAuthentication: 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-Status—PENDINGorACCEPTEDX-Template-Version— the template version this instance was generated fromX-Accepted-At— ISO timestamp of acceptance (only present whenACCEPTED)
Errors
| Status | Code | When |
|---|---|---|
400 | VALIDATION_FAILED | :type is not a valid document type |
401 | UNAUTHORIZED | Missing or invalid API key |
404 | AGREEMENT_NOT_FOUND | No template has been published yet for this type |
429 | TOO_MANY_REQUESTS | Rate 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/agreementsis called — no separate step is needed to "request" a document. - Viewing the document does not change its status. Call
POST /v1/tenants/agreementsseparately. - All historical instances are preserved — accepting a new version never overwrites the old accepted record.
GET /v1/tenants/agreements/historyreturns the full history per type ordered newest first. - For admin backfill of pre-existing tenants, see
POST /v1/admin/tenants/:id/agreements.