Skip to main content
PUT
Create or update annotation by external key

Authorizations

Authorization
string
header
required

Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.

Path Parameters

externalKey
string
required

External key, unique per project. Lowercase letters, digits, ., _ and -, at most 128 characters.

Body

application/json
kind
enum<string>
required

Kind of the annotation.

Available options:
event,
period,
setup,
interpretation,
constraint,
follow-up
headline
string
required

One line saying what the annotation records.

description
string

Optional Markdown body with details.

dateFrom
string

Date in project time: YYYY-MM, YYYY-MM-DD, YYYY-MM-DDTHH or YYYY-MM-DDTHH:MM:SS; the format sets the precision. Required for events and periods, optional for follow-ups (not before), not allowed otherwise.

Pattern: ^\d{4}-\d{2}(-\d{2}(T\d{2}(:\d{2}:\d{2})?)?)?$
Example:

"2026-09-17T09:45:00"

dateTo
string

Last unit a period covers (inclusive), in the same format as dateFrom. Absent means ongoing.

Pattern: ^\d{4}-\d{2}(-\d{2}(T\d{2}(:\d{2}:\d{2})?)?)?$
Example:

"2026-09-21T18:00:00"

approximate
boolean

The date is not exact. Requires a date.

status
enum<string>

Follow-ups only; defaults to open.

Available options:
open,
done
effect
enum<string>

Events and periods only; defaults to context.

Available options:
context,
boundary,
degraded,
broken,
missing
reading
string

Events and periods only. The reading rule this date brings, e.g. "Compare identifier modality only within one side of this date".

scope
object

Narrows what the annotation applies to, by time-series dimension. Absent means the whole project.

series
string[]

Time series the annotation is mainly about, by name. Absent means all.

Maximum array length: 50
display
boolean

False hides the annotation from charts; documents always contain it. Defaults to true, and to false for source system unless an effect other than context is set.

source
enum<string>

Who wrote the annotation. Defaults to manual from the developer panel and agent from an API key.

Available options:
manual,
agent,
system
evidence
enum<string>[]

Kinds of evidence the annotation rests on. Absent means unverified.

Maximum array length: 4

Kind of evidence an annotation rests on.

Available options:
code,
trace,
data,
customer
refs
object[]

External references. Findings and annotations must exist in the project.

Maximum array length: 50
note
string

Note stored in the annotation's history. Required when a follow-up is closed.

Response

Annotation created or updated.

id
string
required

Annotation ID (format ann-<number>).

kind
enum<string>
required

What the annotation records: event something changed, period something held over a span, setup a fact about how the project works, interpretation how to read the data, constraint which data may be used, follow-up an unknown or open work.

Available options:
event,
period,
setup,
interpretation,
constraint,
follow-up
platform
boolean
required

Platform annotation that applies to every project; managed by Corbado.

headline
string
required

One line saying what the annotation records.

approximate
boolean
required

The date is not exact.

display
boolean
required

Shown on charts.

source
enum<string>
required

Who wrote the annotation or made a change.

Available options:
manual,
agent,
system
createdMs
integer<int64>
required

Creation time in milliseconds since epoch.

updatedMs
integer<int64>
required

Last update time in milliseconds since epoch.

description
string

Optional Markdown body with details.

dateFrom
string

Date as stated, in project time (UTC for platform annotations), in the format of its precision.

dateTo
string

Last unit a period covers (inclusive), in the same format. Absent on an ongoing period.

datePrecision
enum<string>

Unit the annotation's dates were stated in.

Available options:
month,
date,
hour,
datetime
dateFromMs
integer<int64>

Start of dateFrom in milliseconds since epoch.

dateToMs
integer<int64>

End of the span (exclusive) in milliseconds since epoch.

status
enum<string>

Where a follow-up stands.

Available options:
open,
done
effect
enum<string>

How an event or period changes the reading of the data: context background only, boundary compare only within one side, degraded data partly wrong, broken data wrong, missing no data.

Available options:
context,
boundary,
degraded,
broken,
missing
reading
string

Reading rule this date brings (events and periods).

scope
object

Narrows what the annotation applies to, by time-series dimension. Absent means the whole project.

series
string[]
Maximum array length: 50
evidence
enum<string>[]
Maximum array length: 4

Kind of evidence an annotation rests on.

Available options:
code,
trace,
data,
customer
refs
object[]
Maximum array length: 50
externalKey
string