Signals

For instructions on how to authenticate to use this endpoint, see API overview.

Endpoints

GET
GET
GET
POST
GET
GET
POST
POST
POST
POST
GET
DELETE
GET
GET
PATCH
DELETE
GET
POST
POST

List all signals activity summary

Required API key scopes

task:read

Response


Example request

GET /api/projects/:project_id/signals/activity_summary
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/activity_summary/

Example response

Status 200
RESPONSE
{
"status": "ready",
"headline": "string",
"profile": "string",
"focus_areas": [
{
"topic": "string",
"strength": "string",
"last_seen": "string"
}
],
"products": [
"string"
],
"recent_shift": "string",
"generated_at": "2019-08-24T14:15:22Z",
"version": 0,
"prompt_version": 0,
"stale": true
}

Retrieve signals activity summary versions

Required API key scopes

task:read

Query parameters

  • limit
    integer
    Default: 5
  • version
    integer

Example request

GET /api/projects/:project_id/signals/activity_summary/versions
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/activity_summary/versions/

Example response

Status 200
RESPONSE
{
"version": 0,
"generated_at": "2019-08-24T14:15:22Z",
"prompt_version": 0,
"headline": "string",
"recent_shift": "string",
"focus_areas": [
{
"topic": "string",
"strength": "string",
"last_seen": "string"
}
],
"profile": "string"
}

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:read

Response


Example request

GET /api/projects/:project_id/signals/config
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/config/

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"autostart_enabled": true,
"default_autostart_priority": "P0",
"default_slack_notification_channel": "string",
"autostart_base_branches": {
"property1": "string",
"property2": "string"
},
"scout_instructions": "string",
"research_instructions": "string",
"implementation_instructions": "string",
"issue_tracking_integration": 0,
"issue_tracking_config": {
"property1": "string",
"property2": "string"
},
"max_reports_per_day": 1,
"default_open_pull_request_ready": true,
"github_issue_writeback_enabled": true,
"pull_request_label_enabled": true,
"pull_request_label": "string",
"reports_generated_today": 0,
"daily_report_limit_reached": true,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}

Create signals config

Partial update of the per-project singleton. Omitted fields keep their value.

Required API key scopes

task:write

Request parameters

  • autostart_enabled
    boolean | null
  • default_autostart_priority
  • default_slack_notification_channel
    string | null
  • autostart_base_branches
    object
  • scout_instructions
    string
  • research_instructions
    string
  • implementation_instructions
    string
  • issue_tracking_integration
    integer | null
  • issue_tracking_config
    object
  • max_reports_per_day
    integer | null
  • default_open_pull_request_ready
    boolean
  • github_issue_writeback_enabled
    boolean
  • pull_request_label_enabled
    boolean
  • pull_request_label
    string | null

Response


Example request

POST /api/projects/:project_id/signals/config
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/config/\
-d autostart_enabled="boolean"

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"autostart_enabled": true,
"default_autostart_priority": "P0",
"default_slack_notification_channel": "string",
"autostart_base_branches": {
"property1": "string",
"property2": "string"
},
"scout_instructions": "string",
"research_instructions": "string",
"implementation_instructions": "string",
"issue_tracking_integration": 0,
"issue_tracking_config": {
"property1": "string",
"property2": "string"
},
"max_reports_per_day": 1,
"default_open_pull_request_ready": true,
"github_issue_writeback_enabled": true,
"pull_request_label_enabled": true,
"pull_request_label": "string",
"reports_generated_today": 0,
"daily_report_limit_reached": true,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}

List all signals inbox summary

Required API key scopes

task:read

Response


Example request

GET /api/projects/:project_id/signals/inbox_summary
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/inbox_summary/

Example response

Status 200
RESPONSE
{
"period_start": "2019-08-24T14:15:22Z",
"period_end": "2019-08-24T14:15:22Z",
"merged_pr_count": 0,
"people_count": 0,
"participation_complete": true,
"pull_requests": [
{
"repository": "string",
"number": 0,
"url": "http://example.com"
}
],
"people": [
{
"id": 0,
"login": "string"
}
]
}

