Live Direct Marketing ICP Extension API

The ICP Extension API from Live Direct Marketing — 14 operation(s) for icp extension.

Operations 17

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/icp-tasks List ICP tasks · List ICP tasks with pagination and status filter #
Ask an LLM
“Which ICP tasks do I have, and can I filter them by status?”
“Can I page through all my ideal customer profile tasks?”
Tell an agent
List ICP tasks with status {status}, page {page} of size {pageSize}.
Show page {page} of my ICP tasks.
POST /api/icp-tasks Create an ICP task · Create a new ICP task #
Ask an LLM
“How do I set up a new ideal customer profile task?”
“Can I give a new ICP task a description and config when creating it?”
Tell an agent
Create an ICP task titled {title}.
Create ICP task {title} described as {description}.
GET /api/icp-tasks/companies/scrape/preview Preview website crawl coverage for a company list · #955 preview list coverage WITHOUT starting a crawl: how many cards, how many… #
Ask an LLM
“Before crawling, how many companies in a list actually have a website domain filled in?”
“Can I see unique domain counts for a company list without starting a crawl?”
Tell an agent
Preview crawl coverage for company list {listId} using domain field {domainField}.
Count unique domains in list {listId} from field {domainField} without crawling.
GET /api/icp-tasks/companies/scrape/{taskId} Check a company website crawl's progress · #835 status and progress of a site-crawl task. #
Ask an LLM
“How far along is my company website crawl?”
“Can I get crawl status without the huge results payload on big tasks?”
Tell an agent
Get the status of crawl task {taskId}.
Check crawl {taskId} progress with includeResults set to {includeResults}.
POST /api/icp-tasks/companies/scrape/{taskId}/cancel Cancel a company website crawl · #835 cancel a site-crawl task #
Ask an LLM
“Can I abort a site crawl that is running on my companies?”
“What if I need to kill a crawl task permanently rather than pause it?”
Tell an agent destructive · confirm first
Cancel crawl task {taskId}.
Abort the site crawl {taskId}.
GET /api/icp-tasks/{id} Get an ICP task · Get an ICP task by id #
Ask an LLM
“What are the settings of one specific ICP task?”
“Can I fetch an ICP task's details by id?”
Tell an agent
Get ICP task {id}.
Show details for ICP task {id}.
PATCH /api/icp-tasks/{id} Update an ICP task · Update an ICP task #
Ask an LLM
“Can I rename an ICP task or change its status and config?”
“What can I edit on an existing ideal customer profile task?”
Tell an agent
Rename ICP task {id} to {title}.
Set ICP task {id} status to {status}.
DELETE /api/icp-tasks/{id} Delete an ICP task · Delete an ICP task #
Ask an LLM
“Can I delete an ICP task I no longer need?”
“Is removing an ICP task permanent?”
Tell an agent destructive · confirm first
Delete ICP task {id}.
Remove the ICP task {id}.
GET /api/icp-tasks/{id}/scoring-prompt Preview an ICP task's scoring prompt · Preview the ACTUAL scoring prompt for this task (brief-driven / custom /… #
Ask an LLM
“What exact prompt will be used to score companies for this ICP task?”
“Can I see whether the scoring prompt is brief-driven, custom or the default?”
Tell an agent
Preview the scoring prompt for ICP task {id}.
Show the actual scoring prompt used by ICP task {id}.
POST /api/icp-tasks/companies/scrape Start a website crawl on companies · #298/#835 server-side crawl fetcher: enqueued in the background, the response… #
Ask an LLM
“Can I crawl the websites of every company in a list in the background?”
“Is there a limit on how many company pages get visited during a crawl?”
Tell an agent
Crawl the websites of companies in list {listId}.
Start a site crawl on companies {companyIds} and score with task {scoringTaskId}.
POST /api/icp-tasks/companies/scrape/{taskId}/pause Pause a company website crawl · #952 pause a crawl task (alias of .../pause on the canonical site-enrichment) #
Ask an LLM
“Can I temporarily pause a site crawl and pick it up later?”
“Is there a way to hold a running crawl without losing progress?”
Tell an agent
Pause crawl task {taskId}.
Put site crawl {taskId} on hold.
POST /api/icp-tasks/companies/scrape/{taskId}/resume Resume a paused website crawl · #952 resume a paused crawl task (alias of .../resume on the canonical… #
Ask an LLM
“How can I continue a site crawl I paused earlier?”
“Can a paused crawl task pick up where it stopped?”
Tell an agent
Resume crawl task {taskId}.
Restart the paused site crawl {taskId}.
GET /api/icp-tasks/companies/scrape/{taskId}/items List a crawl task's per-company results · #952 crawl task items with a filter by outcome/reason code (alias of .../items… #
Ask an LLM
“Which companies failed in my site crawl, and why?”
“Can I filter crawl items by outcome or reason code?”
Tell an agent
List items of crawl {taskId} with status {status}.
Show crawl {taskId} items that failed with reason {reasonCode}.
POST /api/icp-tasks/{id}/regenerate-key Regenerate an ICP task's project key · Regenerate the project key for an ICP task #
Ask an LLM
“Can I rotate the project key for an ICP task if it leaked?”
“What happens to the old key when I regenerate it for an ICP task?”
Tell an agent
Regenerate the project key for ICP task {id}.
Rotate ICP task {id}'s project key.
GET /api/icp-tasks/{id}/statistics Get an ICP task's statistics · Get statistics for an ICP task #
Ask an LLM
“How is a particular ICP task performing in numbers?”
“Can I see summary statistics for one ICP task?”
Tell an agent
Show statistics for ICP task {id}.
Get the numbers for ICP task {id}.
GET /api/icp-tasks/{id}/items List items collected by an ICP task · List items belonging to an ICP task #
Ask an LLM
“What items has an ICP task collected, and can I filter by date or company?”
“Can I search within an ICP task's items by text or module?”
Tell an agent
List items for ICP task {id} with status {status}.
Search ICP task {id} items for {q} between {dateFrom} and {dateTo}.
GET /api/icp-tasks/{id}/download-extension Download the Chrome extension for an ICP task · Download a pre-built Chrome extension zip for an ICP task #
Ask an LLM
“Where do I get the pre-built Chrome extension tied to my ICP task?”
“Can I download the ICP browser extension in a specific language?”
Tell an agent
Download the Chrome extension zip for ICP task {id}.
Get ICP task {id}'s extension in language {lang}.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/live-direct-marketing-online:live-direct-marketing-online-icp-extension-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

