External entity IDs, CSV exports, and connected dataset details
Adds support for your own external entity identifiers, CSV downloads for job and monitor results, and richer connected-dataset information in pull responses.External entity IDs
You can now attach your own identifier to an entity with the newexternal_entity_id field — store a CRM, data warehouse, or internal database ID
and round-trip it through CatchAll so you can join results back to your systems
without extra mapping work. The field is a free-form string (up to 255
characters) and is not enforced as unique.Where it appears:- Accepted when creating an entity via
POST /catchAll/entitiesand when updating one viaPATCH /catchAll/entities/{entity_id}. - Returned on entity responses, dataset entity summaries, and connected entities in Company Watchlist results. Null when not set.
CSV export endpoints
Pull job and monitor results directly as a CSV download for spreadsheet-friendly analysis and reporting. Each row is one record, with enrichment fields as columns, citations as a JSON column, and connected entities split intoevent_associated_entities and mention_entities JSON columns.New endpoints:GET /catchAll/pull/{job_id}/csv— Download a completed job’s results as CSV.GET /catchAll/monitors/pull/{monitor_id}/csv— Download the latest monitor run’s results as CSV.
Connected dataset details in pull responses
Job and monitor pull responses now include aconnected_datasets array — each
entry has the dataset id, name, and an is_deleted flag — alongside an
is_all_news_query boolean indicating whether the query was submitted as an
all-news (watchlist-generic) query.Fixes and improvements
- Reliability and observability improvements, data-model and validation hardening, and language-query guardrails.
- Relaxed company domain requirements and safer enrichment handling for edge cases.
Company Watchlist improvements and performance fixes
Adds two new Company Watchlist controls — association-type filtering and all-news queries — along with performance improvements and API quality fixes.Association type filtering
When submitting a job connected to a dataset (watchlist), you can now seted_association_type to control how strictly tracked entities must relate to
each returned event.event_associated— only returns events where a tracked entity is the primary actor (e.g., the company that raised funding, was acquired, or announced layoffs). Passing references are excluded.mention— returns any event where a tracked entity appears, whether as a primary actor or a passing reference.
association_type field indicating
how it relates to that specific record.New parameter:ed_association_typeonPOST /catchAll/submit— Filter connected-entity results by association type. Requiresconnected_dataset_ids.
All-news watchlist queries
You can now submit a connected job without specifying a topic query. Setfetch_all_watchlist_news: true to retrieve all news for the entities in your
connected watchlist — no topic required. Wildcard queries (*) and generic
phrases like “all news” also trigger this behavior.Monitors created from an all-news job preserve the behavior: each recurring run
collects all news for the connected watchlist, not topic-restricted results.fetch_all_watchlist_news without connected_dataset_ids returns a validation
error.New parameters:fetch_all_watchlist_newsonPOST /catchAll/submit— Whentrue, retrieves all news for connected watchlist entities without topic filtering. Requiresconnected_dataset_ids.fetch_all_watchlist_newsonPOST /catchAll/initialize— Preview validators and enrichments for an all-news watchlist query. Also acceptsconnected_dataset_ids.
Fixes and improvements
- Performance: Faster percolation queries, reduced Elasticsearch pressure, and lower HTTP client concurrency for more stable throughput under load.
- API correctness: Schema type cleanup and enum-based job-status retrieval. Improved OpenAPI spec to enable automated SDK generation.
- Project deletion: Better notification handling and improved response structure when deleting a project with resources.
Centralized webhooks, query validation, and projects
Introduces centralized webhook management to replace per-monitor inline configuration, a pre-submission query validation endpoint, and projects for organizing and sharing resources.Centralized webhooks
Replaces thewebhook inline field on monitor creation and update with a
reusable, resource-agnostic webhook system.Features:- Webhook management: Create named webhook endpoints at the organization level and reuse them across any number of jobs or monitors.
- Flexible assignment: Pass
webhook_idsat job or monitor creation time, or assign webhooks after creation. Each resource supports up to 5 webhooks. - Delivery modes:
fullsends all records in a single request per trigger.per_recordsends one request per record. - Authentication: Bearer token, API key header, and basic auth forwarded with each delivery request.
- Platform-formatted payloads:
slackandteamstypes send pre-formatted Slack Block Kit and Microsoft Teams Adaptive Card payloads automatically. - Test delivery: Verify endpoint reachability and authentication before attaching a webhook to a live resource.
- Delivery history: Inspect per-dispatch outcomes, HTTP status codes, and error messages for any job or monitor.
POST /catchAll/webhooks— Create a webhook.GET /catchAll/webhooks— List webhooks.GET /catchAll/webhooks/{webhook_id}— Get a webhook.PATCH /catchAll/webhooks/{webhook_id}— Update a webhook.DELETE /catchAll/webhooks/{webhook_id}— Delete a webhook.POST /catchAll/webhooks/{webhook_id}/test— Test webhook delivery.POST /catchAll/webhooks/{webhook_id}/resources— Assign a resource to a webhook.GET /catchAll/webhooks/{webhook_id}/resources— List resources assigned to a webhook.DELETE /catchAll/webhooks/{webhook_id}/resources/{resource_type}/{resource_id}— Remove a resource from a webhook.GET /catchAll/resources/{resource_type}/{resource_id}/webhooks— List webhooks assigned to a resource.GET /catchAll/webhook-history— Get webhook delivery history for a resource.
Query validation
Adds a pre-submission endpoint that checks whether a query is well-formed before creating a job.New endpoint:POST /catchAll/validate— Validate a query before submission.
Projects
Organizes jobs, monitors, and datasets into named containers that can be shared with teammates.Features:- Resource grouping: Assign resources to a project at creation time via
project_id, or post-hoc using the project resources endpoints. - Project filtering: Filter jobs, monitors, and datasets by project using
the
project_idquery parameter on all list endpoints. - Project overview: Get a resource status breakdown without fetching the full resource list.
GET /catchAll/projects— List projects.POST /catchAll/projects— Create a project.GET /catchAll/projects/{project_id}— Get a project.PATCH /catchAll/projects/{project_id}— Update a project.DELETE /catchAll/projects/{project_id}— Delete a project.GET /catchAll/projects/{project_id}/overview— Get resource counts by type and status.GET /catchAll/projects/{project_id}/resources— List resources in a project.POST /catchAll/projects/{project_id}/resources— Add resources to a project.DELETE /catchAll/projects/{project_id}/resources/{resource_type}/{resource_id}— Remove a resource from a project.
ED score filtering, entity attributes, and monitor timezone
Refines Company Watchlist with relevance threshold control and richer entity data in results; adds timezone support for monitor scheduling.Features:- ED score filtering: Submit jobs with
ed_score_minto exclude connected entities below a relevance threshold. Only records where at least one entity meets the minimum score are returned. - Entity attributes in results: Each matched entity in
connected_entitiesnow includes atypefield and acompanyobject with domain, alternative names, and key persons. - Monitor timezone: Set an explicit IANA timezone on monitor creation with
the new
timezoneparameter. Used as the fallback when the schedule string does not include one. Defaults to"UTC".
POST /catchAll/datasets/{dataset_id}/entities/listreplacesGET /catchAll/datasets/{dataset_id}/entitiesfor listing entities. Pagination and filter parameters are now accepted in the request body.POST /catchAll/datasets/uploadandPOST /catchAll/datasets/{dataset_id}/uploadnow require adomaincolumn. A missing column header returns422. Rows wheredomainis empty are skipped and reported invalidation_report.
Resource management and sharing
Introduces job and monitor deletion, monitor execution history, resource sharing, and filtering by ownership across all list endpoints.Features:- Delete jobs and monitors: Remove jobs and monitors you no longer need.
Deleted resources no longer appear in list results. Deletion is idempotent —
deleting an already-deleted resource returns
200. - Monitor status history: Inspect the full execution history of a monitor, including per-run record counts and webhook delivery results.
- Resource sharing: Jobs, monitors, and datasets shared with you by
organization members now appear in list responses with a
sharing_infoobject indicating who shared the resource, when, and with what permission level. - Ownership filter: All list endpoints for jobs, monitors, and datasets
support a new
ownershipparameter (all,own,shared) to filter results by who owns or shared them. Defaults toallfor backward compatibility. - Search filter: Filter jobs and monitors by text using the new
searchparameter on list endpoints.
DELETE /catchAll/jobs/{job_id}— Delete a job.DELETE /catchAll/monitors/{monitor_id}— Delete a monitor.GET /catchAll/monitors/{monitor_id}/status— Get monitor execution status history.
Company search
Introduces company search — track specific companies across CatchAll jobs by connecting datasets of entities.Features:- Entities: Define companies with names, domains, alternative names, and key persons.
- Datasets: Group entities into reusable collections (watchlists, portfolios).
- Connected jobs: Submit jobs with
connected_dataset_idsto activate company search mode. - Per-company scoring: Each result record includes a
connected_entitiesarray withentity_id,name,ed_score, andrelationfor each matched company.
GET /catchAll/entities— List entities.POST /catchAll/entities— Create a company entity.POST /catchAll/entities/batch— Create multiple entities.GET /catchAll/entities/{entity_id}— Get entity.PATCH /catchAll/entities/{entity_id}— Update entity.DELETE /catchAll/entities/{entity_id}— Delete entity.GET /catchAll/datasets— List datasets.POST /catchAll/datasets— Create dataset from entity IDs.POST /catchAll/datasets/upload— Create dataset from CSV.GET /catchAll/datasets/{dataset_id}— Get dataset.PATCH /catchAll/datasets/{dataset_id}— Update dataset.DELETE /catchAll/datasets/{dataset_id}— Delete dataset.GET /catchAll/datasets/{dataset_id}/entities— List entities in dataset.POST /catchAll/datasets/{dataset_id}/entities— Add entities to dataset.DELETE /catchAll/datasets/{dataset_id}/entities— Remove entities from dataset.GET /catchAll/datasets/{dataset_id}/status— Get dataset status history.POST /catchAll/datasets/{dataset_id}/upload— Add companies to dataset via CSV.
POST /catchAll/submitnow acceptsconnected_dataset_ids— an optional array of dataset UUIDs that activates company search mode.
Job modes, plan limits, and response improvements
Features:- Job modes: Submit jobs in
liteorbasemode with the newmodeparameter. Lite mode provides lightweight extraction with titles and citations only. Base mode runs the full pipeline with validation and enrichment. - Plan limits: Retrieve plan features and current usage, including concurrency slots, max results, lookback limits, and monthly credits.
POST /catchAll/user/limits— Get plan features and current usage.
GET /catchAll/pull/{job_id}now returnsmodeand full validator/enrichment objects instead of name-only arrays.GET /catchAll/jobs/usernow returnsmodeand maskeduser_keyfor each job.GET /catchAll/monitorsnow returns maskeduser_keyfor each monitor.- Fixed duplicate confidence values appearing in enrichment records.
- Fixed pagination handling in the pull endpoint.
- Improved multi-word query handling for lite mode.
- Gateway authentication caching reduces response times.
Monitor controls and response improvements
Features:- Monitor limit: Control the maximum number of records per monitor run with
the new
limitparameter. - Monitor backfill: Choose whether to fill the data gap before the first
scheduled run with the new
backfillparameter.
GET /catchAll/monitorsnow supportspageandpage_sizeparameters and sorts by creation date.GET /catchAll/pull/{job_id}now returns theerrorfield for failed jobs and thelimitapplied to the job.POST /catchAll/continuenow correctly enforces result limits.new_limitdefaults to your plan maximum if omitted.GET /catchAll/jobs/usernow returns a structured response object with pagination metadata instead of a flat array.- Consistent status representation across the status and pull endpoints.
- Improved caching and overall response performance.
- Submitting a validator or enrichment with an empty
namenow returns a validation error.
Stable release with enhanced control and structured company enrichments
CatchAll API reaches v1.0.0 with improved query customization, date range controls, and structured company enrichments.Features:- Initialize endpoint: Get suggested validators, enrichments, and date
ranges before submitting jobs. Returns
date_modification_messagewhen requested dates exceed plan limits. - Date range controls: Specify
start_dateandend_datein submit requests. System validates against plan limits and returns 400 errors for invalid ranges. - Custom validators and enrichments: Define custom validation criteria and extraction fields directly in submit requests instead of relying on automatic generation.
- Company enrichment type: Extract structured company data including name,
alternative names, website candidates, people, and address using the new
companyenrichment type. - Paginated user jobs: List user jobs endpoint now supports
pageandpage_sizeparameters for efficient retrieval of job history.
POST /catchAll/initialize— Get validator, enrichment, and date range suggestions.- Enhanced
POST /catchAll/submit— Now accepts date ranges, validators, and enrichments. - Enhanced
GET /catchAll/jobs/user— Now supports pagination.
- Enhanced deduplication logic reduces duplicate records across job executions.
- Status endpoint returns more accurate current processing stage.
- User jobs endpoint returns results sorted by creation date (most recent first).
Job continuation and early result access
Features:- Job continuation: Submit jobs with the optional
limitparameter for fast testing. Review results and continue jobs with/catchAll/continueto process more records without restarting. - Early result access: Pull results during the
enrichingstage without waiting for job completion. A newprogress_validatedfield shows validation progress as results become available in batches. - Monitor updates: Update webhook configuration for existing monitors without recreating them.
POST /catchAll/continue— Continue completed job with higher limit.PATCH /catchAll/monitors/{monitor_id}— Update monitor webhook configuration.
- Expanded search range provides broader coverage for improved recall.
API response enhancements and monitor configuration
Features:- Enrichments metadata: Job pull endpoint returns
enrichmentsarray listing all extracted field names. - Human-readable schedules: Monitor list includes
schedule_human_readablealongside cron expressions. - Webhook visibility: Monitor list exposes full webhook configuration including URL, method, and headers.
- Pull endpoints return all citations without limits.
- Monitors require minimum 24-hour intervals between executions.
- First webhook execution includes complete reference job results.
- Improved validation error messages for invalid schedules.
Status tracking and monitor improvements
Enhanced status tracking with processing steps and improved monitor functionality for time-constrained queries.Features:- Progress tracking: Status endpoint now returns detailed
stepsarray showing completion state for each processing stage. - Monitor timestamps: Monitor records include
added_onandupdated_onfields to track when each data record was first collected and last updated across job executions. - Time-constrained jobs: Monitors now work with reference jobs that include time constraints. The system automatically adapts date-specific validators for each execution.
GET /catchAll/jobs/usernow returns only user-created jobs, excluding repeated monitor jobs.- Monitor responses use
run_infostructure withfirst_runandlast_runtimestamps instead ofdate_rangefor clearer execution metadata. - Improved error handling in monitor creation endpoint with specific validation messages for invalid schedules and incomplete reference jobs.
Monitor webhooks and deduplication
Introduced webhook notifications and intelligent deduplication for monitors to streamline automated data collection workflows.Features:- Webhook notifications: Receive real-time POST notifications when scheduled monitor jobs complete, including monitor ID, latest job ID, and record counts.
- Intelligent deduplication: Monitors automatically eliminate duplicate records across job executions, sending only new results to webhooks.
- Monitor management: Enable or disable monitors to control automated job execution.
GET /catchAll/monitors— List all monitors for your API key.POST /catchAll/monitors/{monitor_id}/enable— Enable a disabled monitor.POST /catchAll/monitors/{monitor_id}/disable— Disable an active monitor.
- Reduced default date range from 14 days to 5 days for faster job processing.
- Limited maximum date range to 30 days to maintain optimal performance.
- Fixed special characters displaying incorrectly in web page content.
- Improved error handling when monitor jobs have incomplete data.
Pagination and reliability improvements
Enhanced core functionality with pagination fixes, job tracking capabilities, and improved data quality.Endpoints:GET /catchAll/jobs/user— List all jobs created with your API key.GET /catchAll/monitors/pull/{monitor_id}— Retrieve aggregated results from all monitor jobs.
- Fixed pagination returning all records instead of the requested page.
- Enhanced pagination support for handling large result sets with
pageandpage_sizeparameters. - Fixed jobs failing to complete during data extraction.
- Fixed timezone errors when scheduling monitor jobs.
- Fixed monitors failing to execute all configured queries.
Monitors feature
Introduced monitors for automated queries — schedule recurring data collection from a reference job.Features:- Schedule automation: Create monitors that run queries on schedules defined in plain text format (e.g., “every day at 12 PM UTC”).
- Job tracking: Track all jobs associated with a monitor.
- Execution history: Retrieve job execution history and status for each monitor.
- Webhook notifications: Get notified when scheduled jobs complete.
POST /catchAll/monitors/create— Create scheduled monitor.GET /catchAll/monitors/{monitor_id}/jobs— List monitor jobs.
- Added date range information to results showing the time period covered.
- Fixed incorrect date filtering in search results.
Initial beta release
CatchAll is a web search API that transforms text queries into structured, validated event data extracted from billions of web sources.Features:- Plain text input: Submit queries in plain text and receive structured event data with source citations.
- Dynamic schemas: Response structures adapt to your query, generating relevant fields automatically.
- Real-time status tracking: Track job progress from submission through completion, including analysis, retrieval, clustering, validation, and extraction.
POST /catchAll/submit— Create jobs using a plain text queries.GET /catchAll/status/{job_id}— Check a job processing status.GET /catchAll/pull/{job_id}— Retrieve structured results with citations.