List all signals onboarding

Required API key scopes

task:read

Response


Example request

GET /api/projects/:project_id/signals/onboarding
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/onboarding/

Example response

Status 200
RESPONSE
{
"jobs": {
"scout": "pending",
"recommendations": "pending"
},
"draft": {
"step": "signals",
"sources": [
{
"source_product": "session_replay",
"source_type": "session_analysis_cluster",
"enabled": true
}
],
"scanner_ids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"suggestions": [
{
"id": "string",
"kind": "canonical",
"skill_name": "string",
"title": "string",
"why_here": "string",
"description": "string",
"draft_body": "string",
"proposed_config": {
"run_cron_schedule": "string",
"run_interval_minutes": 0,
"emit": true
},
"gap": true,
"confidence": "low"
}
],
"activation_scouts": [
"string"
],
"automatic_implementation": true,
"implementation_priority": "P0"
},
"completed_at": "2019-08-24T14:15:22Z",
"variant": "control"
}

Create signals onboarding

Required API key scopes

task:write

Request parameters

  • step
  • sources
    Click to open
    array
  • scanner_ids
    array
  • suggestions
    Click to open
    array
  • activation_scouts
    array
  • automatic_implementation
    boolean
  • implementation_priority

Response


Example request

POST /api/projects/:project_id/signals/onboarding
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/onboarding/\
-d step=undefined,\
-d sources="array",\
-d scanner_ids="array",\
-d suggestions="array",\
-d automatic_implementation="boolean",\
-d implementation_priority=undefined

Example response

Status 201
RESPONSE
{
"jobs": {
"scout": "pending",
"recommendations": "pending"
},
"draft": {
"step": "signals",
"sources": [
{
"source_product": "session_replay",
"source_type": "session_analysis_cluster",
"enabled": true
}
],
"scanner_ids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"suggestions": [
{
"id": "string",
"kind": "canonical",
"skill_name": "string",
"title": "string",
"why_here": "string",
"description": "string",
"draft_body": "string",
"proposed_config": {
"run_cron_schedule": "string",
"run_interval_minutes": 0,
"emit": true
},
"gap": true,
"confidence": "low"
}
],
"activation_scouts": [
"string"
],
"automatic_implementation": true,
"implementation_priority": "P0"
},
"completed_at": "2019-08-24T14:15:22Z",
"variant": "control"
}

Create signals onboarding complete

Required API key scopes

task:write

Request parameters

  • step
  • sources
    Click to open
    array
  • scanner_ids
    array
  • suggestions
    Click to open
    array
  • activation_scouts
    array
  • automatic_implementation
    boolean
  • implementation_priority

Response


Example request

POST /api/projects/:project_id/signals/onboarding/complete
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/onboarding/complete/\
-d step=undefined,\
-d sources="array",\
-d scanner_ids="array",\
-d suggestions="array",\
-d automatic_implementation="boolean",\
-d implementation_priority=undefined

Example response

Status 200
RESPONSE
{
"jobs": {
"scout": "pending",
"recommendations": "pending"
},
"draft": {
"step": "signals",
"sources": [
{
"source_product": "session_replay",
"source_type": "session_analysis_cluster",
"enabled": true
}
],
"scanner_ids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"suggestions": [
{
"id": "string",
"kind": "canonical",
"skill_name": "string",
"title": "string",
"why_here": "string",
"description": "string",
"draft_body": "string",
"proposed_config": {
"run_cron_schedule": "string",
"run_interval_minutes": 0,
"emit": true
},
"gap": true,
"confidence": "low"
}
],
"activation_scouts": [
"string"
],
"automatic_implementation": true,
"implementation_priority": "P0"
},
"completed_at": "2019-08-24T14:15:22Z",
"variant": "control"
}

Create signals onboarding expose

Required API key scopes

task:write

Request parameters

  • variant

Response


Example request

POST /api/projects/:project_id/signals/onboarding/expose
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/onboarding/expose/\
-d variant=undefined

