Quickstart
First result: brief → shortlist → sample → review
Bring your offer, ideal customer profile, geography, exclusions, supporting facts and available materials. Agree a small first result, for example 5–10 companies with reasons and sources plus one sample message. The agent prepares it; the human reviews facts, fit, recipients, content and cost. After activation and sender readiness, approve a campaign and keep its replies and handoff notes in CRM.
1. Register — get a PENDING account + read-capable key
curl -X POST https://api.live-direct-marketing.online/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email":"agent@example.com","termsAccepted":true,"channel":"mcp"}'Response shape (trimmed):
{
"pending": true,
"status": "PENDING",
"channel": "mcp",
"api_key": "ldm_...",
"scope": ["crm:read", "..."],
"tenant": { "id": "...", "slug": "..." },
"nextSteps": ["..."]
}2. Prove the key works
curl https://api.live-direct-marketing.online/api/companies?pageSize=5 \
-H "Authorization: Bearer ldm_..."This is a read-only call — it works before the account is fully activated and needs no extra setup.
3. Receive a sample without a connected sender
After activation and with creatives:write, use the existing creative test-send with sender="platform". LDM sends the test copy and linked attachment to the workspace owner’s registration email. Omit both toEmail and accountId; do not ask the user for the same address again. A different destination is refused. Platform test sends are limited to five per hour per tenant.
curl -X POST "https://api.live-direct-marketing.online/api/creatives/$CREATIVE_ID/test-send" \
-H "Authorization: Bearer $LDM_KEY" \
-H "Content-Type: application/json" \
-d '{"sender":"platform"}'This delivers a sample to the owner, not an outreach campaign to prospects. Inspect the returned status and the received copy; an accepted request is not proof that the message arrived with the intended content. Resolve any missing variables and check the attachment. Placement from LDM’s platform sender says nothing about your campaign domain.
4. Configure sending to prospects separately
For outreach to prospects, activate the workspace, grant the needed scopes and connect a sending account or pool. Then review the list, message, placement test, cost and launch permission. The platform sample above does not provide a campaign sender. See Dialogs for the compose contract and account setup.
curl -X POST https://api.live-direct-marketing.online/api/dialogs/compose \
-H "Authorization: Bearer ldm_..." \
-H "Content-Type: application/json" \
-d '{
"toEmail": "test@example.com",
"accountId": "<connected-account-uuid>",
"subject": "Hello from my agent",
"bodyText": "Plain-text or HTML body."
}'Python
import requests
API = "https://api.live-direct-marketing.online/api"
# 1. self-serve register
r = requests.post(f"{API}/auth/register", json={
"email": "agent@example.com",
"termsAccepted": True,
"channel": "mcp",
})
key = r.json()["api_key"]
headers = {"Authorization": f"Bearer {key}"}
# 2. prove it works
r = requests.get(f"{API}/companies", headers=headers, params={"pageSize": 5})
print(r.json())
# 3. send (once an account is connected — see /dialogs)
r = requests.post(
f"{API}/dialogs/compose",
headers=headers,
json={
"toEmail": "test@example.com",
"accountId": "<connected-account-uuid>",
"subject": "Hello",
"bodyText": "From my agent.",
},
)
print(r.json())