Skip to content

Subscriptions

This page covers the HTTP endpoints you can use to inspect subscription delivery runs, inspect attempt history, read repo-scoped action notifications, and post callback status updates from your webhook handler.

To create, update, pause, or remove subscriptions, use the CLI and MCP workflows or the SDK client.subscription surface. Subscription management REST endpoints under /api/repos/:orgName/:repoName/subs are not currently available.

GET /api/repos/:orgName/:repoName/actions/runs

Section titled “GET /api/repos/:orgName/:repoName/actions/runs”

List action runs for a repository, optionally filtered by status.

Auth: Required — repo:configure scope. Anonymous callers, under-scoped tokens, and missing repositories all return an opaque 404 so existence is not disclosed; authenticate with repo:configure to see real responses.

ParameterTypeRequiredDescription
subscriptionNamestringNoFilter by subscription name
statusstringNoFilter by status
sinceintegerNoRuns created after this epoch-milliseconds timestamp
limitintegerNoMaximum runs to return. Capped at 200 — values above 200 are rejected with a validation error.
[
{
"subscriptionName": "signal-hook",
"runId": "019d90f0-1111-7000-8000-000000000001",
"status": "succeeded",
"matchedOperationIndexes": [0, 1],
"attemptCount": 1,
"maxAttempts": 5,
"createdAt": 1741132800000,
"updatedAt": 1741132801000
}
]

Failed runs also include lastErrorCode and lastErrorMessage fields.

Terminal window
curl -H "Authorization: Bearer $WH_TOKEN" \
"https://api.warmhub.ai/api/repos/myorg/myrepo/actions/runs?status=failed_terminal"

GET /api/repos/:orgName/:repoName/actions/runs/:runId/attempts

Section titled “GET /api/repos/:orgName/:repoName/actions/runs/:runId/attempts”

Get the attempt history for a specific action run.

Auth: Required — repo:configure scope. Anonymous callers receive 401, under-scoped tokens receive 403, and missing runs receive 404.

ParameterTypeDescription
runIdstringAction run identifier
Terminal window
curl -H "Authorization: Bearer $WH_TOKEN" \
"https://api.warmhub.ai/api/repos/myorg/myrepo/actions/runs/019d90f0-1111-7000-8000-000000000001/attempts"

GET /api/repos/:orgName/:repoName/actions/notifications

Section titled “GET /api/repos/:orgName/:repoName/actions/notifications”

List repo-scoped action notification records.

Auth: Required — repo:configure scope. Anonymous callers receive 401, under-scoped tokens receive 403, and missing repositories receive 404.

ParameterTypeRequiredDescription
sinceintegerNoNotifications after this epoch-milliseconds timestamp
limitintegerNoMaximum notifications to return. Capped at 200 — values above 200 are rejected with a validation error.
Terminal window
curl -H "Authorization: Bearer $WH_TOKEN" \
"https://api.warmhub.ai/api/repos/myorg/myrepo/actions/notifications?limit=20"

Report progress or completion for an asynchronous action run. This endpoint is not repo-prefixed.

In practice, runId comes from the original webhook payload, and most handlers can use the provided callback_url directly instead of constructing the path themselves. See Webhook Payload.

Auth: Required, with write access to the run’s repository.

FieldTypeRequiredDescription
statusstringYesOne of processing, success, failure, or retry_requested
messagestringNoOptional status detail or response snippet
errorstringNoOptional human-readable error message

Callback statuses are input commands: processing maps to stored run status processing, success maps to succeeded, failure maps to failed_terminal, and retry_requested maps to retry_wait.

Terminal window
curl -X POST "https://api.warmhub.ai/api/action-runs/${RUN_ID}/callback" \
-H "Authorization: Bearer ${WH_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"status": "failure",
"error": "Unexpected field '\''category'\'' on line 5."
}'