Example response

Status 200
RESPONSE
{
"jobs": {
"scout": "pending",
"recommendations": "pending"
},
"draft": {
"step": "signals",
"sources": [
{
"source_product": "session_replay",
"source_type": "session_analysis_cluster",
"enabled": true
}
],
"scanner_ids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"suggestions": [
{
"id": "string",
"kind": "canonical",
"skill_name": "string",
"title": "string",
"why_here": "string",
"description": "string",
"draft_body": "string",
"proposed_config": {
"run_cron_schedule": "string",
"run_interval_minutes": 0,
"emit": true
},
"gap": true,
"confidence": "low"
}
],
"activation_scouts": [
"string"
],
"automatic_implementation": true,
"implementation_priority": "P0"
},
"completed_at": "2019-08-24T14:15:22Z",
"variant": "control"
}

Create signals onboarding reconcile

Required API key scopes

task:write

Response


Example request

POST /api/projects/:project_id/signals/onboarding/reconcile
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/onboarding/reconcile/

Example response

Status 200
RESPONSE
{
"jobs": {
"scout": "pending",
"recommendations": "pending"
},
"draft": {
"step": "signals",
"sources": [
{
"source_product": "session_replay",
"source_type": "session_analysis_cluster",
"enabled": true
}
],
"scanner_ids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"suggestions": [
{
"id": "string",
"kind": "canonical",
"skill_name": "string",
"title": "string",
"why_here": "string",
"description": "string",
"draft_body": "string",
"proposed_config": {
"run_cron_schedule": "string",
"run_interval_minutes": 0,
"emit": true
},
"gap": true,
"confidence": "low"
}
],
"activation_scouts": [
"string"
],
"automatic_implementation": true,
"implementation_priority": "P0"
},
"completed_at": "2019-08-24T14:15:22Z",
"variant": "control"
}

List all signals processing

Return current processing state including pause status.

Required API key scopes

task:read

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/projects/:project_id/signals/processing
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/processing/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"paused_until": "2019-08-24T14:15:22Z"
}
]
}

Delete signals processing pause

View and control signal processing pipeline state for a team.

Required API key scopes

task:write

Response


Example request

DELETE /api/projects/:project_id/signals/processing/pause
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/processing/pause/

Example response

Status 200
RESPONSE
{
"status": "string",
"paused_until": "2019-08-24T14:15:22Z"
}

List all signals reports

Required API key scopes

task:read

Query parameters

  • actionability
    string
  • already_addressed
    boolean
  • assignee
    string
    One of: "me"
  • channel_id
    string
  • count_only
    boolean
    Default: false
  • created_after
    string
  • exclude
    array
  • has_implementation_pr
    boolean
  • include_all_statuses
    boolean
  • include_source_metadata
    boolean
    Default: true
  • include_unlisted
    boolean
    Default: false
  • limit
    integer
  • offset
    integer
  • ordering
    string
  • priority
    string
  • scope
    string
  • scout
    string
  • scout_prefix
    string
  • search
    string
  • sort
    string
  • source_id
    string
  • source_product
    string
  • status
    string
  • suggested_reviewers
    string
  • task_id
    string
  • teammate_uuid
    string
  • unclaimed
    boolean
  • unread
    boolean
  • use_priority_preference
    boolean
  • view
    string

Response


Example request

