Live Direct Marketing Import API

The Import API from Live Direct Marketing — 10 operation(s) for import.

Operations 10

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/import/templates List import templates · List available import templates #
Ask an LLM
“Which import templates are available for CSV uploads?”
“Are there predefined column mappings for importing contacts?”
Tell an agent
List the available import templates.
Show all import templates I can apply.
POST /api/import/templates/detect Detect the best import template from CSV headers · Detect the best matching import template from CSV headers #
Ask an LLM
“Can the system guess which import template fits my spreadsheet columns?”
“Which template best matches a CSV with these headers?”
Tell an agent
Detect the best import template for headers {headers}.
Match CSV columns {headers} to an import template.
POST /api/import/templates/apply Map CSV headers with an import template · Apply an import template to CSV headers #
Ask an LLM
“How do my CSV columns map to fields when I apply a specific template?”
“Can I preview a template's field mapping before running an import?”
Tell an agent
Apply import template {templateId} to headers {headers}.
Preview how template {templateId} maps columns {headers}.
POST /api/import/tasks Start an import of contacts or companies · Create a new import task #
Ask an LLM
“How do I import contacts from a spreadsheet into a new list?”
“Can an import also create CRM leads in a pipeline?”
Tell an agent
Import {entity} rows from {sourceType} using template {templateId}.
Import contacts into a new list called {newListName}, deduplicating by {deduplicateBy}.
POST /api/import/from-url Fetch an import file from a link · Import a list from a link (Google Sheets or a direct .csv/.xlsx URL) — the… #
Ask an LLM
“Can I import a list straight from a Google Sheets link?”
“Does importing from a URL start the import right away?”
Tell an agent
Fetch the spreadsheet at {url} for import.
Load the CSV at {url} for import into list {listId}.
GET /api/import/tasks/{id} Get an import task's status · Get an import task by id #
Ask an LLM
“Is my import finished, and how many rows succeeded?”
“Can I check the progress of an import task?”
Tell an agent
Show import task {id}.
Check the progress of import {id}.
GET /api/import/tasks/{id}/log Read an import's row-level log · Get the row-level log for an import task #
Ask an LLM
“Which rows in my import failed, and why?”
“Can I filter an import log to just errors?”
Tell an agent
Show page {page} of the log for import {id}, {pageSize} rows per page.
List rows with status {status} in import {id}'s log.
GET /api/import/tasks/{id}/log/csv Download an import log as CSV · Download the import task log as CSV #
Ask an LLM
“Can I export an import's row log to a CSV file?”
“Where do I get a downloadable report of an import's results?”
Tell an agent
Download the CSV log for import {id}.
Export import {id}'s row log as a spreadsheet.
POST /api/import/tasks/{id}/cancel Cancel a running import · Cancel an in-progress import task #
Ask an LLM
“How do I stop an import that's still running?”
“Can I cancel an import task partway through?”
Tell an agent destructive · confirm first
Cancel import {id}.
Stop in-progress import task {id}.
POST /api/import/tasks/{id}/rollback Roll back an import · Rollback the changes made by an import task #
Ask an LLM
“Can I undo everything an import created?”
“What happens to imported records when I roll back an import task?”
Tell an agent destructive · confirm first
Roll back import {id}.
Undo the changes made by import task {id}.

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-import-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-import-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LDM v3 Import 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: Import
paths:
  /api/import/templates:
    get:
      operationId: ImportController_getTemplates
      parameters:
      - 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 available import templates
      tags:
      - Import
      x-required-scope:
      - import:read
  /api/import/templates/detect:
    post:
      operationId: ImportController_detectTemplate
      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/DetectTemplateDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Detect the best matching import template from CSV headers
      tags:
      - Import
      x-required-scope:
      - import:read
  /api/import/templates/apply:
    post:
      operationId: ImportController_applyTemplate
      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/ApplyTemplateDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Apply an import template to CSV headers
      tags:
      - Import
      x-required-scope:
      - import:read
  /api/import/tasks:
    post:
      operationId: ImportController_createTask
      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/ImportTaskConfigDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Create a new import task
      tags:
      - Import
      x-required-scope:
      - import:write
  /api/import/from-url:
    post:
      operationId: ImportController_importFromUrl
      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/ImportFromUrlDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Import a list from a link (Google Sheets or a direct .csv/.xlsx URL) — the…
      tags:
      - Import
      x-required-scope:
      - import:write
  /api/import/tasks/{id}:
    get:
      operationId: ImportController_getTask
      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 import task by id
      tags:
      - Import
  /api/import/tasks/{id}/log:
    get:
      operationId: ImportController_getLog
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: page
        required: true
        in: query
        schema:
          type: number
      - name: pageSize
        required: true
        in: query
        schema:
          type: number
      - 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: Get the row-level log for an import task
      tags:
      - Import
  /api/import/tasks/{id}/log/csv:
    get:
      operationId: ImportController_getLogCsv
      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: Download the import task log as CSV
      tags:
      - Import
  /api/import/tasks/{id}/cancel:
    post:
      operationId: ImportController_cancelTask
      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: Cancel an in-progress import task
      tags:
      - Import
  /api/import/tasks/{id}/rollback:
    post:
      operationId: ImportController_rollbackTask
      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: Rollback the changes made by an import task
      tags:
      - Import
