Signals
For instructions on how to authenticate to use this endpoint, see API overview.
Endpoints
GET | |
POST | |
GET | |
DELETE | |
GET | |
GET | |
PATCH | |
DELETE | |
POST | |
POST | |
POST | |
GET | |
GET | |
POST | |
PATCH | |
DELETE | |
POST | |
DELETE | |
POST |
List all signals config
Team-level signal autonomy config (singleton per team).
GET /signals/config/ → retrieve POST /signals/config/ → update
Required API key scopes
task:readResponse
Example request
GET /api /projects /:project_id /signals /configExample response
Status 200
Create signals config
Partial update of the per-project singleton. Omitted fields keep their value.
Required API key scopes
task:writeRequest parameters
- autostart_enabledboolean | null
- default_autostart_priority
- default_slack_notification_channelstring | null
- autostart_base_branchesobject
- issue_tracking_integrationinteger | null
- issue_tracking_configobject
- max_reports_per_dayinteger | null
- default_open_pull_request_readyboolean
- github_issue_writeback_enabledboolean
- pull_request_label_enabledboolean
- pull_request_labelstring | null
Response
Example request
POST /api /projects /:project_id /signals /configExample response
Status 200
List all signals processing
Return current processing state including pause status.
Required API key scopes
task:readQuery parameters
- limitinteger
- offsetinteger
Response
Example request
GET /api /projects /:project_id /signals /processingExample response
Status 200
Delete signals processing pause
View and control signal processing pipeline state for a team.
Required API key scopes
task:writeResponse
Example request
DELETE /api /projects /:project_id /signals /processing /pauseExample response
Status 200
List all signals reports
Required API key scopes
task:readQuery parameters
- actionabilitystring
- already_addressedboolean
- assigneestringOne of:
"me" - channel_idstring
- count_onlybooleanDefault:
false - created_afterstring
- has_implementation_prboolean
- include_all_statusesboolean
- include_source_metadatabooleanDefault:
true - limitinteger
- offsetinteger
- orderingstring
- prioritystring
- scopestring
- scoutstring
- scout_prefixstring
- searchstring
- sortstring
- source_idstring
- source_productstring
- statusstring
- suggested_reviewersstring
- task_idstring
- teammate_uuidstring
- unclaimedboolean
- unreadboolean
- use_priority_preferenceboolean
- viewstring
Response
Example request
GET /api /projects /:project_id /signals /reportsExample response
Status 200
Retrieve signals reports
Required API key scopes
task:readPath parameters
- idstring
Response
Example request
GET /api /projects /:project_id /signals /reports /:idExample response
Status 200
Update signals reports
Edit the human-facing title and/or summary (description) of a signal report, addressed by id. Both fields are optional — supply only the ones you want to change; at least one is required. Every other report field (status, weights, judgments) is managed by the signals pipeline and cannot be set here. Returns the full updated report.
Required API key scopes
task:writePath parameters
- idstring
Request parameters
- titlestring
- summarystring
Response
Example request
PATCH /api /projects /:project_id /signals /reports /:idExample response
Status 200 Report updated.
Status 400 Neither title nor summary supplied, or a value failed validation.
Status 404 Report not found for this project.
Delete signals reports
Soft-delete a report and its signals via the deletion workflow.
Required API key scopes
task:writePath parameters
- idstring
Response
Example request
DELETE /api /projects /:project_id /signals /reports /:idExample response
Status 200 A deletion is already running.
Status 202 Deletion started.
Create signals reports
Start or update work for the current user, internal task, or external agent. Supply claim_id to resume, pull_requests to add PRs, takeover=true to explicitly take ownership, or release=true to end ownership while preserving work history and PR links.
Required API key scopes
task:writePath parameters
- idstring
Request parameters
- claim_idstring
- pull_requestsarray
- takeoverbooleanDefault:
false - pr_urlstring
- releasebooleanDefault:
false
Response
Example request
POST /api /projects /:project_id /signals /reports /:id /claimExample response
Status 200 Current report and assignment.
Status 400 The pull request URL or request shape is invalid.
Status 409 The report cannot be claimed or released in its current state.
Create signals reports feedback
Record the thumbs rating at the end of a report, with an optional note. For browser-session requests the rating is persisted as a per-person report action, which counts as consumption evidence for the scout that authored the report (scouts whose output nobody consumes are eventually paused); requests authenticated any other way record no action. When a note is present and the report was authored by a scout, the note is also forwarded to that scout as a steering note it reads on its next run; for any other report there is nothing to steer. The report's state is never changed.
Required API key scopes
task:writePath parameters
- idstring
Request parameters
- sentiment
- notestringDefault:
Response
Example request
POST /api /projects /:project_id /signals /reports /:id /feedbackExample response
Status 200
Create signals reports merge
Fold one or more duplicate reports into this report, which survives. The sources' signals, work-log artefacts, pull requests, task runs and checks move onto the survivor, the survivor's signal counters take on theirs, and each source is archived with a 'duplicate of' link back to the survivor. A source's open pull request stays open, because the survivor holds it after the move. Pick the survivor deliberately: prefer the older report, and prefer the one with an open implementation PR or an active claim. Any active claim on a source is released, so re-claim the survivor if you were working on one. Titles and summaries are not combined, so edit it afterwards if it needs a rewrite. A merged report keeps its URL but cannot be restored, because its signals now belong to the survivor.
Required API key scopes
task:writePath parameters
- idstring
Request parameters
- source_report_idsarray
- reasonstring
Response
Example request
POST /api /projects /:project_id /signals /reports /:id /mergeExample response
Status 200 The surviving report after the merge, plus one result per merged source.
Status 404 The surviving report was not found in this project.
Status 409 Both ends of a merge must be a live report of this project. Returned when the survivor is resolved, or when a source is the survivor itself, is resolved or archived, is still being researched, carries more signals than one merge can move, or belongs to another project. Nothing is applied.
Retrieve signals report pr
Fetch the CI status (GitHub Actions check runs and legacy commit statuses) of the pull request attached to the report, via the team's GitHub integration.
Required API key scopes
task:readPath parameters
- idstring
Query parameters
- pull_request_idstring
Response
Example request
GET /api /projects /:project_id /signals /reports /:id /pr_checksExample response
Status 200 The CI checks on the report's implementation pull request.
Status 403 GitHub is connected without permission to read pull request checks.
Status 404 Report has no implementation PR, or no GitHub integration can access it.
Status 502 GitHub could not return the checks.
Status 503 The GitHub egress budget is temporarily unavailable.
Retrieve signals report pr
Fetch the pull request's conversation comments and inline review comments, merged chronologically, via the team's GitHub integration.
Required API key scopes
task:readPath parameters
- idstring
Query parameters
- pull_request_idstring
Response
Example request
GET /api /projects /:project_id /signals /reports /:id /pr_commentsExample response
Status 200 Conversation and review comments on the report's implementation pull request.
Status 404 Report has no implementation PR, or no GitHub integration can access it.
Status 502 GitHub could not return the comments.
Status 503 The GitHub egress budget is temporarily unavailable.
Create signals report pr review comments
Post an inline review comment on the report's implementation pull request, attributed to the requesting user's own GitHub identity via their personal GitHub connection. Either replies to an existing thread (in_reply_to) or starts a new thread on a diff line (path + line).
Required API key scopes
task:writePath parameters
- idstring
Query parameters
- pull_request_idstring
Request parameters
- bodystring
- in_reply_tostring | null
- pathstring | null
- lineinteger | null
- side
Response
Example request
POST /api /projects /:project_id /signals /reports /:id /pr_review_commentsExample response
Status 201 The created review comment, in the normalized PR-comment shape.
Status 400 Invalid comment payload.
Status 403 Not a signed-in user, or the requesting user has no usable personal GitHub connection (reconnect GitHub).
Status 404 Report has no implementation PR, or no GitHub integration can access it.
Status 502 GitHub rejected the comment.
Status 503 The GitHub egress budget is temporarily unavailable.
Update signals report pr review comment
Required API key scopes
task:writePath parameters
- comment_idstring
- idstring
Query parameters
- pull_request_idstring
Request parameters
- bodystring
Response
Example request
PATCH /api /projects /:project_id /signals /reports /:id /pr_review_comments /:comment_idExample response
Status 200 The edited review comment, in the normalized PR-comment shape.
Status 403 Not a signed-in user, no usable personal GitHub connection, or not the comment's author.
Status 404 Report has no implementation PR, or the comment isn't on it.
Status 502 GitHub rejected the edit.
Status 503 The GitHub egress budget is temporarily unavailable.
Delete signals report pr review comment
Required API key scopes
task:writePath parameters
- comment_idstring
- idstring
Query parameters
- pull_request_idstring
Example request
DELETE /api /projects /:project_id /signals /reports /:id /pr_review_comments /:comment_idExample response
Status 204 Comment deleted.
Status 403 Not a signed-in user, no usable personal GitHub connection, or not the comment's author.
Status 404 Report has no implementation PR, or the comment isn't on it.
Status 502 GitHub rejected the delete.
Status 503 The GitHub egress budget is temporarily unavailable.
Create signals report pr review comment reactions
Required API key scopes
task:writePath parameters
- comment_idstring
- idstring
Query parameters
- pull_request_idstring
Request parameters
- content
Response
Example request
POST /api /projects /:project_id /signals /reports /:id /pr_review_comments /:comment_id /reactionsExample response
Status 201 The created reaction.
Status 403 Not a signed-in user, or no usable personal GitHub connection.
Status 404 Report has no implementation PR, or the comment isn't on it.
Status 502 GitHub rejected the reaction.
Status 503 The GitHub egress budget is temporarily unavailable.
Delete signals report pr review comment reaction
Required API key scopes
task:writePath parameters
- comment_idstring
- idstring
- reaction_idstring
Query parameters
- pull_request_idstring
Example request
DELETE /api /projects /:project_id /signals /reports /:id /pr_review_comments /:comment_id /reactions /:reaction_idExample response
Status 204 Reaction removed.
Status 403 Not a signed-in user, or no usable personal GitHub connection.
Status 404 Report has no implementation PR, or the comment isn't on it.
Status 502 GitHub rejected the removal.
Status 503 The GitHub egress budget is temporarily unavailable.
Create signals reports refund
Refund the flat charge for this report's implementation PR and archive the report. Refunds auto-approve: the charge is either excluded from usage before it is ever reported to billing (refund on the same UTC day as the PR run) or returned as a Stripe customer-balance credit on the next invoice. A refunded PR does not count toward the free monthly PR allowance. One refund per report, ever — repeat calls return the existing refund with already_refunded=true. The report is archived as part of the refund (a resolved report stays resolved) and can't be restored afterwards.
Required API key scopes
task:writePath parameters
- idstring
Request parameters
- reason
- notestring
Response
Example request
POST /api /projects /:project_id /signals /reports /:id /refund