GET /api/projects/:project_id/signals/reports
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"summary": "string",
"summary_lead": "string",
"reviewer_assignment": {
"state": {
"reviewers_id": "2e0d6f9a-f7b9-4851-80c4-2938b51252f8",
"corrections_id": "d6237cc9-ee4f-4270-9a15-7e959436f098"
},
"pinned_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"excluded_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"confirmed": true,
"needs_review": true,
"enabled": true
},
"status": "potential",
"monitoring_started_at": "2019-08-24T14:15:22Z",
"total_weight": 0.1,
"signal_count": 0,
"signals_at_run": 0,
"collapsed_note_count": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"artefact_count": 0,
"charts": [
{
"chart_id": "string",
"title": "string",
"query": null,
"caption": "string",
"size": "small"
}
],
"metrics": [
{
"metric_id": "string",
"title": "string",
"kind": "affected_users",
"role": "supporting",
"value": 0,
"value_at": "2019-08-24T14:15:22Z",
"series": [
0.1
],
"value_format": "number",
"unit": "string",
"caption": "string",
"goal_value": 0,
"goal_direction": "at_most",
"goal_grain": "whole_window",
"decision_window_days": 1,
"minimum_data_points": 1
}
],
"suggested_prompts": [
"string"
],
"source_suggestion": {
"product": "logs",
"reason": "string"
},
"priority": "string",
"actionability": "string",
"already_addressed": true,
"dismissal_reason": "string",
"dismissal_note": "string",
"suppression_source": "dismissed",
"suppression_explanation": "string",
"repo_slug": "string",
"is_suggested_reviewer": false,
"source_products": [
"string"
],
"scout_name": "string",
"implementation_pr_url": "string",
"pull_requests": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"url": "http://example.com",
"state": "unknown",
"merged": true,
"review_decision": "approved",
"merged_at": "2019-08-24T14:15:22Z",
"attached_by": {
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"agent": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb"
},
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"attached_at": "2019-08-24T14:15:22Z"
}
],
"implementation_pr_state": "unknown",
"implementation_pr_merged": true,
"tracker_issue_url": "string",
"tracker_issue_reference": "string",
"tracker_issue_error": "string",
"work_state": "unclaimed",
"assignee": {
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"agent": "string",
"claimed_at": "2019-08-24T14:15:22Z"
},
"refund": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"reason": "pr_incorrect",
"note": "string",
"billing_path": "excluded",
"credits": 0,
"pr_url": "string",
"pr_run_created_at": "2019-08-24T14:15:22Z",
"credit_amount_usd": "string",
"billing_synced": true,
"created_at": "2019-08-24T14:15:22Z"
},
"refund_ineligibility_reason": "already_refunded",
"billing_exempt_reason": "posthog_health_check",
"channel_id": "bbe8aa76-a4bb-46f6-a785-df8e831cc459",
"ranking": {
"served_key": "string",
"model_name": "string",
"model_version": "string",
"manifest_version": "string",
"scored_at": "2019-08-24T14:15:22Z",
"scores": {
"property1": 0.1,
"property2": 0.1
},
"lifts": {
"property1": 0.1,
"property2": 0.1
},
"readable_heads": [
"string"
],
"stale": true
},
"inbox_merge_key": 0
}
],
"ranker": "string"
}

Retrieve signals reports

Required API key scopes

task:read

Path parameters

  • id
    string

Response


Example request

GET /api/projects/:project_id/signals/reports/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/:id/

Example response

