Create an annotation
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/annotationsBody parameters
typestringrequiredFreeform kind, e.g. deploy, incident, config.
titlestringrequiredShown on hover.
datasetsarrayrequiredWhich datasets' charts show it.
timedatetimeDefaults to now.
end_timedatetimeSet to draw a span rather than a line.
urlstringLinked 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