agentlyleads docs
Contracts API

GET /api/v1/contracts/{id}

Returns one contract in the same shape the list endpoint uses. Requires the read:contracts scope (or * for full access).

Request

GET /api/v1/contracts/cmq2cont0alk34567890 HTTP/1.1
Host: agentlyleads.com
Authorization: Bearer alk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

The path parameter is the agentlyleads contract ID, as returned in contracts[].id.

Response — 200

{
  "contract": {
    "id": "cmq2cont0alk34567890",
    "number": 12,
    "title": "Acme master agreement",
    "status": "ACTIVE",
    "value": 12500.5,
    "startsAt": "2026-01-01T00:00:00.000Z",
    "endsAt": "2026-12-31T00:00:00.000Z",
    "autoRenew": true,
    "renewalNotifiedAt": null,
    "notes": null,
    "company": { "id": "cmq2comp0alk34567890", "name": "Acme Corp" },
    "deal": { "id": "cmq2deal0alk34567890", "name": "Acme 2026 renewal" },
    "owner": { "id": "cmq9user0alk34567890", "name": "Kevin Rep" },
    "createdAt": "2025-12-14T12:00:00.000Z",
    "updatedAt": "2026-01-02T09:31:00.000Z"
  }
}

Response — 404

{ "error": "Contract not found." }

The lookup is always fenced by workspace, so an ID that belongs to another workspace returns the same 404 as an ID that does not exist. Nothing about another tenant's agreements is observable from the difference.

On this page