Webhooks
Authorization
InfraApiKey Send sk_live_* (production) or sk_test_* (test mode).
In: header
Response Body
application/json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/webhook-endpoints"{ "data": [ { "id": 7, "url": "https://example.com/hooks/signals", "topics": [ "filing.created", "transcript.published" ], "secret_hint": "whsec_2a5f1e2d...", "created_at": "2026-07-22T08:30:00+00:00" } ]}{ "type": "https://docs.signals.ai/errors/invalid-key", "title": "Invalid API key", "status": 401, "detail": "Missing or invalid API key.", "request_id": "req_0dc23f9b4a0f8f2a", "instance": "/v1/companies/UBER"}{ "type": "https://docs.signals.ai/errors/rate-limited", "title": "Rate limit exceeded", "status": 429, "detail": "Your current plan's burst or daily quota has been exceeded.", "request_id": "req_8b44f5d1a8d1f48b", "instance": "/v1/search"}Authorization
InfraApiKey Send sk_live_* (production) or sk_test_* (test mode).
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/problem+json
application/problem+json
application/json
application/problem+json
curl -X POST "https://example.com/v1/webhook-endpoints" \ -H "Content-Type: application/json" \ -d '{ "url": "string", "topics": [ "string" ] }'{ "id": 7, "url": "https://example.com/hooks/signals", "topics": [ "filing.created", "transcript.published" ], "signing_secret": "whsec_2a5f1e2dd9a5b4c3efaf0d7941d60f98", "created_at": "2026-07-22T08:30:00+00:00"}{ "type": "https://docs.signals.ai/errors/invalid-key", "title": "Invalid API key", "status": 401, "detail": "Missing or invalid API key.", "request_id": "req_0dc23f9b4a0f8f2a", "instance": "/v1/companies/UBER"}{ "type": "https://docs.signals.ai/errors/tier-required", "title": "Tier Required", "status": 403, "detail": "Webhooks require the Builder plan or higher.", "required_tier": "builder", "request_id": "req_d42d971e0fb2d4a8", "instance": "/v1/webhook-endpoints"}{ "detail": [ { "type": "string_too_short", "loc": [ "body", "query" ], "msg": "String should have at least 2 characters", "input": "q", "ctx": { "min_length": 2 } } ]}{ "type": "https://docs.signals.ai/errors/rate-limited", "title": "Rate limit exceeded", "status": 429, "detail": "Your current plan's burst or daily quota has been exceeded.", "request_id": "req_8b44f5d1a8d1f48b", "instance": "/v1/search"}Authorization
InfraApiKey Send sk_live_* (production) or sk_test_* (test mode).
In: header
Path Parameters
Response Body
application/json
application/problem+json
application/problem+json
application/json
application/problem+json
curl -X DELETE "https://example.com/v1/webhook-endpoints/0"{ "ok": true}{ "type": "https://docs.signals.ai/errors/invalid-key", "title": "Invalid API key", "status": 401, "detail": "Missing or invalid API key.", "request_id": "req_0dc23f9b4a0f8f2a", "instance": "/v1/companies/UBER"}{ "type": "https://docs.signals.ai/errors/not-found", "title": "Not Found", "status": 404, "detail": "Webhook endpoint not found."}{ "detail": [ { "type": "string_too_short", "loc": [ "body", "query" ], "msg": "String should have at least 2 characters", "input": "q", "ctx": { "min_length": 2 } } ]}{ "type": "https://docs.signals.ai/errors/rate-limited", "title": "Rate limit exceeded", "status": 429, "detail": "Your current plan's burst or daily quota has been exceeded.", "request_id": "req_8b44f5d1a8d1f48b", "instance": "/v1/search"}Authorization
InfraApiKey Send sk_live_* (production) or sk_test_* (test mode).
In: header
Path Parameters
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/json
application/problem+json
curl -X POST "https://example.com/v1/webhook-endpoints/0/test"{ "result": { "delivered": true, "status": 200 }}{ "type": "https://docs.signals.ai/errors/invalid-key", "title": "Invalid API key", "status": 401, "detail": "Missing or invalid API key.", "request_id": "req_0dc23f9b4a0f8f2a", "instance": "/v1/companies/UBER"}{ "type": "https://docs.signals.ai/errors/tier-required", "title": "Tier Required", "status": 403, "detail": "Webhooks require the Builder plan or higher.", "required_tier": "builder", "request_id": "req_d42d971e0fb2d4a8", "instance": "/v1/webhook-endpoints"}{ "type": "https://docs.signals.ai/errors/not-found", "title": "Not Found", "status": 404, "detail": "Webhook endpoint not found."}{ "detail": [ { "type": "string_too_short", "loc": [ "body", "query" ], "msg": "String should have at least 2 characters", "input": "q", "ctx": { "min_length": 2 } } ]}{ "type": "https://docs.signals.ai/errors/rate-limited", "title": "Rate limit exceeded", "status": 429, "detail": "Your current plan's burst or daily quota has been exceeded.", "request_id": "req_8b44f5d1a8d1f48b", "instance": "/v1/search"}Authorization
InfraApiKey Send sk_live_* (production) or sk_test_* (test mode).
In: header
Response Body
application/json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/webhook-topics"{ "data": [ { "topic": "filing.created", "description": "A new SEC filing was indexed for a covered issuer." }, { "topic": "transcript.published", "description": "A first-party earnings-call transcript passed the serving gate." } ]}{ "type": "https://docs.signals.ai/errors/invalid-key", "title": "Invalid API key", "status": 401, "detail": "Missing or invalid API key.", "request_id": "req_0dc23f9b4a0f8f2a", "instance": "/v1/companies/UBER"}{ "type": "https://docs.signals.ai/errors/rate-limited", "title": "Rate limit exceeded", "status": 429, "detail": "Your current plan's burst or daily quota has been exceeded.", "request_id": "req_8b44f5d1a8d1f48b", "instance": "/v1/search"}