Docs
Monitoring

Watches

Create and manage company monitoring watches

A watch subscribes you to changes on a specific French company identified by its SIREN number. You can create watches scoped to specific event categories or receive all events.

POST /v1/monitoring/watches

Create a new watch.

Authentication: Secret API key

Request body

{
  "siren": "443061841",
  "categories": ["governance_change", "capital_change"],
  "notificationChannels": ["webhook", "email"]
}
FieldTypeRequiredDescription
sirenstringYes9-digit SIREN number of the company to watch
categoriesstring[]NoEvent categories to monitor. Omit to watch all categories.
notificationChannelsstring[]NoHow to be notified: "webhook", "email", or both. Defaults to ["webhook"].

Response 201

{
  "id": "3f2b8c1d-5e4a-4f6b-8c9d-0e1f2a3b4c5d",
  "userId": "b1c2d3e4-...",
  "organizationId": "a0b1c2d3-...",
  "siren": "443061841",
  "categories": ["governance_change", "capital_change"],
  "notificationChannels": ["webhook", "email"],
  "active": true,
  "createdAt": "2025-06-01T10:00:00.000+00:00",
  "updatedAt": "2025-06-01T10:00:00.000+00:00"
}

Response 409

Creating a second watch for a SIREN you already watch returns a conflict:

{ "error": "Watch already exists for this SIREN" }

curl example

curl -X POST https://api.verifiables.com/v1/monitoring/watches \
  -H "Authorization: Bearer oat_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "siren": "443061841",
    "categories": ["governance_change", "collective_proceeding"]
  }'

GET /v1/monitoring/watches

List all watches for your account. Results are paginated.

Authentication: Secret API key

Query parameters

ParameterTypeDefaultDescription
pagenumber1Page number
perPagenumber25Results per page (max 100)

Response 200

{
  "meta": {
    "total": 1,
    "perPage": 25,
    "currentPage": 1,
    "lastPage": 1
  },
  "data": [
    {
      "id": "3f2b8c1d-5e4a-4f6b-8c9d-0e1f2a3b4c5d",
      "siren": "443061841",
      "categories": ["governance_change", "capital_change"],
      "notificationChannels": ["webhook", "email"],
      "active": true,
      "createdAt": "2025-06-01T10:00:00.000+00:00",
      "updatedAt": "2025-06-01T10:00:00.000+00:00"
    }
  ]
}

curl example

curl https://api.verifiables.com/v1/monitoring/watches \
  -H "Authorization: Bearer oat_your_secret_key"

DELETE /v1/monitoring/watches/:id

Remove a watch. Events already collected are retained.

Authentication: Secret API key

Path parameters

ParameterTypeDescription
idstringWatch ID

Response 204

No content.

curl example

curl -X DELETE https://api.verifiables.com/v1/monitoring/watches/3f2b8c1d-5e4a-4f6b-8c9d-0e1f2a3b4c5d \
  -H "Authorization: Bearer oat_your_secret_key"

Alerts

Each watch has a per-category alert configuration. Every category is assigned a mode:

ModeBehavior
immediateNotify as soon as the event is detected
digestBatch into a daily or weekly digest
mutedNo notification (the event is still stored and queryable)

By default, critical categories (radiation, dissolution, collective_proceeding) are immediate, unknown is muted, and everything else goes to the digest.

GET /v1/monitoring/watches/:watchId/alerts

Get the current alert configuration for a watch. If you have never customized it, the defaults are returned.

Authentication: Secret API key

Response 200

{
  "watchId": "3f2b8c1d-5e4a-4f6b-8c9d-0e1f2a3b4c5d",
  "categoryModes": {
    "radiation": "immediate",
    "dissolution": "immediate",
    "collective_proceeding": "immediate",
    "governance_change": "digest",
    "capital_change": "digest",
    "unknown": "muted"
  },
  "digestFrequency": "daily",
  "mutedUntil": null,
  "escalationEmail": null,
  "escalationThresholdCount": null,
  "escalationThresholdHours": null
}
FieldTypeDescription
categoryModesobjectMap of event category to immediate, digest, or muted
digestFrequencystringdaily or weekly
mutedUntilstring | nullISO date; all notifications paused until then
escalationEmailstring | nullEmail notified when the escalation threshold is reached
escalationThresholdCountnumber | nullNumber of events that triggers an escalation
escalationThresholdHoursnumber | nullWindow (hours) for counting events toward escalation

PUT /v1/monitoring/watches/:watchId/alerts

Update the alert configuration for a watch. All fields are optional; omitted fields fall back to their defaults.

Authentication: Secret API key

Request body

{
  "categoryModes": {
    "governance_change": "immediate",
    "accounts_filed": "muted"
  },
  "digestFrequency": "weekly",
  "escalationEmail": "alerts@example.com",
  "escalationThresholdCount": 3,
  "escalationThresholdHours": 24
}

curl example

curl -X PUT https://api.verifiables.com/v1/monitoring/watches/3f2b8c1d-5e4a-4f6b-8c9d-0e1f2a3b4c5d/alerts \
  -H "Authorization: Bearer oat_your_secret_key" \
  -H "Content-Type: application/json" \
  -d '{
    "categoryModes": { "governance_change": "immediate" },
    "digestFrequency": "weekly"
  }'