API · MCP · Webhooks

Every surface TrendLedger has, your agents have too.

A single REST API with matching MCP server. Generate creatives, manage the calendar, sync performance, and read recommendations from your own stack — or a Claude / Cursor / OpenAI agent runtime.

OpenAPI 3.1 spec · Postman collectionSigned webhooks on every job transitionScoped keys, per-key rate limitsSDKs: TypeScript, Python, Go
POST /v1/creatives200 OK
$ curl https://api.trendledger.com/v1/creatives \
  -H "Authorization: Bearer $TL_KEY" \
  -d '{
    "brandId": "brand_01",
    "sourceType": "winning_ad",
    "sourceId": "cr_5XgT",
    "platforms": ["meta", "tiktok", "linkedin"],
    "format": "static",
    "goal": "lead_generation",
    "variants": 4
  }'

{
  "creativeId": "cr_01J1…",
  "jobId": "job_01J1…",
  "status": "generating",
  "variantsRequested": 4,
  "dna": ["testimonial", "workflow reveal"],
  "webhookEvents": [
    "creative.ready",
    "creative.variant.ready",
    "creative.approval.changed"
  ]
}
Resources

One API, mapped to every in-product action.

These are the exact endpoints the product UI uses. No private admin surface.

See MCP tools
Method
Path
Purpose
GET
/v1/me
Current user + active workspace
POST
/v1/workspaces
Create workspace
GET
/v1/brands
List brands
POST
/v1/brands/:id/import
Start brand ingestion
GET
/v1/brands/:id/assets
List brand assets
POST
/v1/brands/:id/assets
Upload asset
GET
/v1/creatives
List creatives
POST
/v1/creatives
Create creative / generation job
GET
/v1/creatives/:id
Creative detail + variants + DNA
PATCH
/v1/creatives/:id
Update editable fields
POST
/v1/creatives/:id/remix
Create derivative draft
GET
/v1/schedule-items
Calendar + list views
POST
/v1/schedule-items
Schedule a creative
GET
/v1/performance/snapshots
Normalized performance
POST
/v1/performance/import
Manual import job
GET
/v1/insights
Recommendations + DNA signals
GET
/v1/connections
List platform connections
Example workflows

Built to be automated, not admired.

1
Generate + schedule from an agent

Your agent picks up a brief, generates three variants, and schedules the winner across Meta and TikTok.

  1. POST /v1/creatives — start generation job
  2. Listen for creative.ready webhook
  3. GET /v1/creatives/:id — pull variants + DNA
  4. POST /v1/schedule-items — schedule selected variant
2
Cycle winning organic into paid

When an organic post performs above its DNA baseline, convert it into paid-ready creatives automatically.

  1. GET /v1/performance/snapshots?segment=organic
  2. Select creatives with CTR above baseline
  3. POST /v1/creatives/:id/remix — target=paid
  4. POST /v1/schedule-items — channel=meta
3
Sync approvals to your own review tool

Listen for approval state transitions and mirror them in your own system of record.

  1. Subscribe to creative.approval.* webhooks
  2. GET /v1/creatives/:id to pull the latest state
  3. Mirror into your DB / Linear / Notion
  4. POST /v1/creatives/:id back when reviewers sign off
MCP server

Native tools for Claude, Cursor, and OpenAI agents.

Install the TrendLedger MCP server in your agent runtime. Every resource in the API is exposed as a tool, with strict scopes, argument validation, and per-tool rate limits.

Per-workspace tokens with scoped tool access.Streaming responses for long-running jobs.Built-in pagination and safe-by-default filters.Drop-in for Claude Code, Claude.ai, Cursor, and Raycast.
~/.claude/mcp.jsontool
{
  "mcpServers": {
    "trendledger": {
      "command": "npx",
      "args": ["@trendledger/mcp"],
      "env": {
        "TL_KEY": "tl_live_…",
        "TL_WORKSPACE": "ws_acme"
      }
    }
  }
}
Available tools
  • brand.get
  • brand.import
  • creative.list
  • creative.generate
  • creative.remix
  • schedule.list
  • schedule.create
  • performance.snapshots
  • insight.list
  • connection.list
Webhooks

Every state change is a real event.

Signed, versioned, retried. Subscribe once, mirror TrendLedger in your own system of record without polling.

Event
When
creative.generating
Generation job accepted
creative.ready
Variants + DNA available
creative.variant.ready
Individual variant returned
creative.approval.changed
Approval state transitioned
schedule.item.scheduled
Item locked into calendar
schedule.item.published
Successful publish
schedule.item.failed
Publish or export failed
performance.snapshot.ready
Performance window closed
insight.created
New recommendation surfaced
trendledger.com/api

Build the workflow you've been faking in ten tabs.