Skip to content

Sprints

Sprints are cycles in the API. Listing and creating happen under a project (/projects/{projectId}/cycles, on the Projects page); the endpoints here address one sprint by id.

Get one cycle’s detail: dates, status, and progress counts. Null when unknown.

GET /v1/workspaces/{workspaceId}/cycles/{cycleId}

Terminal window
curl -H "Authorization: Bearer $DOTBY_TOKEN" \
"https://api.dotby.app/v1/workspaces/acme/cycles/CYCLE_ID"

Response: the resulting object as JSON.

Update a cycle’s name or dates. Only pass the fields to change.

PATCH /v1/workspaces/{workspaceId}/cycles/{cycleId}

Terminal window
curl -X PATCH "https://api.dotby.app/v1/workspaces/acme/cycles/CYCLE_ID" \
-H "Authorization: Bearer $DOTBY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Platform work"}'

Response: the resulting object as JSON.

Mark a cycle completed (idempotent no-op if already completed).

POST /v1/workspaces/{workspaceId}/cycles/{cycleId}/complete

Terminal window
curl -X POST "https://api.dotby.app/v1/workspaces/acme/cycles/CYCLE_ID/complete" \
-H "Authorization: Bearer $DOTBY_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"

Response: the resulting object as JSON.

Archive a completed cycle (only completed cycles can be archived).

POST /v1/workspaces/{workspaceId}/cycles/{cycleId}/archive

Terminal window
curl -X POST "https://api.dotby.app/v1/workspaces/acme/cycles/CYCLE_ID/archive" \
-H "Authorization: Bearer $DOTBY_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"

Response: the resulting object as JSON.

Every error is an RFC 9457 application/problem+json body with a machine-stable code. Branch on the code, not the message:

  • 401unauthenticated / invalid_token: the bearer token is missing, expired, or revoked. Re-authenticate; do not retry as-is.
  • 403insufficient_scope / forbidden / upgrade_required: the token works but may not do this. upgrade_required means the workspace is not on Pro.
  • 404not_found_or_forbidden: the resource does not exist for this token. Never probe for existence.
  • 409idempotency_conflict: same Idempotency-Key, different body. Mint a new key.
  • 429rate_limited: back off for the number of seconds in Retry-After, then retry.
  • 400validation_failed: the request shape is wrong. Fix the request; retrying unchanged will fail again.