Live Direct Marketing Files API

The Files API from Live Direct Marketing — 15 operation(s) for files.

Operations 19

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

POST /api/files/images/import Import images from an attachment into storage · Import images from a source attachment into tenant storage #
Ask an LLM
“Can I pull the images out of an attachment into my creative image storage?”
“Is there a minimum edge size filter when importing images from a source file?”
Tell an agent
Import all images from source {source} into my storage.
Import images {imageRefs} from {source}, skipping any smaller than {minEdgePx} pixels.
POST /api/files/upload Upload a creative image · Upload an image for creatives (max 5 MB) #
Ask an LLM
“How do I upload an image to use in my email creatives?”
“What is the size limit for creative image uploads?”
Tell an agent
Upload {file} as a creative image.
Add image {file} to my creative images.
GET /api/files/images List uploaded creative images · List uploaded creative images for the tenant #
Ask an LLM
“Which creative images have I already uploaded?”
“Can I see all images available for my email creatives?”
Tell an agent
List my uploaded creative images.
Show every image in my creative image library.
DELETE /api/files/images/{filename} Delete a creative image · Delete a tenant-scoped creative image #
Ask an LLM
“Can I remove an uploaded creative image I no longer need?”
“Is deleting a creative image limited to my own tenant's files?”
Tell an agent destructive · confirm first
Delete creative image {filename}.
Remove the creative image file {filename}.
POST /api/files/assets Upload a signature or PDF photo asset · Upload a tenant asset (signature, PDF photo, max 30 MB) #
Ask an LLM
“How do I upload a signature image or a photo for personal PDFs?”
“What is the size limit for a tenant asset upload?”
Tell an agent
Upload {file} as a tenant asset.
Add signature file {file} to my assets.
GET /api/files/assets List tenant assets like signatures · List tenant assets #
Ask an LLM
“Where can I see the signature and PDF photo assets stored for my account?”
“What tenant assets do I have uploaded?”
Tell an agent
List my tenant assets.
Show the signature and PDF photo files in my assets.
GET /api/files/assets/quota Check tenant asset storage quota · Get tenant asset storage usage and quota #
Ask an LLM
“How much of my asset storage quota have I used?”
“What is my remaining space for signatures and PDF photos?”
Tell an agent
Show my tenant asset storage usage and quota.
Check how much asset storage I have left.
DELETE /api/files/assets/{filename} Delete a tenant asset · Delete a tenant asset #
Ask an LLM
“Can I delete an old signature or photo asset?”
“Will removing a tenant asset free up asset quota?”
Tell an agent destructive · confirm first
Delete tenant asset {filename}.
Remove asset file {filename} from my account.
GET /api/files List file attachments on a contact, company or lead · List file attachments for a contact, company or lead #
Ask an LLM
“Which files are attached to a particular contact?”
“Can I see all attachments on a company or a CRM lead?”
Tell an agent
List files attached to contact {contactId}.
Show attachments for company {companyId}.
POST /api/files Attach a file to a contact, company or lead · Upload a file attachment for a contact, company or lead (max 30 MB) #
Ask an LLM
“How do I attach a document to a contact record?”
“What is the maximum size of a file attached to a lead or company?”
Tell an agent
Attach a file to contact {contactId}.
Upload an attachment to lead {leadId}.
GET /api/files/{id}/download Download a file attachment · Download a file attachment (authorized, streams real bytes) #
Ask an LLM
“How do I download a file that's attached to a contact or lead?”
“Can I get the actual bytes of a CRM attachment?”
Tell an agent
Download attachment {id}.
Fetch the file contents of attachment {id}.
DELETE /api/files/{id} Delete a file attachment · Delete a file attachment record #
Ask an LLM
“Can I delete an attachment from a contact or lead?”
“What happens when I remove a file attachment record?”
Tell an agent destructive · confirm first
Delete file attachment {id}.
Remove attachment {id} from its record.
GET /api/files/library/quota Check library storage quota · Library storage usage and quota (500 MB, purpose=LIBRARY, separate from the 30… #
Ask an LLM
“How much of my 500 MB files library have I used?”
“Is the library quota separate from the branding asset quota?”
Tell an agent
Show my files library storage usage.
Check how much space is left in my document library.
GET /api/files/library List the files and links library · List the unified files-and-links library, optionally filtered by… #
Ask an LLM
“Can I see all documents and links in my library for a given brief?”
“Can I search my library items by text or kind?”
Tell an agent
List library items for brief {briefId}.
Search my library for {search}.
POST /api/files/library Add a file or link to the library · Add a library item: EITHER a file (multipart form field "file", max 100 MiB… #
Ask an LLM
“How do I add a PDF or slide deck to my document library?”
“Can I save a web link in the library instead of a file?”
Tell an agent
Add {file} to my library titled {title}.
Save link {url} to the library under brief {briefId}.
GET /api/files/library/{id}/download Download a library file · Download a library file with authorization (never public — Content-Disposition… #
Ask an LLM
“How do I download a document stored in my library?”
“Are library files ever served publicly?”
Tell an agent
Download library item {id}.
Get the original file for library document {id}.
GET /api/files/library/{id}/content Read the text content of a library document · Read a library document as bounded source-backed text/structure/image pages… #
Ask an LLM
“Can an agent read the text inside a library PDF page by page?”
“Can I pull a specific image out of a library document?”
Tell an agent
Read the content of library document {id}.
Read library document {id} from cursor {cursor}, {limit} pages.
PATCH /api/files/library/{id} Rename or reattach a library item · Rename / reattach / detach a library item (title, description… #
Ask an LLM
“Can I rename a document in my library?”
“How do I detach a library item from a lead but keep it in the library?”
Tell an agent
Rename library item {id} to {title}.
Attach library item {id} to brief {briefId}.
DELETE /api/files/library/{id} Delete a library item · Delete a library item — removes the DB row AND the bytes on disk (link: DB row… #
Ask an LLM
“Does deleting a library item also remove the stored file?”
“Can I remove a link from my library?”
Tell an agent destructive · confirm first
Delete library item {id}.
Remove library document {id} and its stored bytes.

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-files-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-files-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LDM v3 Files 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: Files
paths:
  /api/files/images/import:
    post:
      operationId: FilesController_importImages
      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/ImageImportDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Import images from a source attachment into tenant storage
      tags:
      - Files
      x-required-scope:
      - files:write
  /api/files/upload:
    post:
      operationId: FilesController_uploadImage
      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:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Upload an image for creatives (max 5 MB)
      tags:
      - Files
      x-required-scope:
      - files:write
  /api/files/images:
    get:
      operationId: FilesController_listImages
      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 uploaded creative images for the tenant
      tags:
      - Files
      x-required-scope:
      - files:read
  /api/files/images/{filename}:
    delete:
      operationId: FilesController_deleteImage
      parameters:
      - name: filename
        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 a tenant-scoped creative image
      tags:
      - Files
  /api/files/assets:
    post:
      operationId: FilesController_uploadAsset
      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:
          multipart/form-data:
            schema:
              type: object
              required:
              - file
              properties:
                file:
                  type: string
                  format: binary
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Upload a tenant asset (signature, PDF photo, max 30 MB)
      tags:
      - Files
      x-required-scope:
      - files:write
    get:
      operationId: FilesController_listAssets
      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 tenant assets
      tags:
      - Files
      x-required-scope:
      - files:read
  /api/files/assets/quota:
    get:
      operationId: FilesController_getAssetsQuota
      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: Get tenant asset storage usage and quota
      tags:
      - Files
      x-required-scope:
      - files:read
  /api/files/assets/{filename}:
    delete:
      operationId: FilesController_deleteAsset
      parameters:
      - name: filename
        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 a tenant asset
      tags:
      - Files
  /api/files:
    get:
      operationId: FilesController_findAll
      parameters:
      - name: contactId
        required: true
        in: query
        schema:
          type: string
      - name: companyId
        required: true
        in: query
        schema:
          type: string
      - name: leadId
        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 file attachments for a contact, company or lead
      tags:
      - Files
    post:
      operationId: FilesController_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/AttachEntityFileDto'
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: Upload a file attachment for a contact, company or lead (max 30 MB)
      tags:
      - Files
  /api/files/{id}/download:
    get:
      operationId: FilesController_download
      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 a file attachment (authorized, streams real bytes)
      tags:
      - Files
  /api/files/{id}:
    delete:
      operationId: FilesController_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 a file attachment record
      tags:
      - Files
  /api/files/library/quota:
    get:
      operationId: FilesController_getLibraryQuota
      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: Library storage usage and quota (500 MB, purpose=LIBRARY, separate from the 30…
      tags:
      - Files
      x-required-scope:
      - files:read
  /api/files/library:
    get:
      operationId: FilesController_listLibrary
      parameters:
      - name: briefId
        required: true
        in: query
        schema:
          type: string
      - name: leadId
        required: true
        in: query
        schema:
          type: string
      - name: contactId
        required: true
        in: query
        schema:
          type: string
      - name: companyId
        required: true
        in: query
        schema:
          type: string
      - name: purpose
        required: true
        in: query
        schema: {}
      - name: kind
        required: true
        in: query
        schema: {}
      - name: search
        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 the unified files-and-links library, optionally filtered by…
      tags:
      - Files
      x-required-scope:
      - files:read
    post:
      operationId: FilesController_uploadLibraryItem
      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:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: Omit + kind=LINK to add a link instead of a file
                kind:
                  type: string
                  enum:
                  - FILE
                  - LINK
                  description: Defaults to FILE when a file is supplied
                url:
                  type: string
                  description: Required when kind=LINK — http(s) only
                title:
                  type: string
                description:
                  type: string
                briefId:
                  type: string
                leadId:
                  type: string
                contactId:
                  type: string
                companyId:
                  type: string
      responses:
        '201':
          description: ''
      security:
      - jwt: []
      summary: 'Add a library item: EITHER a file (multipart form field "file", max 100 MiB…'
      tags:
      - Files
      x-required-scope:
      - files:write
  /api/files/library/{id}/download:
    get:
      operationId: FilesController_downloadLibraryItem
      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 a library file with authorization (never public — Content-Disposition…
      tags:
      - Files
  /api/files/library/{id}/content:
    get:
      operationId: FilesController_readLibraryContent
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
      - name: resource
        required: false
        in: query
        schema:
          enum:
          - text
          - sections
          - tableRows
          - hyperlinks
          - images
          - embeddedObjects
          - parts
          type: string
      - name: cursor
        required: false
        in: query
        schema:
          type: string
      - name: limit
        required: false
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 10
          default: 3
      - name: imageRef
        required: false
        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: Read a library document as bounded source-backed text/structure/image pages…
      tags:
      - Files
  /api/files/library/{id}:
    patch:
      operationId: FilesController_updateLibraryItem
      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/UpdateLibraryItemDto'
      responses:
        '200':
          description: ''
      security:
      - jwt: []
      summary: Rename / reattach / detach a library item (title, description…
      tags:
      - Files
    delete:
      operationId: FilesController_removeLibraryItem
      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 a library item — removes the DB row AND the bytes on disk (link: DB row…'
      tags:
      - Files
components:
  schemas:
    UpdateLibraryItemDto:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
        briefId:
          type:
          - string
          - 'null'
        leadId:
          type:
          - string
          - 'null'
        contactId:
          type:
          - string
          - 'null'
        companyId:
          type:
          - string
          - 'null'
    ImageImportDto:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/ImageImportSourceDto'
        imageRefs:
          type: array
          items:
            type: string
        all:
          type: boolean
        target:
          $ref: '#/components/schemas/ImageImportTargetDto'
        normalize:
          $ref: '#/components/schemas/ImageImportNormalizeDto'
        minEdgePx:
          type: number
          minimum: 1
      required:
      - source
    AttachEntityFileDto:
      type: object
      properties:
        contactId:
          type: string
        companyId:
          type: string
        leadId:
          type: string
        createdBy:
          type: string
    ImageImportSourceDto:
      type: object
      properties:
        attachmentRef:
          type: string
        libraryFileId:
          type: string
    ImageImportTargetDto:
      type: object
      properties:
        store:
          type: object
          default: ASSETS
    ImageImportNormalizeDto:
      type: object
      properties:
        maxEdgePx:
          type: number
          minimum: 1
        format:
          type: object
        quality:
          type: number
          minimum: 1
  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.