DocsReleases

Docs · Reference

Releases

Mark deploys on the activity chart: POST /api/releases from your pipeline, or add them under Settings, Releases.

A release marks when you shipped. Each one shows as a dashed line on the overview's activity chart, so you can see whether agent traffic changed after a deploy. Hover a bar to see what shipped that day.

From your deploy pipeline

Send one request when a deploy finishes, with the same server key your collector uses:

Terminal
curl https://ethogram.si/api/releases \  -H "Authorization: Bearer $ETHOGRAM_KEY" \  -H "Content-Type: application/json" \  -d '{ "name": "checkout v2" }'

In GitHub Actions, add a step after the deploy, with the key stored as a secret:

.github/workflows/deploy.yml
- name: Mark the release in Ethogram  run: |    curl -sS https://ethogram.si/api/releases \      -H "Authorization: Bearer $ETHOGRAM_KEY" \      -H "Content-Type: application/json" \      -d "{\"name\": \"${GITHUB_SHA::7}\"}"  env:    ETHOGRAM_KEY: ${{ secrets.ETHOGRAM_KEY }}

Body

FieldTypeMeaning
namestringRequired. What shipped, such as "checkout v2" or a commit. Spaces and line breaks collapse to one space; 1 to 80 characters.
timenumber or stringWhen it shipped: epoch milliseconds or an ISO 8601 string. Leave it out for now. Up to 7 days in the past, and no more than five minutes ahead.

Up to 200 releases per project a day, from the API and the dashboard together. Only the name and time are kept, so leave anything secret out of the name.

Responses

StatusBodyWhen
201{ "id": "1", "name": "checkout v2", "time": "..." }The release was recorded.
400{ "error": "Body must be JSON." }The body isn't JSON.
400{ "error": "Give the release a name." }No usable name, or a time that can't be read or is out of range. The error says which.
401{ "error": "Unknown server key." }The Authorization header is missing, malformed, or holds a key no project has, or one that was revoked.
402{ "error": "This project has no active plan, ..." }No owner of the project has an active plan.
413{ "error": "Body too large." }The body is over 2,048 bytes.
429{ "error": "Too many releases today." }Over 200 releases in a day. Comes with Retry-After.

A failed request never breaks your deploy unless your pipeline checks the answer; plain curl doesn't.

From the dashboard

Owners and admins can add and delete releases under Settings, Releases. A release added there can go back up to 365 days, so you can mark earlier deploys too. Everyone on the project sees them.