Logstreem
Create an annotation
POST

Create an annotation

Mark a deploy on every chart — the highest-value CI step you can add.

Post one of these from your deploy pipeline. Every latency chart then answers "did we do that?" without anyone having to remember release times.

GitHub Actions
- name: Annotate the deploy
  run: |
    curl -sf -X POST https://api.logstreem.com/v1/annotations \
      -H "Authorization: Bearer ${{ secrets.LOGSTREEM_TOKEN }}" \
      -H "Content-Type: application/json" \
      -d '{
        "type": "deploy",
        "title": "${{ github.event.repository.name }} ${{ github.ref_name }}",
        "datasets": ["api-gateway-prod"],
        "url": "${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}"
      }'
POST/v1/annotations

Body parameters

typestringrequired

Freeform kind, e.g. deploy, incident, config.

titlestringrequired

Shown on hover.

datasetsarrayrequired

Which datasets' charts show it.

timedatetime

Defaults to now.

end_timedatetime

Set to draw a span rather than a line.

urlstring

Linked from the marker.

curl -X POST https://api.logstreem.com/v1/annotations \
  -H "Authorization: Bearer $LOGSTREEM_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"deploy","title":"checkout v2.14.0","datasets":["api-gateway-prod"],"url":"https://github.com/acme/checkout/releases/tag/v2.14.0"}'

Responses

201Created
{
  "object": "annotation",
  "id": "ann_4a81e0c3f6a5b2d1e0c9",
  "type": "deploy",
  "title": "checkout v2.14.0",
  "datasets": ["api-gateway-prod"],
  "time": "2026-09-06T09:14:22.114Z"
}
401Unauthorized
{
  "error": {
    "type": "authentication_error",
    "code": "missing_token",
    "message": "No API token provided.",
    "doc_url": "https://logstreem.com/docs/errors#missing_token",
    "request_id": "req_9f3c2a7b41de08c5b2e6"
  }
}
Try itsandbox