Dashboard
Every selected, accepted change appears in the workspace dashboard. This channel stays enabled.
Monitoring API & MCP
Use your application or AI assistant to select a legal entity, choose its list and signals, and activate the same monitoring you see in your workspace.
FROM IDENTIFICATION TO UPDATES
Choose a list and the changes that matter. Read the confirmed activation state, then receive events in the dashboard and through your chosen email and webhook channels.
A saved record is not an active subscription. Always check the response.
Developer quickstart
An active paid workspace and a scoped API key are required. Keep the key on your server. These examples contain placeholders; no monitoring is started by opening this page.
Use the company name, registration or VAT number and its two-letter country code. Present ambiguous matches for selection.
curl 'https://companydelta.com/api/v1/companies/search' \
-H "Authorization: Bearer $COMPANYDELTA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"query":"YOUR REGISTRATION NUMBER","country":"GB","search_by":"registration_number"}'Keep the chosen result’s selection_token. Search tokens expire after 24 hours. Do not substitute an unverified company name or an upstream ID.
Read GET /api/v1/lists and GET /api/v1/watch-fields. Create a list with POST /api/v1/lists and {"name":"Strategic Suppliers"} if needed. Read GET /api/v1/notification-options for available recipients and destinations.
curl 'https://companydelta.com/api/v1/monitoring' \
-H "Authorization: Bearer $COMPANYDELTA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"selection_token":"SELECTED_SEARCH_TOKEN",
"list_id":"YOUR_LIST_ID",
"fields":["company.status","officer.appointment"],
"alerts":{"email_recipients":null,"webhook_ids":[]}
}'This example uses the workspace email default and disables webhooks for this company. Dashboard updates stay enabled. Use an existing company_id instead of selection_token to resume a saved company.
Inspect company_id, list, fields, alerts and monitoring_state. Read the saved company again with GET /api/v1/monitoring/{company_id}; its monitoring object contains the latest state. Retrieve events using GET /api/v1/events?company_id=YOUR_COMPANY_ID, or receive signed webhook deliveries.
REST contract
| Endpoint | Purpose | Scope |
|---|---|---|
POST /api/v1/companies/search | Search by name, registration or VAT and country. | search |
POST /api/v1/companies/preview | Inspect a selected search token before saving. | read + search |
GET /api/v1/companies/{company_id} | Read a saved company, settings and evidence. | read |
GET /api/v1/lists | List workspace company lists. | read |
POST /api/v1/lists | Create a list; reuses an existing name. | monitoring:write |
GET /api/v1/watch-fields | List the supported monitoring signals. | read |
POST /api/v1/monitoring | Save or resume a company and add signals. | monitoring:write |
GET /api/v1/monitoring/{company_id} | Read current activation state and settings. | read |
PATCH /api/v1/monitoring/{company_id} | Replace signals, choose a list or change alerts. | monitoring:write |
POST /api/v1/monitoring/{company_id}/pause | Pause monitoring; send an empty JSON object. | monitoring:write |
GET /api/v1/notification-options | Read recipients, destinations and email readiness. | read |
POST /api/v1/webhooks | Create an HTTPS destination; receive its signing secret once. | integrations:write |
Existing GET /api/v1/companies, /events and /cases routes remain available. List responses contain data and next_cursor; pass the cursor back and use up to 100 records per request.
Retry behaviour: a company is unique by workspace, country and registration number. Repeating a start request reuses the company and preserves existing signals. PATCH replaces fields when supplied. Omitted settings are preserved. With several lists, choose list_id explicitly for a new company.
Route the right updates
Every selected, accepted change appears in the workspace dashboard. This channel stays enabled.
email_recipients: null uses all current workspace members. Provide an array of member email addresses to select recipients, or [] to turn email off for this company. External addresses must first be added to the workspace.
webhook_ids: null uses all enabled workspace destinations. Provide selected IDs, or [] to turn webhooks off for this company. Destinations must belong to this workspace.
Creating a webhook requires a separate permission, granted by a workspace owner or admin. Send {"name":"ERP","url":"https://your-domain.com/company-events"} to POST /api/v1/webhooks. Save the returned signing secret securely. A repeated request for the same enabled URL returns the existing destination without revealing its secret again. No test message is sent automatically.
Queued deliveries are checked against current preferences before sending. Email and webhook delivery depend on configured services and receiver availability. Read the signature and delivery guidance →
Read the result
| State | Meaning | Next action |
|---|---|---|
active | The provider confirmed the selected subscription fields. | Keep the company ID and follow events. Activation does not guarantee every source is current. |
connecting | The settings are saved; activation is still pending. | Read the monitoring state again. |
needs_attention | The activation attempt failed. | Inspect monitoring_error, correct the connection and retry the same company. |
paused | Monitoring is paused for this workspace. | Start again to resume. |
upgrade_required | The workspace lacks monitoring entitlement. | Check the plan. |
saved | The record is saved without enabled monitoring. | Start monitoring when ready. |
Successful searches and live previews each consume one search credit. Failed searches restore that credit. New saved companies consume a company slot; adding signals to an existing company does not create a second slot. HTTP 401 indicates a missing, expired or revoked credential; 403 indicates insufficient scope or plan access; 409 indicates an unresolved selection or capacity issue.
MCP equivalents
Use https://companydelta.com/api/mcp with CompanyDelta OAuth or a compatible bearer-key client. The Site-managed connector uses https://companydelta-homepage.sens663.chatgpt.site/mcp and the hosting platform’s account authentication; it can list your eligible workspaces before you choose one.
search_companies, get_company, list_lists, create_list and list_watch_fields.
start_monitoring, update_monitoring and pause_monitoring. Writes require confirmed: true after the assistant obtains your explicit confirmation.
get_notification_options, create_webhook, list_companies, list_events and list_reviews.
Permission changes and revocation restrict subsequent calls. The assistant must report activation failures accurately. Connecting an assistant does not keep a chat running or push future messages into the conversation: CompanyDelta’s monitoring continues independently, and the assistant retrieves changes when asked.
Put your first company under monitoring
Create a scoped key or connect your assistant, then confirm one company before scaling your integration.
Review workflows
In Agent workflows, choose Create workflow to open five editable templates: company status, ownership, director, financial information and company details changes. Select saved companies or a list, choose the reviewer and priority, then review the exact monitoring signals before activation.
Activation adds missing signals, resumes the paused companies shown in the confirmation, and preserves existing monitoring signals and alert recipients. The workflow remains paused until monitoring is confirmed for every company. If setup is interrupted or a company fails, edit the saved workflow to retry. Companies added to a list later must also have the required signals enabled. A coverage banner and “Review monitoring setup” button show gaps and let you preview and confirm the missing setup.
Saving a paused workflow leaves monitoring unchanged. Workflows act on future matching events; earlier changes are not replayed. The same templates and saved workflows are available through the dashboard, API and MCP. Use the workflow endpoints below to configure and activate a rule from your application or assistant.
Workflow API & MCP
Use an active paid workspace. All workflow operations require read. Creation, edits, archive and pause need workflows:write; activation also needs monitoring:write. Existing keys and OAuth connections must explicitly include the new workflow permission before they can manage rules.
| REST endpoint | MCP tool | Result |
|---|---|---|
GET /api/v1/workflow-templates | list_workflow_templates | Five editable templates and their defaults. |
GET /api/v1/workflows | list_workflows | Saved rules, readiness and statistics. Supports limit and cursor. |
GET /api/v1/workflows/{workflow_id} | get_workflow | Rule, company coverage, required monitoring and recent potential matches. |
POST /api/v1/workflows | create_workflow | Create a paused rule; no monitoring is started. |
PATCH /api/v1/workflows/{workflow_id} | update_workflow | Preserve omitted settings and save the edited rule paused. |
POST /api/v1/workflows/previewPOST /api/v1/workflows/{workflow_id}/preview | preview_workflow | Inspect a proposed configuration or a saved rule without changing anything. |
POST /api/v1/workflows/{workflow_id}/activate | activate_workflow | Confirm monitoring and enable the rule; continue pending batches as described below. |
POST /api/v1/workflows/{workflow_id}/pause | pause_workflow | Stop this rule’s review tasks. Company monitoring continues. |
POST /api/v1/workflows/{workflow_id}/archive | archive_workflow | Archive and keep history. Use archived: false to restore paused. |
POST /api/v1/companies | save_company | Save a selected legal entity to a list without activating monitoring. |
GET /api/v1/cases/{review_id} | get_review | Review, source event, current revision and latest 100 decision-history entries. |
PATCH /api/v1/cases/{review_id} | update_review | Reassign, change priority or due date, record a decision and resolve. Requires reviews:write. |
GET /api/v1/workflows/{workflow_id}/runs | list_workflow_runs | Paginated matches with review IDs, owners, priority and outcomes. Default 25, maximum 100; follow next_cursor. |
If the company is not saved, use search_companies, explicitly select its legal entity, then call save_company with selection_token and list_id. This requires read and workflows:write, consumes a saved-company slot and starts no monitoring. Existing monitoring settings are preserved. Search separately requires search and uses one search credit on success. The dashboard has “Find and add company” inside the workflow builder.
Read templates, GET /api/v1/lists and GET /api/v1/notification-options. Template IDs are status, ownership, directors, financials and details. The assignee must be a current owner, admin or analyst’s email; read-only viewers cannot be assigned reviews; omit it or use an empty string to leave the review unassigned.
Use scope_type: "portfolio" with one list ID, "companies" with selected saved company IDs, or "all" with no scope IDs. Custom rules omit template_id and provide name and types from the watch-field catalogue.
curl 'https://companydelta.com/api/v1/workflows' \
-H "Authorization: Bearer $COMPANYDELTA_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"request_id":"supplier-ownership-rule-1",
"template_id":"ownership",
"scope_type":"portfolio",
"scope_ids":["YOUR_LIST_ID"],
"assignee":"MEMBER_EMAIL",
"priority":"high"
}'Store workflow_id. Retrying the same request with the same request_id reuses the rule. Reusing that ID with different settings returns a conflict. The workflow is initially paused. You can override a template’s name, types, priority and optional condition.
POST an empty JSON object to /api/v1/workflows/{workflow_id}/preview. Inspect monitoring_setup.companies, required_fields, readiness, overlaps and the assigned reviewer. Keep monitoring_setup.confirmation for activation. A changed rule or company scope requires a fresh preview.
Conditions support any, equals, not_equals, contains, gt and lt. Set condition_value for every operator except any. Text comparisons ignore case; numeric comparisons require numeric new values.
POST /api/v1/workflows/{workflow_id}/activate
{
"monitoring_confirmation":"CONFIRMATION_FROM_PREVIEW"
}Each request checks up to three companies within a bounded time window. If activation_status is pending, repeat the same endpoint with the returned activation_token and next_cursor as cursor, keeping the original confirmation:
{
"monitoring_confirmation":"CONFIRMATION_FROM_PREVIEW",
"activation_token":"TOKEN_FROM_PENDING_RESPONSE",
"cursor":3
}Only enabled: true with activation_status: "active" confirms completion. needs_attention leaves the workflow paused and reports company failures in monitoring_setup. Review the failures, preview again and retry without an activation token. Completed monitoring is preserved. If a continuation session ended, read the workflow before starting a new attempt.
Read the workflow’s /runs for recent matches and GET /api/v1/cases for review tasks. PATCH settings to save an edited rule paused, then preview and activate it again. POST an empty JSON object to /pause to stop future tasks from that rule without changing company monitoring.
MCP uses the tool names in the table and workflow_id in arguments. Every write requires confirmed: true after explicit user confirmation. The assistant should resolve the reviewer through get_notification_options, preview the setup, and explain monitoring changes before activating. It may continue pending batches under the same confirmation. Read calls do not require confirmation and do not use search credits.
Example: “Use the ownership template for my Suppliers list, assign high-priority reviews to my compliance reviewer, and show me the setup before activation.” CompanyDelta runs confirmed workflows independently of the assistant conversation.
Complete the review
Read GET /api/v1/cases/{review_id} first. Submit its current review.revision when updating. All review operations require read; updates additionally require reviews:write. Existing keys and OAuth connections need this permission explicitly added. MCP updates also require confirmed: true.
PATCH /api/v1/cases/REVIEW_ID
{
"revision": 0,
"status": "resolved",
"note": "Reviewed the source filing and recorded the supplier decision."
}Supported statuses are open, in_review and resolved. Resolution requires a written decision. You can also update assignee (an eligible member email or empty string), priority, and due (YYYY-MM-DD or null). Omitted fields are preserved. A stale revision returns HTTP 409 without changing the review or queuing notifications; read the latest state and confirm your intended change again. Each successful revision records its actor and before/after values.
Removing a reviewer or changing their role to viewer clears their workflow assignments and moves their unresolved reviews to the unassigned queue. Existing resolved decisions and run-history snapshots are retained. Queued task emails recheck the current reviewer’s access and assignment before sending.
Workflows support notify_assignee (default true). Assigned reviewers receive a transactional email with a direct task link. This is separate from company-change email recipients. Disable it in the workflow’s Review action step or through the API. Reassignment can notify the new reviewer; unassigned or resolved reviews do not generate assignment emails.
Webhook destinations opt into event_types: company.changed, review.created and review.resolved. Existing destinations retain company changes only. Select review events under Notifications → Event subscriptions, or supply the array to create_webhook. Per-company webhook destination preferences still apply. Review payloads include the review ID, status, assignee, priority, revision, decision, task URL and source event ID. Delivery uses the same signature headers, durable queue and retries as company events. Deduplicate by delivery ID; do not depend on delivery order.
get_company includes monitoring.workflow_coverage; save/monitoring responses include workflow_coverage directly. A new list member can be in scope while missing required signals. Inspect get_workflow, preview its updated company scope and confirm activation to repair coverage. No additional subscriptions are started merely because a company joins a list.
Archive keeps company monitoring, existing reviews and all run history. Restore with {"archived": false}; the rule stays paused until you preview and activate it. Workflow listings hide archived rules by default; use include_archived=true to include them. Run history supports limit (1–100) and an opaque cursor. Pass next_cursor unchanged until it is null, including for archived workflows.
Before you integrate
The company data API overview explains which workspace resources fit your workflow. The data dictionary explains selected source fields; it does not replace the endpoint contract below. Use the company data quality checklist when deciding how to handle unmatched entities, missing fields and failed checks.