components:
  schemas:
    ApplyTemplateDto:
      type: object
      properties:
        templateId:
          type: string
          description: Id of the template to apply
        headers:
          description: CSV/sheet column headers to map via the template
          type: array
          items:
            type: string
      required:
      - templateId
      - headers
    DetectTemplateDto:
      type: object
      properties:
        headers:
          description: CSV/sheet column headers to match against known templates
          type: array
          items:
            type: string
      required:
      - headers
    ImportTaskConfigDto:
      type: object
      properties:
        sourceType:
          type: string
          enum:
          - csv
          - google-sheets
        sourceUrl:
          type: string
        entity:
          type: string
          enum:
          - companies
          - contacts
        combinedMode:
          type: boolean
          description: Combined companies + contacts import mode
        sourceFileId:
          type: string
          description: Library file id — alternative to inline headers/rows (#805 B3)
        headers:
          description: CSV/sheet column headers. Pass [] when using sourceFileId.
          type: array
          items:
            type: string
        rows:
          description: CSV/sheet rows, each an array of cell values. Pass [] when using sourceFileId.
          type: array
          items:
            type: string
        templateId:
          type: string
        mapping:
          type: object
          description: Column -> field mapping (csvColumn -> target field). Contact fields are prefixed with "c:" (e.g. "c:firstName", "c:email", "c:phone"). Company fields have no prefix (e.g. "name", "domain", "industry"). Custom fields use "customField:<key>". An unknown value (e.g. bare "email" instead of "c:email", or "cf:key" — a prefix from a DIFFERENT import path) is rejected with 400 BEFORE the task is queued (#1064).
        transforms:
          type: object
          description: Per-column value transforms
        listId:
          type: string
          description: Company-list id for company-only or combined-mode imports
        contactListId:
          type: string
          description: Contact-list id for combined-mode imports (company list goes in listId)
        newListName:
          type: string
        createLeads:
          type: boolean
          description: Also create a lead per imported row
        pipelineId:
          type: string
        newPipelineName:
          type: string
        stageId:
          type: string
        leadTitleTemplate:
          type: string
        leadPriority:
          type: string
        leadSource:
          type: string
        duplicateHandling:
          type: string
          enum:
          - skip
          - update
          - mark_duplicate
          - create
        deduplicateBy:
          type: string
          enum:
          - domain
          - name
          - email
          - both
          - socials
        tagIds:
          type: array
          items:
            type: string
        userId:
          type: string
      required:
      - sourceType
      - entity
      - combinedMode
      - headers
      - rows
      - templateId
      - mapping
      - transforms
      - createLeads
      - duplicateHandling
      - deduplicateBy
    ImportFromUrlDto:
      type: object
      properties:
        url:
          type: string
          description: Google Sheets URL or a direct .csv/.xlsx URL
        listId:
          type: string
          description: Tenant file library id — save the fetched file there too
      required:
      - url
  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.