---
title: "Create a span note"
method: POST
path: "/v1/span_notes"
tags: ["spans"]
---

# Create a span note

`POST /v1/span_notes`

Add a note annotation to a span. By default each call appends a new note with an auto-generated UUIDv4 identifier, so multiple notes accumulate on the same span. Callers may supply a non-empty `identifier` to upsert on (span_id, name='note', identifier) — repeated calls with the same identifier overwrite the existing note, matching the semantics of structured annotations.

## Request body

- CreateSpanNoteRequestBody
  - `data` SpanNoteData, required
    - `span_id` string, required — OpenTelemetry Span ID (hex format w/o 0x prefix)
    - `note` string, required — The note text to add to the span
    - `identifier` string — Optional caller-supplied identifier. When non-empty, the note is upserted on (span_id, name='note', identifier) — repeated calls with the same identifier overwrite the existing note. When omitted or empty, the server stamps a unique 'px-span-note:<uuid>' identifier so each call appends a new note.

## Response `200`

Span note created successfully

- CreateSpanNoteResponseBody
  - `data` InsertedSpanAnnotation, required
    - `id` string, required — The ID of the inserted span annotation

## Other responses

- `403` — Forbidden
- `404` — Span not found
- `422` — Validation Error

---

[API](https://skmtc.net/arize-ai/apis/arize-phoenix-rest-api.md) · [All operations](https://skmtc.net/arize-ai/apis/arize-phoenix-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/arize-ai/arize-phoenix-rest-api/versions/a14d8ad6f708/schema)
