Market Signals
List all market signal subscriptions for your organization
Retrieve a paginated list of market signal subscriptions. By default, deleted subscriptions
are excluded. Set includeDeleted=true to include them.
Results are sorted by creation date (latest first).
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Query Parameters
Maximum number of subscriptions to return (1-100, default 20)
201 <= value <= 100Number of subscriptions to skip for pagination (default 0)
00 <= valueInclude soft-deleted subscriptions in the response
falseResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/market-signals/subscriptions"{ "items": [ { "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "DevOps hiring tracker", "status": "active", "prompt": "Find companies hiring machine learning engineers", "filters": {}, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z" } ], "total": 5, "limit": 20, "offset": 0}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Create a market signal subscription to monitor job posts, LinkedIn posts, fundraising, investments, or IPOs
Create a subscription that continuously monitors external data sources and delivers matching signals to your webhook. Subscriptions run on a configurable polling interval (daily or weekly) and automatically detect and deliver new signals as they appear.
Subscription Types
| Type | Description | Data Source |
|---|---|---|
JOB_POSTS | Monitor new job postings matching your criteria | Job posting aggregators |
LINKEDIN_POST | Monitor LinkedIn posts matching keyword filters | LinkedIn (requires Sales Navigator) |
FUND_RAISED | Monitor fund closings and fundraising events | Web scraping + SEC EDGAR |
RECENT_INVESTMENT | Monitor recent investment and funding rounds | Web scraping + SEC EDGAR |
IPO | Monitor IPO and public listing announcements | Web scraping + SEC EDGAR |
Filter Modes
Filters can be provided in three ways:
- Prompt only (JOB_POSTS): Provide a natural language
promptand the AI generates complete filters - Prompt + filters (JOB_POSTS): Provide both; the AI augments your filters with prompt intent
- Filters only: Provide structured filters directly (required for LINKEDIN_POST)
Webhook Delivery
Matched signals are batched and delivered to your webhookUrl on each polling interval.
Each delivery includes an array of signal objects with metadata, payload, and confidence scores.
Use webhookSecret to verify webhook signatures via HMAC-SHA256.
LinkedIn Post Requirements
LINKEDIN_POST subscriptions require a connected LinkedIn Sales Navigator account. If no connector is found, the request returns an error with setup instructions.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
The type of market signal to monitor. Determines which data sources are polled and which filter schema is accepted.
"JOB_POSTS" | "LINKEDIN_POST" | "FUND_RAISED" | "RECENT_INVESTMENT" | "IPO"Optional display name for the subscription
length <= 200Natural language prompt for AI-based filter generation (JOB_POSTS only). When provided without filters, the AI generates complete filters from the prompt. When provided with filters, the AI augments the filters with prompt intent. Not yet supported for LINKEDIN_POST.
Subscription filters. The schema depends on the type field:
JOB_POSTS filters:
titleKeywords(string[]): Natural language title matchingexcludeTitleKeywords(string[]): Title exclusionstitlePatterns(string[]): Regex patterns for job titlesexcludeTitlePatterns(string[]): Regex exclusion patterns for titlesdescriptionKeywords(string[]): Description keyword matchingexcludeDescriptionKeywords(string[]): Description exclusionsdescriptionPatterns(string[]): Regex patterns for descriptionsexcludeDescriptionPatterns(string[]): Regex exclusion patterns for descriptionscountries(string[]): ISO country codes for job locationseniority(string[]): Seniority levels (c_level, staff, senior, mid_level, junior)technologySlugs(string[]): Required technologiesminSalaryUsd(number): Minimum annual salary in USDmaxSalaryUsd(number): Maximum annual salary in USDremote(boolean): Filter for remote jobs onlycompanyDomains(string[]): Specific company domains to monitorexcludeCompanyDomains(string[]): Company domains to excludecompanyNames(string[]): Partial match company namesexcludeCompanyNames(string[]): Company names to excludeminEmployees(number): Minimum company sizemaxEmployees(number): Maximum company sizecompanyCountries(string[]): Company HQ country codescompanyTechnologySlugs(string[]): Company tech stack filterexcludeRecruitingAgencies(boolean): Filter out staffing agenciesfundingStages(string[]): Funding stages (seed, series_a, series_b, etc.)industryIds(string[]): LinkedIn industry IDs to includeexcludeIndustryIds(string[]): LinkedIn industry IDs to excludepromptFilter(string): AI-based relevance scoring promptmaxLookbackDays(number): How far back to look in days
LINKEDIN_POST filters:
keywordsAll(string[]): Boolean AND keywordskeywordsAny(string[]): Boolean OR keywordskeywordsNone(string[]): Boolean NOT keywordspromptFilter(string): AI-based content + persona filtering promptmaxLookbackDays(number): Lookback period in days
FUND_RAISED / RECENT_INVESTMENT / IPO filters (shared):
searchQueries(string[]): Custom search querieskeywords(string[]): Keywords appended to default queriesexcludeKeywords(string[]): Excluded keywordscountries(string[]): Geographic filtering (reserved)minAmountUsd(number): Minimum deal size (reserved)maxLookbackDays(number): Lookback period in dayspromptFilter(string): AI-based relevance scoring prompt (reserved)
Required for LINKEDIN_POST. Optional for JOB_POSTS when prompt is provided.
URL to receive webhook notifications when new signals are matched
urilength <= 2048Optional secret for HMAC-SHA256 webhook signature verification
Maximum number of signals to deliver per polling interval (1-10000, default 500)
5001 <= value <= 10000Polling interval for checking new signals
"daily""daily" | "weekly"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/market-signals/subscriptions" \ -H "Content-Type: application/json" \ -d '{ "type": "JOB_POSTS", "name": "DevOps hiring in US tech", "filters": { "titleKeywords": [ "DevOps Engineer", "Site Reliability Engineer" ], "countries": [ "US" ], "minEmployees": 50, "maxEmployees": 500, "excludeRecruitingAgencies": true }, "webhookUrl": "https://myapp.com/webhooks/market-signals", "interval": "daily", "intervalSignalLimit": 100 }'{ "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "AI/ML hiring startups", "status": "active", "prompt": "Find companies hiring machine learning engineers at seed to Series B startups in Europe", "filters": { "type": "JOB_POSTS", "titleKeywords": [ "Machine Learning Engineer", "ML Engineer", "AI Engineer" ], "countries": [ "DE", "FR", "GB", "NL", "SE" ], "fundingStages": [ "seed", "series_a", "series_b" ] }, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": "LINKEDIN_CONNECTOR_REQUIRED", "message": "No LinkedIn / Sales Navigator connector found for this organization. Please connect using the Saber Chrome extension."}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Get a market signal subscription by ID
Retrieve a single market signal subscription including its filter configuration and status.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"{ "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "DevOps hiring tracker", "status": "active", "prompt": "Find companies hiring machine learning engineers", "filters": {}, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Update a market signal subscription
Partially update a subscription's configuration. All fields are optional; only provided
fields are updated. The subscription type is immutable and cannot be changed after creation.
When filters or webhook configuration changes, the active polling schedule is automatically refreshed. When the polling interval changes, the schedule is recreated.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription to update
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Updated display name
length <= 200Updated natural language prompt (JOB_POSTS only)
Updated subscription filters (must match the subscription's type schema)
Updated webhook URL
urilength <= 2048Updated webhook secret
Updated maximum signals per interval (1-10000)
1 <= value <= 10000Updated polling interval. Changing this restarts the polling schedule.
"daily" | "weekly"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d" \ -H "Content-Type: application/json" \ -d '{ "filters": { "titleKeywords": [ "DevOps Engineer", "Platform Engineer" ], "countries": [ "US", "GB" ] } }'{ "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "DevOps hiring tracker", "status": "active", "prompt": "Find companies hiring machine learning engineers", "filters": {}, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Delete a market signal subscription
Soft-delete a subscription and stop signal delivery. The subscription will no longer deliver signals. This operation cannot be undone via the API.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription to delete
uuidResponse Body
application/json
application/json
application/json
curl -X DELETE "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Pause a market signal subscription
Pause an active subscription. No new signals will be delivered until the subscription is resumed. The subscription configuration is preserved.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription to pause
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/pause"{ "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "DevOps hiring tracker", "status": "active", "prompt": "Find companies hiring machine learning engineers", "filters": {}, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Resume a paused market signal subscription
Resume a paused subscription. Signal polling restarts and signals will be delivered again on the next interval.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription to resume
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/resume"{ "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "DevOps hiring tracker", "status": "active", "prompt": "Find companies hiring machine learning engineers", "filters": {}, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}Trigger an immediate run of a market signal subscription
Trigger an immediate polling run for the subscription, regardless of the normal interval schedule. This is useful for testing a new subscription or forcing a refresh after updating filters.
The request succeeds regardless of the subscription's status. However, only
subscriptions in active status will poll for new signals and deliver
signals. Paused or deleted subscriptions return 200 but do not trigger a run.
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription to trigger
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/trigger"{ "id": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "organizationId": "org_123", "type": "JOB_POSTS", "name": "DevOps hiring tracker", "status": "active", "prompt": "Find companies hiring machine learning engineers", "filters": {}, "webhookUrl": "https://myapp.com/webhooks/market-signals", "intervalSignalLimit": 500, "interval": "daily", "createdAt": "2024-06-15T10:00:00Z", "updatedAt": "2024-06-15T10:00:00Z"}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}List signals delivered by a market signal subscription
Retrieve a paginated list of signals that have been matched and stored by a subscription. Each signal includes the raw payload from the data source (e.g., job posting details, LinkedIn post content, or funding announcement), along with metadata like confidence scores and delivery status.
Results are sorted by creation date (latest first).
Authorization
ApiKeyAuth API key authentication using Bearer token. Format: sk_live_ followed by a secure random string.
In: header
Path Parameters
The unique identifier of the subscription
uuidQuery Parameters
Maximum number of signals to return (1-100, default 20)
201 <= value <= 100Number of signals to skip for pagination (default 0)
00 <= valueResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/market-signals/subscriptions/a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/signals"{ "items": [ { "id": "sig_001", "subscriptionId": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "jobPostingId": "jp_123", "externalSignalId": null, "payload": { "title": "Senior DevOps Engineer", "company": "Acme Corp", "location": "San Francisco, CA", "url": "https://jobs.acme.com/devops" }, "confidenceScore": 0.92, "status": "delivered", "publishedAt": "2024-06-14T08:00:00Z", "createdAt": "2024-06-15T10:30:00Z", "deliveredAt": "2024-06-15T10:31:00Z" }, { "id": "sig_002", "subscriptionId": "a12b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d", "jobPostingId": null, "externalSignalId": "li_post_456", "payload": { "text": "Excited to announce our Series B funding...", "author": { "name": "Jane CEO", "headline": "CEO at TechStartup" } }, "confidenceScore": 0.87, "status": "pending", "publishedAt": "2024-06-15T09:00:00Z", "createdAt": "2024-06-15T10:30:00Z", "deliveredAt": null } ], "total": 42, "limit": 20, "offset": 0}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}{ "error": { "type": "VALIDATION", "code": "VALIDATION_ERROR", "message": "validation failed for 'departments': invalid value: Engineering Ops", "errorCode": "string", "errorAction": "string", "details": {}, "requestId": "e69ed773-2674-4dca-be61-886d6698f360", "fields": [ { "field": "domain", "message": "'domain' must be a valid hostname (e.g., 'example.com') without protocol (https://) or path" } ], "debug": { "cause": "string" } }}