Status 200
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"summary": "string",
"summary_lead": "string",
"reviewer_assignment": {
"state": {
"reviewers_id": "2e0d6f9a-f7b9-4851-80c4-2938b51252f8",
"corrections_id": "d6237cc9-ee4f-4270-9a15-7e959436f098"
},
"pinned_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"excluded_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"confirmed": true,
"needs_review": true,
"enabled": true
},
"status": "potential",
"monitoring_started_at": "2019-08-24T14:15:22Z",
"total_weight": 0.1,
"signal_count": 0,
"signals_at_run": 0,
"collapsed_note_count": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"artefact_count": 0,
"charts": [
{
"chart_id": "string",
"title": "string",
"query": null,
"caption": "string",
"size": "small"
}
],
"metrics": [
{
"metric_id": "string",
"title": "string",
"kind": "affected_users",
"role": "supporting",
"value": 0,
"value_at": "2019-08-24T14:15:22Z",
"series": [
0.1
],
"value_format": "number",
"unit": "string",
"query": null,
"caption": "string",
"goal_value": 0,
"goal_direction": "at_most",
"goal_grain": "whole_window",
"decision_window_days": 1,
"minimum_data_points": 1
}
],
"suggested_prompts": [
"string"
],
"source_suggestion": {
"product": "logs",
"reason": "string"
},
"priority": "string",
"actionability": "string",
"already_addressed": true,
"dismissal_reason": "string",
"dismissal_note": "string",
"suppression_source": "dismissed",
"suppression_explanation": "string",
"repo_slug": "string",
"is_suggested_reviewer": false,
"source_products": [
"string"
],
"scout_name": "string",
"implementation_pr_url": "string",
"pull_requests": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"url": "http://example.com",
"state": "unknown",
"merged": true,
"review_decision": "approved",
"merged_at": "2019-08-24T14:15:22Z",
"attached_by": {
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"agent": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb"
},
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"attached_at": "2019-08-24T14:15:22Z"
}
],
"implementation_pr_state": "unknown",
"implementation_pr_merged": true,
"tracker_issue_url": "string",
"tracker_issue_reference": "string",
"tracker_issue_error": "string",
"work_state": "unclaimed",
"assignee": {
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"agent": "string",
"claimed_at": "2019-08-24T14:15:22Z"
},
"refund": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"reason": "pr_incorrect",
"note": "string",
"billing_path": "excluded",
"credits": 0,
"pr_url": "string",
"pr_run_created_at": "2019-08-24T14:15:22Z",
"credit_amount_usd": "string",
"billing_synced": true,
"created_at": "2019-08-24T14:15:22Z"
},
"refund_ineligibility_reason": "already_refunded",
"billing_exempt_reason": "posthog_health_check",
"channel_id": "bbe8aa76-a4bb-46f6-a785-df8e831cc459",
"ranking": {
"served_key": "string",
"model_name": "string",
"model_version": "string",
"manifest_version": "string",
"scored_at": "2019-08-24T14:15:22Z",
"scores": {
"property1": 0.1,
"property2": 0.1
},
"lifts": {
"property1": 0.1,
"property2": 0.1
},
"readable_heads": [
"string"
],
"stale": true
}
}

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:write

Path parameters

  • id
    string

Request parameters

  • title
    string
  • summary
    string

Response


Example request

PATCH /api/projects/:project_id/signals/reports/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/:id/\
-d title="string"

Example response

Status 200 Report updated.
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"summary": "string",
"summary_lead": "string",
"reviewer_assignment": {
"state": {
"reviewers_id": "2e0d6f9a-f7b9-4851-80c4-2938b51252f8",
"corrections_id": "d6237cc9-ee4f-4270-9a15-7e959436f098"
},
"pinned_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"excluded_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"confirmed": true,
"needs_review": true,
"enabled": true
},
"status": "potential",
"monitoring_started_at": "2019-08-24T14:15:22Z",
"total_weight": 0.1,
"signal_count": 0,
"signals_at_run": 0,
"collapsed_note_count": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"artefact_count": 0,
"charts": [
{
"chart_id": "string",
"title": "string",
"query": null,
"caption": "string",
"size": "small"
}
],
"metrics": [
{
"metric_id": "string",
"title": "string",
"kind": "affected_users",
"role": "supporting",
"value": 0,
"value_at": "2019-08-24T14:15:22Z",
"series": [
0.1
],
"value_format": "number",
"unit": "string",
"query": null,
"caption": "string",
"goal_value": 0,
"goal_direction": "at_most",
"goal_grain": "whole_window",
"decision_window_days": 1,
"minimum_data_points": 1
}
],
"suggested_prompts": [
"string"
],
"source_suggestion": {
"product": "logs",
"reason": "string"
},
"priority": "string",
"actionability": "string",
"already_addressed": true,
"dismissal_reason": "string",
"dismissal_note": "string",
"suppression_source": "dismissed",
"suppression_explanation": "string",
"repo_slug": "string",
"is_suggested_reviewer": false,
"source_products": [
"string"
],
"scout_name": "string",
"implementation_pr_url": "string",
"pull_requests": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"url": "http://example.com",
"state": "unknown",
"merged": true,
"review_decision": "approved",
"merged_at": "2019-08-24T14:15:22Z",
"attached_by": {
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"agent": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb"
},
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"attached_at": "2019-08-24T14:15:22Z"
}
],
"implementation_pr_state": "unknown",
"implementation_pr_merged": true,
"tracker_issue_url": "string",
"tracker_issue_reference": "string",
"tracker_issue_error": "string",
"work_state": "unclaimed",
"assignee": {
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"agent": "string",
"claimed_at": "2019-08-24T14:15:22Z"
},
"refund": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"reason": "pr_incorrect",
"note": "string",
"billing_path": "excluded",
"credits": 0,
"pr_url": "string",
"pr_run_created_at": "2019-08-24T14:15:22Z",
"credit_amount_usd": "string",
"billing_synced": true,
"created_at": "2019-08-24T14:15:22Z"
},
"refund_ineligibility_reason": "already_refunded",
"billing_exempt_reason": "posthog_health_check",
"channel_id": "bbe8aa76-a4bb-46f6-a785-df8e831cc459",
"ranking": {
"served_key": "string",
"model_name": "string",
"model_version": "string",
"manifest_version": "string",
"scored_at": "2019-08-24T14:15:22Z",
"scores": {
"property1": 0.1,
"property2": 0.1
},
"lifts": {
"property1": 0.1,
"property2": 0.1
},
"readable_heads": [
"string"
],
"stale": true
}
}
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:write

