Quickstart

HTTP API

Call every Rilo operation over plain HTTP from your own code.

Everything your agent can do over MCP is also a plain HTTP endpoint - the same operations, the same response envelope.

Authentication

Send a bearer token in the Authorization header. Two kinds work:

  • a personal API token (gtm_…) - create one from the API tokens section in Setup; best for servers and scripts,
  • a session JWT - what the web console itself uses after Google sign-in.
export RILO_TOKEN="gtm_..."

Call an operation

Operations are dispatched by id - GET for reads, POST with a JSON body for writes:

# list all operations
curl -s https://your-rilo-host/api/operations/ \
  -H "Authorization: Bearer $RILO_TOKEN"

# a read
curl -s "https://your-rilo-host/api/operations/list_lead_groups/" \
  -H "Authorization: Bearer $RILO_TOKEN"

# a write
curl -s -X POST https://your-rilo-host/api/operations/create_sequence/ \
  -H "Authorization: Bearer $RILO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Founder outreach",
    "steps": [
      {"id": "invite", "type": "send_connection_request",
       "message": "Hi {{first_name}}, loved what you are building."}
    ]
  }'

The full operation catalog - parameters, notes, and sample requests - is in the reference.

Responses

Every call returns the standard envelope. ok: true → HTTP 200; failures map not_found → 404, unauthorized → 401, forbidden → 403, and everything else (including validation_error and invalid_signature) → 400:

{
  "ok": true,
  "data": { "…": "…" },
  "summary": "Found 25 person(s) of ~500 matching.",
  "signals": [],
  "learnings": []
}

Ids in responses are always human-readable slugs (e.g. ceo-leads-x7k2); UUIDs are accepted on input everywhere.

On this page