desearch-ai · Schema

CompanyTask

A Company Search or Company Enrich task. Poll it until `status` is completed, partial, failed or cancelled.

AISearchWebAPIBittensorCompany

Properties

Name Type Description
task_id string Id of this task, returned as soon as it is created. Pass it to `GET /desearch/companies/tasks/{task_id}`, the results and export routes, and pause, resume, or cancel.
search_type string
platform string The task's service: `company` (Company Search) or `company_enrich` (Company Enrich).
status string
stage object What the task is doing now. `enriching`: every company is published and only the later stages of some of them (leaders, inferred emails, email checks) are left.
query string Company Search: the description. Company Enrich: a short label of the domains, e.g. `acme.com, beta.io and 3 more`.
count integer Companies asked for (Company Enrich: the domains left after deduplication).
result_count integer Companies delivered so far.
request object The normalized request. Company Search: `query`, `count`, `min_score`, `exclude`, `roles`, `infer_emails`, `verify_emails`, `filters`. Company Enrich: `domains`, `roles`, `infer_emails`, `verify_email
metadata object The `metadata` sent when the task was created (`{}` when none).
interpreted object Company Search: how the description was understood (criteria and the queries it ran).
progress object Counters while the task runs: `candidates_found`, `candidates_processed`, `qualified`, `filtered` (companies left out, by reason: `unreachable`, `not_a_company`, `below_min_score`, `no_`)
errors array
completion_reason object Why the task ended; `null` while it is queued, running or paused. `count_reached`: it delivered `count` companies. `all_domains_processed` (Company Enrich): it read every domain. `rounds_exhausted`: i
coverage_limited boolean True when the task stopped on a budget (`completion_reason` `cost_limit`, `candidate_budget` or `time_limit`) before reaching `count`: there may be more matching companies than it returned.
warnings array What made part of the task less reliable without failing it. `[]` when nothing did.
reserved_cost_usd number Amount reserved when the task was created.
final_cost_usd object Final cost once the task has ended. The rest of the reservation is returned.
refunded_usd object
created_by object
created_at string
started_at object
paused_at object
finished_at object
results_expire_at object
links object
View JSON Schema on GitHub

JSON Schema

desearch-ai-company-task-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/desearch-ai/json-schema/desearch-ai-company-task-schema.json",
  "title": "CompanyTask",
  "description": "A Company Search or Company Enrich task. Poll it until `status` is completed, partial, failed or cancelled.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/desearch-ai-openapi.json#/components/schemas/CompanyTask",
  "properties": {
    "task_id": {
      "type": "string",
      "format": "uuid",
      "title": "Task Id",
      "description": "Id of this task, returned as soon as it is created. Pass it to `GET /desearch/companies/tasks/{task_id}`, the results and export routes, and pause, resume, or cancel."
    },
    "search_type": {
      "type": "string",
      "enum": [
        "company_search",
        "company_enrich"
      ],
      "title": "Search Type"
    },
    "platform": {
      "type": "string",
      "enum": [
        "company",
        "company_enrich"
      ],
      "title": "Platform",
      "description": "The task's service: `company` (Company Search) or `company_enrich` (Company Enrich)."
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "running",
        "pausing",
        "paused",
        "cancelling",
        "completed",
        "partial",
        "failed",
        "cancelled",
        "expired"
      ],
      "title": "Status"
    },
    "stage": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "planning",
            "searching",
            "processing",
            "enriching",
            "finalizing"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Stage",
      "description": "What the task is doing now. `enriching`: every company is published and only the later stages of some of them (leaders, inferred emails, email checks) are left."
    },
    "query": {
      "type": "string",
      "title": "Query",
      "description": "Company Search: the description. Company Enrich: a short label of the domains, e.g. `acme.com, beta.io and 3 more`."
    },
    "count": {
      "type": "integer",
      "title": "Count",
      "description": "Companies asked for (Company Enrich: the domains left after deduplication)."
    },
    "result_count": {
      "type": "integer",
      "title": "Result Count",
      "description": "Companies delivered so far."
    },
    "request": {
      "anyOf": [
        {
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Request",
      "description": "The normalized request. Company Search: `query`, `count`, `min_score`, `exclude`, `roles`, `infer_emails`, `verify_emails`, `filters`. Company Enrich: `domains`, `roles`, `infer_emails`, `verify_emails`."
    },
    "metadata": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "title": "Metadata",
      "description": "The `metadata` sent when the task was created (`{}` when none)."
    },
    "interpreted": {
      "anyOf": [
        {
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Interpreted",
      "description": "Company Search: how the description was understood (criteria and the queries it ran)."
    },
    "progress": {
      "type": "object",
      "title": "Progress",
      "description": "Counters while the task runs: `candidates_found`, `candidates_processed`, `qualified`, `filtered` (companies left out, by reason: `unreachable`, `not_a_company`, `below_min_score`, `no_<requirement>`), `enrichment` (`published`, `complete`, `pending`, `failed`), `email_checks` (`checked`, `valid`, `invalid`, `risky`, `unknown`) and `stop_reason`, the worker's internal reason for stopping. Prefer `completion_reason` and `coverage_limited`."
    },
    "errors": {
      "items": {},
      "type": "array",
      "title": "Errors"
    },
    "completion_reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "count_reached",
            "all_domains_processed",
            "rounds_exhausted",
            "no_candidates",
            "zero_qualified",
            "candidate_budget",
            "cost_limit",
            "time_limit",
            "cancelled",
            "failed"
          ]
        },
        {
          "type": "null"
        }
      ],
      "title": "Completion Reason",
      "description": "Why the task ended; `null` while it is queued, running or paused. `count_reached`: it delivered `count` companies. `all_domains_processed` (Company Enrich): it read every domain. `rounds_exhausted`: it ran every search it planned and delivered fewer than `count`. `no_candidates`: its searches found no company to check. `zero_qualified`: it checked the companies its searches found and none fit. `candidate_budget`: it checked as many candidates as a task of this `count` may. `cost_limit`: what searching cost reached what its results would bill, so it stopped. `time_limit`: it ran for its maximum time. `cancelled`: it was cancelled. `failed`: an error ended it. Added alongside `status`, which keeps its values: a task that stopped on a budget with fewer than `count` companies is still `completed` — see `coverage_limited`."
    },
    "coverage_limited": {
      "type": "boolean",
      "title": "Coverage Limited",
      "description": "True when the task stopped on a budget (`completion_reason` `cost_limit`, `candidate_budget` or `time_limit`) before reaching `count`: there may be more matching companies than it returned.",
      "default": false
    },
    "warnings": {
      "items": {
        "$ref": "#/$defs/CompanyTaskWarning"
      },
      "type": "array",
      "title": "Warnings",
      "description": "What made part of the task less reliable without failing it. `[]` when nothing did."
    },
    "reserved_cost_usd": {
      "type": "number",
      "title": "Reserved Cost Usd",
      "description": "Amount reserved when the task was created."
    },
    "final_cost_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Final Cost Usd",
      "description": "Final cost once the task has ended. The rest of the reservation is returned."
    },
    "refunded_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Refunded Usd"
    },
    "created_by": {
      "anyOf": [
        {
          "$ref": "#/$defs/CompanyTaskCreatedBy"
        },
        {
          "type": "null"
        }
      ]
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "title": "Created At"
    },
    "started_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Started At"
    },
    "paused_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Paused At"
    },
    "finished_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Finished At"
    },
    "results_expire_at": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time"
        },
        {
          "type": "null"
        }
      ],
      "title": "Results Expire At"
    },
    "links": {
      "anyOf": [
        {
          "$ref": "#/$defs/CompanyTaskLinks"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "task_id",
    "search_type",
    "platform",
    "status",
    "query",
    "count",
    "result_count",
    "reserved_cost_usd",
    "created_at"
  ],
  "$defs": {
    "CompanyTaskCreatedBy": {
      "properties": {
        "user_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "User Id"
        },
        "api_key_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Api Key Id"
        },
        "via": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Via"
        }
      },
      "type": "object",
      "title": "CompanyTaskCreatedBy"
    },
    "CompanyTaskLinks": {
      "properties": {
        "self": {
          "type": "string",
          "title": "Self"
        },
        "results": {
          "type": "string",
          "title": "Results"
        },
        "export": {
          "type": "string",
          "title": "Export"
        }
      },
      "type": "object",
      "required": [
        "self",
        "results",
        "export"
      ],
      "title": "CompanyTaskLinks"
    },
    "CompanyTaskWarning": {
      "properties": {
        "code": {
          "type": "string",
          "title": "Code",
          "description": "What happened: `planning_fallback`, `ai_scoring_unavailable`, `enrichment_time_limit` or `linkedin_verification_unavailable`."
        },
        "message": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Message"
        }
      },
      "additionalProperties": true,
      "type": "object",
      "required": [
        "code"
      ],
      "title": "CompanyTaskWarning",
      "description": "Something that made part of a task less reliable without failing it."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/desearch-ai-company-task"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.