Live Direct Marketing Canvas API

The Canvas API from Live Direct Marketing — 4 operation(s) for canvas.

Operations 5

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/canvas/{id}/flow Get a campaign's canvas flow · Get the canvas flow definition of a campaign #
Ask an LLM
“What does the step-by-step flow of a canvas campaign look like?”
“Can I read the canvas flow definition behind a campaign?”
Tell an agent
Show the canvas flow for campaign {id}.
Get campaign {id}'s canvas definition.
PUT /api/canvas/{id}/flow Replace a campaign's canvas flow · Replace the canvas flow definition (whole document) #
Ask an LLM
“How do I save a redesigned canvas flow for a campaign?”
“Does saving a canvas overwrite the whole flow document?”
Tell an agent
Replace the canvas flow of campaign {id}.
Overwrite campaign {id}'s canvas with a new flow document.
GET /api/canvas/{id}/stats Get per-step canvas stats · Per-step canvas stats (GROUP BY canvasStage) #
Ask an LLM
“How many recipients are at each step of a canvas campaign?”
“Which canvas step are contacts dropping off at?”
Tell an agent
Show per-step stats for canvas {id}.
Count recipients by canvas stage for campaign {id}.
GET /api/canvas/{id}/enrollments List contacts enrolled in a canvas · List canvas enrollments (reuse campaign recipients) #
Ask an LLM
“Who is enrolled in a canvas campaign right now?”
“Can I list only the contacts sitting at one canvas stage?”
Tell an agent
List canvas {id} enrollments at stage {stage}, page {page}, {limit} per page.
Show page {page} of enrollments in canvas {id} for stage {stage}, limit {limit}.
POST /api/canvas/{id}/tick Advance a canvas by one orchestrator tick · Run one orchestrator tick: claim → bring to READY → advance (does NOT send; the… #
Ask an LLM
“How do I manually push canvas recipients forward to their next step?”
“Does running a canvas tick send emails itself?”
Tell an agent
Run one orchestrator tick on canvas {id}.
Advance campaign {id}'s canvas recipients one step.

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-canvas-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-canvas-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LDM v3 Canvas 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: Canvas
paths:
  /api/canvas/{id}/flow:
    get:
      operationId: CanvasController_getFlow
      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 the canvas flow definition of a campaign
      tags:
      - Canvas
    put:
      operationId: CanvasController_putFlow
      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: Replace the canvas flow definition (whole document)
      tags:
      - Canvas
  /api/canvas/{id}/stats:
    get:
      operationId: CanvasController_stats
      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: Per-step canvas stats (GROUP BY canvasStage)
      tags:
      - Canvas
  /api/canvas/{id}/enrollments:
    get:
      operationId: CanvasController_enrollments
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: page
        required: true
        in: query
        schema:
          type: number
      - name: limit
        required: true
        in: query
        schema:
          type: number
      - name: stage
        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 canvas enrollments (reuse campaign recipients)
      tags:
      - Canvas
  /api/canvas/{id}/tick:
    post:
      operationId: CanvasController_tick
      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: 'Run one orchestrator tick: claim → bring to READY → advance (does NOT send; the…'
      tags:
      - Canvas
components:
  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.