Path parameters

  • id
    string

Response


Example request

DELETE /api/projects/:project_id/signals/reports/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/:id/

Example response

Status 200 A deletion is already running.
RESPONSE
{
"status": "deletion_started",
"report_id": "5ed7905a-4735-4cf7-b1ab-521e066fb971"
}
Status 202 Deletion started.
RESPONSE
{
"status": "deletion_started",
"report_id": "5ed7905a-4735-4cf7-b1ab-521e066fb971"
}

List all signals reports actions

List the actions on this report that start an agent run, read from the report's current state. get_it_merged is available only while the report has an open, approved pull request. make_it_green is available only while CI fails on the report's open pull request. suggested_prompt has one entry per prompt the report suggests. Start one with the run endpoint.

Required API key scopes

task:read

Path parameters

  • id
    string

Response


Example request

GET /api/projects/:project_id/signals/reports/:id/actions
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/:id/actions/

Example response

Status 200
RESPONSE
{
"results": [
{
"action": "get_it_merged",
"available": true,
"disabled_reason": "string",
"suggested_prompt_index": 0,
"text": "string"
}
]
}

Create signals reports actions run

Create a task linked to the report and start its first run in the background, with the instructions the inbox uses for the same action. The run shows in the report's runs and counts toward the report's task limit. Nobody can answer questions in a background run, so the agent writes a note to the report's work log when it needs a decision.

Required API key scopes

task:write

Path parameters

  • id
    string

Request parameters

  • action
  • suggested_prompt_index
    integer

Response


Example request

POST /api/projects/:project_id/signals/reports/:id/actions/run
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/:id/actions/run/\
-d action=undefined

Example response

Status 201 Task created
RESPONSE
{
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec",
"task_url": "string",
"run_error": "string"
}
Status 400 The action is not available on this report now (code `report_action_unavailable`)
RESPONSE
{
"code": "string",
"detail": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec"
}
Status 402 The organization is on a Self-driving free trial (code `self_driving_free_trial`)
Status 403 AI data processing is not approved, or the request came from a task sandbox
RESPONSE
{
"code": "string",
"detail": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec"
}
Status 404 The report has no suggested prompt at that index
Status 409 A run is already working on this report's pull request (code `report_action_run_active`). The body carries its `task_id` and `run_id`.
RESPONSE
{
"code": "string",
"detail": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec"
}
Status 429 The report reached its task limit (code `signal_report_task_cap`), the per-user creation limit fired (code `throttled`), or the organization reached its usage limit or is deactivated
RESPONSE
{
"code": "string",
"detail": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec"
}

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:write

Path parameters

  • id
    string

