GTM Plays API · v1

Read your contacts from your own tools

Pull the people your agents find - with their score, signals, outreach step and replies - into a CRM, a spreadsheet or a script. The API is read-only and scoped to the account that created the key.

Authentication

Create a key in Settings → API. It is shown once; store it like a password. Send it as a Bearer token on every request:

curl -H "Authorization: Bearer gtm_live_…" https://gtmplays.io/api/v1/me

Limit: 100 requests per minute per key. Errors are JSON - { "error": "…" } - with 401 for a missing or invalid key, 400 for a bad parameter, 404 for anything not in your account, and 429 when rate-limited.

GET/api/v1/contacts

Your contacts, newest first.

searchMatches name, company, title, email or location.
agentAn agent id - only that agent’s contacts.
stagenew, approved, contacted, replied, meeting or disqualified.
stepnone (not contacted) or invitation_sent, invitation_skipped, invitation_accepted, message_sent, finished, replied, interested, unsubscribed.
listA list name, exactly as shown in Contacts → Lists.
minScoreOnly contacts scoring at least this (0-100) against the agent’s ICP.
dateFrom / dateToCreated between these dates, inclusive, as YYYY-MM-DD (UTC).
page / limitPagination. limit is 1-100, default 50.
curl -H "Authorization: Bearer gtm_live_…" \
  "https://gtmplays.io/api/v1/contacts?stage=replied&minScore=70&limit=100"
{
  "data": [{
    "id": "…", "agent_id": "…",
    "full_name": "Ada Lovelace", "job_title": "Head of Growth", "location": "London, United Kingdom",
    "linkedin_url": "https://www.linkedin.com/in/ada-lovelace", "email": "ada@analytical.co", "phone": null,
    "company": { "name": "Analytical Co", "website": "analytical.co", "industry": "Software Development", "size": "11-50" },
    "signal": { "label": "Company competitor profile", "detail": "Raised funding · March 2026", "url": null },
    "other_signals": [{ "label": "\"pipeline generation\" engagement", "detail": null, "detected_at": "2026-09-23T10:00:00Z" }],
    "score": 92, "score_reasons": ["Title matches \"Head of Growth\"", "Located in Europe"],
    "stage": "replied", "outreach_step": "replied", "list": null,
    "last_reply": { "text": "Happy to chat Thursday", "at": "2026-09-23T12:00:00Z" },
    "created_at": "…", "updated_at": "…"
  }],
  "pagination": { "page": 1, "limit": 100, "total": 1, "pages": 1 }
}

GET/api/v1/contacts/{id}

One contact, in the same shape, under data.

GET/api/v1/agents

Your agents with their targeting, status and run times.

GET/api/v1/me

The account the key acts as - useful to check a key works.

GET/api/v1/health

Unauthenticated liveness check.