For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
API StudioContact Support
GuidesAPI ReferenceChangelog
GuidesAPI ReferenceChangelog
  • API Reference
          • GETEvent Feed
          • GETEvent by ID
          • GETPublication Feed
          • GETArticle by ID
          • POSTSubscribe to webhook alerts
          • POSTCreate subscription
          • GETList subscriptions
          • GETGet subscription
          • PATCHUpdate subscription
          • DELUnsubscribe
LogoLogo
API StudioContact Support
API ReferenceDatasetsOdysseyFeed

Create subscription

POST
https://api.runcaptain.com/v2/datasets/odyssey/webhooks/subscriptions
POST
/v2/datasets/odyssey/webhooks/subscriptions
1import requests
2
3BASE_URL = "https://api.runcaptain.com"
4API_KEY = "your_api_key"
5
6response = requests.post(
7 f"{BASE_URL}/v2/datasets/odyssey/webhooks/subscriptions",
8 headers={"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"},
9 json={
10 "callback_url": "https://example.com/hooks/captain",
11 "watchlist_domains": ["stripe.com", "airbnb.com"],
12 "feeds": ["events", "publications"],
13 "secret": "whsec_your_signing_secret",
14 },
15 timeout=30.0,
16)
17print(response.json())
1{
2 "id": "whk_123",
3 "callback_url": "https://example.com/hooks/captain",
4 "watchlist_count": 2,
5 "feeds": [
6 "events",
7 "publications"
8 ],
9 "status": "active",
10 "created_at": "2026-05-29T00:00:00Z"
11}
Register a watchlist webhook. RESTful alias of `POST /webhooks/subscribe` with identical behavior. Captain POSTs a `watchlist.match` body to your `callback_url`; see the `WatchlistMatchPayload` schema. **Auth:** send `Authorization: Bearer <api_key>`. Include `X-Organization-ID` when your key is not already scoped to an organization. Subscriptions are visible only to the organization that created them.
Was this page helpful?
Previous

List subscriptions

Next
Built with

Register a watchlist webhook. RESTful alias of POST /webhooks/subscribe with identical behavior. Captain POSTs a watchlist.match body to your callback_url; see the WatchlistMatchPayload schema.

Auth: send Authorization: Bearer <api_key>. Include X-Organization-ID when your key is not already scoped to an organization. Subscriptions are visible only to the organization that created them.

Authentication

AuthorizationBearer
Bearer token authentication using API key

Headers

X-Organization-IDstringOptional

Request

This endpoint expects an object.
callback_urlstringRequired
HTTPS endpoint Captain POSTs matches to.
watchlist_domainslist of stringsRequired

Company domains to watch, e.g. ["stripe.com", "airbnb.com"].

feedslist of enumsOptional
Subset of feeds to watch. Omit to watch both.
Allowed values:
secretstringOptional

Signing secret for the HMAC-SHA256 signature. Write-only: sent on create and never returned.

Response

The created subscription. The secret is not echoed back.

idstring
callback_urlstring
watchlist_countinteger
feedslist of enums
Allowed values:
statusenum
Allowed values:
created_atstringformat: "date-time"

Errors

401
Unauthorized Error
422
Unprocessable Entity Error