marketing
Base path: /api/v1/marketing
The marketing module is the largest surface area in 10ex. It covers campaigns, email sequencer runs, ads orchestration across Google, LinkedIn, and Meta, blog publishing flows, and the asset-to-channel handoff. Most endpoints are thin orchestration on top of the corresponding agent crews, so you can think of this module as the campaign-state layer that wraps a graph of agents, connectors, and assets. Resources include campaigns, email sequences, ad campaigns, blog drafts, and publish jobs. Schemas live in app/modules/marketing/schemas.py.
What you can do with the marketing API
- Launch and manage email sequences against a CRM segment
- Generate, preview, and approve ad creative variants per platform
- Launch and pause ad campaigns on Google, LinkedIn, or Meta
- Generate, edit, and publish blog drafts to Webflow or Sanity
- Track campaign-level rollups (sends, replies, conversions, CAC)
- Tie a campaign to its source segment, brand, and approval gate
Common operations
- Preview an email sequence (no sends until human approves)
- Approve a previewed sequence to release it
- Launch an ad campaign with a daily budget and target segment
- Pause or cancel an ad campaign mid-flight
- Publish a blog draft to a configured CMS connector
- List recent campaigns filtered by status, channel, and segment
Authentication & scoping
Workspace-scoped via API key in the Authorization: Bearer tnx_... header. Approval gates protect human-in-the-loop steps so an LLM-driven client can’t accidentally send to a segment without sign-off.
Pagination & filtering
Campaign and sequence list endpoints paginate cursor-style. Filters cover channel (email, ads, blog), status, segment, and date range. See Pagination.
What you can do with the marketing API for end-to-end campaigns
A typical motion is: pick a segment in crm, generate copy and creative via agents (storing output in assets), launch via marketing against the connector you configured in connectors, and read rollups from dashboard. The marketing module is the glue that records the campaign’s identity across all those modules.
MCP equivalents
preview_email_sequence({ segment_id, brand_id, objective: "book a demo", sender_connector_id, num_emails: 3, cadence_days: [0, 3, 7] })
approve_email_sequence({ preview_id })
launch_ad_campaign({ platform: "linkedin", objective: "leads", segment_id, brand_id, daily_budget_usd: 100 })
Related
- Use cases for end-to-end playbooks
crmfor the segments that target campaignsassetsfor the creative campaigns consumeconnectorsfor the senders and ad accountsdashboardfor campaign rollups