Get a legal hold

⚠️
Preview — this feature is being built; the design below is the spec.
GET https://app.syntic.ai/v1/compliance/legal_holds/{hold_id}

Return one hold with the number of records it currently preserves.

For how this fits into a full workflow, see Compliance API.

Headers

HeaderRequiredValue
AuthorizationYesBearer <admin key>: an Admin API key (sk_admin_...) that carries the compliance:read scope (plus compliance:write for deletions and holds). Enterprise plans only. See Compliance API.
syntic-betaYes, while in previewcompliance-2026-12-01. Without it the call fails with 400 beta_required. See Versioning.

Path parameters

ParameterTypeDescription
hold_idstringStarts with hold_.

Response

200 OK, Content-Type: application/json

{
  "id": "hold_01JD02A4C6E8G0J2L4N6",
  "type": "legal_hold",
  "name": "Matter 2026-117",
  "user_ids": [
    "user_01J9Y0A2C4E6G8J0L2N4"
  ],
  "kinds": [
    "chats",
    "projects",
    "code_sessions",
    "files"
  ],
  "starting_at": "2026-06-01T00:00:00Z",
  "ending_at": null,
  "status": "active",
  "created_by": "adminkey_01JC0Z2B4D6F8H0K2M4P",
  "created_at": "2026-11-05T10:00:00Z",
  "released_at": null,
  "preserved": {
    "chats": 412,
    "projects": 3,
    "code_sessions": 58,
    "files": 120
  }
}
FieldTypeDescription
kindsarrayRecord kinds kept under hold.
ending_atstring or nullnull covers records created up to the moment the hold is released.
statusstringactive or released. While active, matching records are not deleted by retention, by the person, or by the delete calls above.

Examples

curl -sS "https://app.syntic.ai/v1/compliance/legal_holds/hold_01JD02A4C6E8G0J2L4N6" \
  -H "Authorization: Bearer $SYNTIC_ADMIN_KEY" \
  -H "syntic-beta: compliance-2026-12-01"

Errors

Errors use the error envelope and carry a request_id. Codes specific to this operation:

StatustypecodeWhen
400invalid_request_errorbeta_requiredThe syntic-beta header is missing.
404not_found_errorlegal_hold_not_foundNo hold with this id.
401authentication_errorinvalid_api_keyThe admin key is missing, unknown, revoked or expired.
403permission_erroradmin_key_requiredAn inference key was used.
403permission_errorscope_missingThe admin key lacks the compliance:read (or, for writes, compliance:write) scope.
429rate_limit_errorrate_limitedToo many requests; wait for Retry-After. See Rate-limit headers.
Was this page helpful?