PostHog Signals API
The signals API from PostHog — 6 operation(s) for signals.
The signals API from PostHog — 6 operation(s) for signals.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/posthog-signals-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: PostHog Signals API
version: 1.0.0
description: ''
tags:
- name: Signals
paths:
/api/projects/{project_id}/signals/processing/:
get:
operationId: signals_processing_list
description: Return current processing state including pause status.
parameters:
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedPauseStateResponseList'
description: ''
x-explicit-tags:
- signals
summary: Signals processing list
x-summary-source: derived
/api/projects/{project_id}/signals/processing/pause/:
put:
operationId: signals_processing_pause_update
description: View and control signal processing pipeline state for a team.
parameters:
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PauseUntilRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PauseUntilRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PauseUntilRequest'
required: true
security:
- PersonalAPIKeyAuth:
- task:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PauseResponse'
description: ''
x-explicit-tags:
- signals
summary: Signals processing pause update
x-summary-source: derived
delete:
operationId: signals_processing_pause_destroy
description: View and control signal processing pipeline state for a team.
parameters:
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PauseResponse'
description: ''
x-explicit-tags:
- signals
summary: Signals processing pause destroy
x-summary-source: derived
/api/projects/{project_id}/signals/reports/:
get:
operationId: signals_reports_list
parameters:
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
- in: query
name: ordering
schema:
type: string
description: 'Comma-separated ordering clauses. Each clause is a field name optionally prefixed with ''-'' for descending. Allowed fields: status, is_suggested_reviewer, signal_count, total_weight, priority, created_at, updated_at, id. Defaults to ''-is_suggested_reviewer,status,-updated_at''.'
- $ref: '#/components/parameters/ProjectIdPath'
- in: query
name: search
schema:
type: string
description: Case-insensitive substring match against report title and summary.
- in: query
name: source_product
schema:
type: string
description: Comma-separated list of source products to include. Reports are kept if at least one of their contributing signals comes from one of these products (e.g. error_tracking, session_replay).
- in: query
name: status
schema:
type: string
description: 'Comma-separated list of statuses to include. Valid values: potential, candidate, in_progress, pending_input, ready, failed, suppressed. Defaults to all statuses except suppressed.'
- in: query
name: suggested_reviewers
schema:
type: string
description: Comma-separated list of PostHog user UUIDs. Reports are kept if their suggested reviewers include any of the given users.
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:read
- PersonalAPIKeyAuth:
- task:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSignalReportList'
description: ''
x-explicit-tags:
- signals
summary: Signals reports list
x-summary-source: derived
/api/projects/{project_id}/signals/reports/{id}/:
get:
operationId: signals_reports_retrieve
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this signal report.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:read
- PersonalAPIKeyAuth:
- task:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SignalReport'
description: ''
x-explicit-tags: []
summary: Signals reports retrieve
x-summary-source: derived
/api/projects/{project_id}/signals/source_configs/:
get:
operationId: signals_source_configs_list
parameters:
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:read
- PersonalAPIKeyAuth:
- task:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedSignalSourceConfigList'
description: ''
x-explicit-tags:
- signals
summary: Signals source configs list
x-summary-source: derived
post:
operationId: signals_source_configs_create
parameters:
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
multipart/form-data:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
required: true
security:
- PersonalAPIKeyAuth:
- task:write
- PersonalAPIKeyAuth:
- task:write
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
description: ''
x-explicit-tags:
- signals
summary: Signals source configs create
x-summary-source: derived
/api/projects/{project_id}/signals/source_configs/{id}/:
get:
operationId: signals_source_configs_retrieve
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this signal source config.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:read
- PersonalAPIKeyAuth:
- task:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
description: ''
x-explicit-tags: []
summary: Signals source configs retrieve
x-summary-source: derived
put:
operationId: signals_source_configs_update
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this signal source config.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
multipart/form-data:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
required: true
security:
- PersonalAPIKeyAuth:
- task:write
- PersonalAPIKeyAuth:
- task:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
description: ''
x-explicit-tags: []
summary: Signals source configs update
x-summary-source: derived
patch:
operationId: signals_source_configs_partial_update
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this signal source config.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedSignalSourceConfig'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedSignalSourceConfig'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedSignalSourceConfig'
security:
- PersonalAPIKeyAuth:
- task:write
- PersonalAPIKeyAuth:
- task:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SignalSourceConfig'
description: ''
x-explicit-tags: []
summary: Signals source configs partial update
x-summary-source: derived
delete:
operationId: signals_source_configs_destroy
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this signal source config.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- Signals
security:
- PersonalAPIKeyAuth:
- task:write
- PersonalAPIKeyAuth:
- task:write
responses:
'204':
description: No response body
x-explicit-tags: []
summary: Signals source configs destroy
x-summary-source: derived
components:
schemas:
PaginatedSignalReportList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/SignalReport'
SignalSourceConfig:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
source_product:
$ref: '#/components/schemas/SourceProductEnum'
source_type:
$ref: '#/components/schemas/SignalSourceConfigSourceTypeEnum'
enabled:
type: boolean
config: {}
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
status:
type:
- string
- 'null'
readOnly: true
required:
- created_at
- id
- source_product
- source_type
- status
- updated_at
PatchedSignalSourceConfig:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
source_product:
$ref: '#/components/schemas/SourceProductEnum'
source_type:
$ref: '#/components/schemas/SignalSourceConfigSourceTypeEnum'
enabled:
type: boolean
config: {}
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
status:
type:
- string
- 'null'
readOnly: true
PaginatedPauseStateResponseList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/PauseStateResponse'
SignalSourceConfigSourceTypeEnum:
enum:
- session_analysis_cluster
- evaluation
- issue
- ticket
- issue_created
- issue_reopened
- issue_spiking
type: string
description: '* `session_analysis_cluster` - Session analysis cluster
* `evaluation` - Evaluation
* `issue` - Issue
* `ticket` - Ticket
* `issue_created` - Issue created
* `issue_reopened` - Issue reopened
* `issue_spiking` - Issue spiking'
PauseStateResponse:
type: object
properties:
paused_until:
type:
- string
- 'null'
format: date-time
description: The timestamp the pipeline is paused until, or null if not paused/not running.
required:
- paused_until
PaginatedSignalSourceConfigList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/SignalSourceConfig'
SignalReport:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
title:
type:
- string
- 'null'
readOnly: true
summary:
type:
- string
- 'null'
readOnly: true
status:
allOf:
- $ref: '#/components/schemas/SignalReportStatusEnum'
readOnly: true
total_weight:
type: number
format: double
readOnly: true
signal_count:
type: integer
readOnly: true
signals_at_run:
type: integer
readOnly: true
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
artefact_count:
type: integer
readOnly: true
priority:
type:
- string
- 'null'
readOnly: true
description: P0–P4 from the latest priority judgment artefact (when present).
actionability:
type:
- string
- 'null'
readOnly: true
description: Actionability choice from the latest actionability judgment artefact (when present).
already_addressed:
type:
- boolean
- 'null'
readOnly: true
description: Whether the issue appears already fixed, from the actionability judgment artefact.
is_suggested_reviewer:
type: boolean
readOnly: true
default: false
source_products:
type: array
items:
type: string
readOnly: true
description: Distinct source products contributing signals to this report (from ClickHouse).
implementation_pr_url:
type:
- string
- 'null'
readOnly: true
description: PR URL from the latest implementation task run, if available.
required:
- actionability
- already_addressed
- artefact_count
- created_at
- id
- implementation_pr_url
- is_suggested_reviewer
- priority
- signal_count
- signals_at_run
- source_products
- status
- summary
- title
- total_weight
- updated_at
PauseResponse:
type: object
properties:
status:
type: string
description: Always 'paused'.
paused_until:
type: string
format: date-time
description: The timestamp the pipeline is paused until.
required:
- paused_until
- status
SourceProductEnum:
enum:
- session_replay
- llm_analytics
- github
- linear
- zendesk
- conversations
- error_tracking
type: string
description: '* `session_replay` - Session replay
* `llm_analytics` - LLM analytics
* `github` - GitHub
* `linear` - Linear
* `zendesk` - Zendesk
* `conversations` - Conversations
* `error_tracking` - Error tracking'
SignalReportStatusEnum:
enum:
- potential
- candidate
- in_progress
- pending_input
- ready
- failed
- deleted
- suppressed
type: string
description: '* `potential` - Potential
* `candidate` - Candidate
* `in_progress` - In Progress
* `pending_input` - Pending Input
* `ready` - Ready
* `failed` - Failed
* `deleted` - Deleted
* `suppressed` - Suppressed'
PauseUntilRequest:
type: object
properties:
timestamp:
type: string
format: date-time
description: Pause the grouping pipeline until this timestamp (ISO 8601).
required:
- timestamp
parameters:
ProjectIdPath:
in: path
name: project_id
required: true
schema:
type: string
description: Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
securitySchemes:
PersonalAPIKeyAuth:
type: http
scheme: bearer
x-tagGroups:
- name: All endpoints
tags:
- LLM Analytics
- actions
- activity_log
- activity_logs
- advanced_activity_logs
- alerts
- annotations
- approval_policies
- batch_exports
- cdp
- change_requests
- code
- code-invites
- cohorts
- comments
- conversations
- core
- customer_analytics
- customer_journeys
- customer_profile_configs
- dashboard_templates
- dashboards
- data_color_themes
- data_modeling_jobs
- data_warehouse
- dataset_items
- datasets
- desktop_recordings
- domains
- early_access_feature
- early_access_features
- elements
- endpoints
- environments
- error_tracking
- evaluation_runs
- evaluations
- event_definitions
- event_filter
- event_schemas
- events
- experiment_holdouts
- experiment_saved_metrics
- experiments
- exports
- external_data_schemas
- external_data_sources
- feature_flags
- file_system
- file_system_shortcut
- flag_value
- groups
- groups_types
- health_issues
- heatmap_screenshots
- heatmaps
- hog_flows
- hog_function_templates
- hog_functions
- insight_variables
- insights
- integrations
- invites
- js-snippet
- legal_documents
- lineage
- live_debugger_breakpoints
- llm_analytics
- llm_prompts
- llm_skills
- logs
- managed_viewsets
- max
- max_tools
- mcp_server_installations
- mcp_servers
- mcp_store
- mcp_tools
- members
- notebooks
- oauth_applications
- object_media_previews
- organizations
- persisted_folder
- persons
- platform_features
- plugin_configs
- product_analytics
- product_tours
- project_secret_api_keys
- projects
- property_definitions
- proxy_records
- public_hog_function_templates
- query
- replay
- reverse_proxy
- role_external_references
- roles
- sandbox-environments
- sandbox_environments
- saved
- schema_property_groups
- sdk_doctor
- session_group_summaries
- session_recording_playlists
- session_recordings
- session_summaries
- sessions
- signals
- subscriptions
- surveys
- taggers
- task-automations
- task-runs
- task_automations
- tasks
- uploaded_media
- user_home_settings
- user_interviews
- users
- visual_review
- warehouse_dag
- warehouse_model_paths
- warehouse_saved_queries
- warehouse_saved_query_folders
- warehouse_tables
- warehouse_view_link
- warehouse_view_links
- web_analytics
- web_experiments
- web_vitals
- welcome
- workflows