live-direct-marketing-online-icp-extension-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LDM v3 ICP Extension API
  description: 'Multi-tenant B2B outreach automation platform. Auth: JWT Bearer (15-min) or tenant API key (ldm_*) managed in CRM Settings → API Keys. All tenant-scoped endpoints require the X-Tenant-Id header.'
  version: 1.0.0
  contact: {}
servers:
- url: https://api.live-direct-marketing.online
  description: Production
- url: https://api.dev.live-direct-marketing.online
  description: Development
- url: http://127.0.0.1:3000
  description: Local
tags:
- name: ICP Extension
paths:
  /api/icp-tasks:
    get:
      operationId: IcpExtensionController_findAll
      parameters:
      - name: page
        required: true
        in: query
        schema:
          type: string
      - name: pageSize
        required: true
        in: query
        schema:
          type: string
      - name: status
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: List ICP tasks with pagination and status filter
      tags:
      - ICP Extension
    post:
      operationId: IcpExtensionController_create
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateIcpTaskDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Create a new ICP task
      tags:
      - ICP Extension
  /api/icp-tasks/companies/scrape/preview:
    get:
      operationId: IcpExtensionController_scrapePreview
      parameters:
      - name: listId
        required: true
        in: query
        schema:
          type: string
      - name: domainField
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: '#955 preview list coverage WITHOUT starting a crawl: how many cards, how many…'
      tags:
      - ICP Extension
      x-required-scope:
      - icp:read
  /api/icp-tasks/companies/scrape/{taskId}:
    get:
      operationId: IcpExtensionController_getScrapeStatus
      parameters:
      - name: taskId
        required: true
        in: path
        schema:
          type: string
      - name: includeResults
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: '#835 status and progress of a site-crawl task.'
      tags:
      - ICP Extension
  /api/icp-tasks/companies/scrape/{taskId}/cancel:
    post:
      operationId: IcpExtensionController_cancelScrape
      parameters:
      - name: taskId
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: '#835 cancel a site-crawl task'
      tags:
      - ICP Extension
  /api/icp-tasks/{id}:
    get:
      operationId: IcpExtensionController_findById
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Get an ICP task by id
      tags:
      - ICP Extension
    patch:
      operationId: IcpExtensionController_update
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIcpTaskDto'
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Update an ICP task
      tags:
      - ICP Extension
    delete:
      operationId: IcpExtensionController_remove
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Delete an ICP task
      tags:
      - ICP Extension
  /api/icp-tasks/{id}/scoring-prompt:
    get:
      operationId: IcpExtensionController_scoringPromptPreview
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Preview the ACTUAL scoring prompt for this task (brief-driven / custom /…
      tags:
      - ICP Extension
  /api/icp-tasks/companies/scrape:
    post:
      operationId: IcpExtensionController_scrapeCompanies
      parameters:
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScrapeCompaniesDto'
      responses:
        '202':
          description: ''
      security:
      - jwt: []
      summary: '#298/#835 server-side crawl fetcher: enqueued in the background, the response…'
      tags:
      - ICP Extension
      x-required-scope:
      - icp:write
  /api/icp-tasks/companies/scrape/{taskId}/pause:
    post:
      operationId: IcpExtensionController_pauseScrape
      parameters:
      - name: taskId
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: '#952 pause a crawl task (alias of .../pause on the canonical site-enrichment)'
      tags:
      - ICP Extension
  /api/icp-tasks/companies/scrape/{taskId}/resume:
    post:
      operationId: IcpExtensionController_resumeScrape
      parameters:
      - name: taskId
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: '#952 resume a paused crawl task (alias of .../resume on the canonical…'
      tags:
      - ICP Extension
  /api/icp-tasks/companies/scrape/{taskId}/items:
    get:
      operationId: IcpExtensionController_scrapeItems
      parameters:
      - name: taskId
        required: true
        in: path
        schema:
          type: string
      - name: status
        required: true
        in: query
        schema:
          type: string
      - name: reasonCode
        required: true
        in: query
        schema:
          type: string
      - name: page
        required: true
        in: query
        schema:
          type: string
      - name: pageSize
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: '#952 crawl task items with a filter by outcome/reason code (alias of .../items…'
      tags:
      - ICP Extension
  /api/icp-tasks/{id}/regenerate-key:
    post:
      operationId: IcpExtensionController_regenerateKey
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Regenerate the project key for an ICP task
      tags:
      - ICP Extension
  /api/icp-tasks/{id}/statistics:
    get:
      operationId: IcpExtensionController_getStatistics
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Get statistics for an ICP task
      tags:
      - ICP Extension
  /api/icp-tasks/{id}/items:
    get:
      operationId: IcpExtensionController_getItems
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: page
        required: true
        in: query
        schema:
          type: string
      - name: pageSize
        required: true
        in: query
        schema:
          type: string
      - name: status
        required: true
        in: query
        schema:
          type: string
      - name: module
        required: true
        in: query
        schema:
          type: string
      - name: sortBy
        required: true
        in: query
        schema:
          type: string
      - name: sortDir
        required: true
        in: query
        schema:
          type: string
      - name: q
        required: true
        in: query
        schema:
          type: string
      - name: companyId
        required: true
        in: query
        schema:
          type: string
      - name: dateFrom
        required: true
        in: query
        schema:
          type: string
      - name: dateTo
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: List items belonging to an ICP task
      tags:
      - ICP Extension
  /api/icp-tasks/{id}/download-extension:
    get:
      operationId: IcpExtensionController_downloadExtension
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: lang
        required: true
        in: query
        schema:
          type: string
      - name: X-Tenant-Id
        in: header
        required: false
        schema:
          type: string
          format: uuid
        description: Tenant UUID — required for all tenant-scoped endpoints
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Download a pre-built Chrome extension zip for an ICP task
      tags:
      - ICP Extension
components:
  schemas:
    CreateIcpTaskDto:
      type: object
      properties:
        title:
          type: string
          description: ICP task title
        description:
          type: string
        config:
          type: object
          description: Free-form configuration payload
      required:
      - title
    ScrapeCompaniesDto:
      type: object
      properties:
        companyIds:
          minItems: 1
          maxItems: 500
          type: array
          items:
            type: string
        listId:
          type: string
          maxLength: 100
        domainField:
          type: string
          maxLength: 150
        limit:
          type: number
          minimum: 1
          maximum: 200
        timeoutMs:
          type: number
          minimum: 1000
          maximum: 120000
        maxAttempts:
          type: number
          minimum: 1
          maximum: 5
        saveScreenshot:
          type: boolean
        loadImages:
          type: boolean
        pageConcurrency:
          type: number
          minimum: 1
          maximum: 4
        visitPages:
          type: object
        scoringTaskId:
          type: string
          maxLength: 100
    UpdateIcpTaskDto:
      type: object
      properties:
        title:
          type: string
          description: ICP task title
        description:
          type: string
        status:
          type: string
          description: ICP task status
        config:
          type: object
          description: Free-form configuration payload
  securitySchemes:
    jwt:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: JWT access token from /auth/login (Bearer <token>)
    tenant-api-key:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Tenant API key (Bearer ldm_*) for MCP/A2A clients. Issued via CRM Settings → API Keys.
    rpa-service:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: Dedicated RPA service key. No tenant API-key or query-key authentication.