Request parameters

  • claim_id
    string
  • pull_requests
    array
  • takeover
    boolean
    Default: false
  • pr_url
    string
  • release
    boolean
    Default: false

Response


Example request

POST /api/projects/:project_id/signals/reports/:id/claim
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/signals/reports/:id/claim/\
-d claim_id="string"

Example response

Status 200 Current report and assignment.
RESPONSE
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"title": "string",
"summary": "string",
"summary_lead": "string",
"reviewer_assignment": {
"state": {
"reviewers_id": "2e0d6f9a-f7b9-4851-80c4-2938b51252f8",
"corrections_id": "d6237cc9-ee4f-4270-9a15-7e959436f098"
},
"pinned_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"excluded_user_uuids": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"confirmed": true,
"needs_review": true,
"enabled": true
},
"status": "potential",
"monitoring_started_at": "2019-08-24T14:15:22Z",
"total_weight": 0.1,
"signal_count": 0,
"signals_at_run": 0,
"collapsed_note_count": 0,
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z",
"artefact_count": 0,
"charts": [
{
"chart_id": "string",
"title": "string",
"query": null,
"caption": "string",
"size": "small"
}
],
"metrics": [
{
"metric_id": "string",
"title": "string",
"kind": "affected_users",
"role": "supporting",
"value": 0,
"value_at": "2019-08-24T14:15:22Z",
"series": [
0.1
],
"value_format": "number",
"unit": "string",
"query": null,
"caption": "string",
"goal_value": 0,
"goal_direction": "at_most",
"goal_grain": "whole_window",
"decision_window_days": 1,
"minimum_data_points": 1
}
],
"suggested_prompts": [
"string"
],
"source_suggestion": {
"product": "logs",
"reason": "string"
},
"priority": "string",
"actionability": "string",
"already_addressed": true,
"dismissal_reason": "string",
"dismissal_note": "string",
"suppression_source": "dismissed",
"suppression_explanation": "string",
"repo_slug": "string",
"is_suggested_reviewer": false,
"source_products": [
"string"
],
"scout_name": "string",
"implementation_pr_url": "string",
"pull_requests": [
{
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"url": "http://example.com",
"state": "unknown",
"merged": true,
"review_decision": "approved",
"merged_at": "2019-08-24T14:15:22Z",
"attached_by": {
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"agent": "string",
"task_id": "736fde4d-9029-4915-8189-01353d6982cb"
},
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"attached_at": "2019-08-24T14:15:22Z"
}
],
"implementation_pr_state": "unknown",
"implementation_pr_merged": true,
"tracker_issue_url": "string",
"tracker_issue_reference": "string",
"tracker_issue_error": "string",
"work_state": "unclaimed",
"assignee": {
"claim_id": "6ed32748-64af-4d95-94ea-a78b6397033c",
"kind": "user",
"user": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"first_name": "string",
"last_name": "string",
"email": "user@example.com"
},
"task_id": "736fde4d-9029-4915-8189-01353d6982cb",
"agent": "string",
"claimed_at": "2019-08-24T14:15:22Z"
},
"refund": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"reason": "pr_incorrect",
"note": "string",
"billing_path": "excluded",
"credits": 0,
"pr_url": "string",
"pr_run_created_at": "2019-08-24T14:15:22Z",
"credit_amount_usd": "string",
"billing_synced": true,
"created_at": "2019-08-24T14:15:22Z"
},
"refund_ineligibility_reason": "already_refunded",
"billing_exempt_reason": "posthog_health_check",
"channel_id": "bbe8aa76-a4bb-46f6-a785-df8e831cc459",
"ranking": {
"served_key": "string",
"model_name": "string",
"model_version": "string",
"manifest_version": "string",
"scored_at": "2019-08-24T14:15:22Z",
"scores": {
"property1": 0.1,
"property2": 0.1
},
"lifts": {
"property1": 0.1,
"property2": 0.1
},
"readable_heads": [
"string"
],
"stale": true
}
}
Status 400 The pull request URL or request shape is invalid.
Status 409 The report cannot be claimed or released in its current state.