Skip to main content
POST

Authorizations

Authorization
string
header
required

API key authentication. Send your raw API key as the Authorization header value with NO scheme prefix — Authorization: YOUR-API-KEY. Do NOT prefix it with Bearer or ApiKey, and do not use an X-API-Key header; those are not accepted.

Headers

Idempotency-Key
string

Optional key that makes a retry of this operation safe. Send a new value, 1 to 255 printable ASCII characters, for each intended operation, and send the same value with the same request when you retry it. A committed attempt reserves the key for 30 days from admission; retries do not extend that window. After 30 days the same key runs as a new request, even if its body differs. Within that window, a retry after the first request completed returns the original resource or run identity with the same status and response shape, without starting another operation. A failure before the intent commits stores nothing; after an external effect fails, a retry may resume that same committed intent. Keys belong to the credential, so another API key, even one the same user created, cannot replay them. Within 30 days, reusing a key with a different request returns 422 IDEMPOTENCY_KEY_REUSED; an invalid key returns 400 INVALID_IDEMPOTENCY_KEY. The key is compared exactly, so case and surrounding spaces count.

Required string length: 1 - 255
Pattern: ^[\x20-\x7E]{1,255}$

Path Parameters

companyId
string<uuid>
required

Company identifier

Query Parameters

entityType
enum<string>
required

Parent entity type (lowercase kebab-case URL slug), e.g. event, exposure, policy. Selects the per-entity permission enforced for the request and scopes the note to its parent entity. PascalCase (Event) is rejected with a 400 — matching the /entities/{type} path convention.

Available options:
event,
exposure,
quote,
submission,
person,
organization,
policy

Body

application/json
entityId
string<uuid>
required

Parent entity identifier

note
string
required

The note body (must not be empty)

displayDate
string<date-time>

Optional back-datable "as of" ISO 8601 timestamp. When set, lists display and sort the note by this date instead of createdAt — intended for historical imports and integrations. The audit timestamps and creator attribution stay server-set.

displayAuthor
string

Optional user-visible author label (trimmed; must be non-empty). When set, the note is displayed as authored by this label instead of the creator's name — intended for historical imports carrying the source system's author (or a marker like "Data Import"). Audit attribution stays server-set.

Maximum string length: 255
privileged
boolean
default:false

Mark the note privileged so only holders of note.view-privileged can see or act on it.

Response

Note created successfully

id
string<uuid>

The ID of the created note