API Reference

Get Opportunity Conversation

Read one opportunity's conversation timeline: milestones, drafts, questions, and messages. Poll with afterSeq for new items. An opportunity that resolved itself may have no conversation; the response then carries a null conversationId and an empty items list. Cache policy: live. Idempotency: none. Auth modes: api_key, mcp_oauth, session_bearer.

POST
/agent/v1/opportunities/conversation

Read one opportunity's conversation timeline: milestones, drafts, questions, and messages. Poll with afterSeq for new items. An opportunity that resolved itself may have no conversation; the response then carries a null conversationId and an empty items list. Cache policy: live. Idempotency: none. Auth modes: api_key, mcp_oauth, session_bearer.

Authorization

AuthorizationBearer <token>

Rankhog organization API key sent as Authorization: Bearer rhog_....

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/agent/v1/opportunities/conversation" \  -H "Content-Type: application/json" \  -d '{    "managedRedditAccountId": "mra_2x9rnkhdemo",    "organizationId": "org_2x9rnkhdemo",    "websiteId": "site_2x9rnkhdemo",    "afterSeq": 0,    "opportunityId": "opp_2x9opportunity"  }'
{  "conversationId": "conv_2x9conversation",  "items": [    {      "authorUserId": null,      "createdAt": "2026-06-17T12:00:00.000Z",      "id": "item_2x9found",      "level": "milestone",      "metadata": {        "origin": "system"      },      "parts": [        {          "data": {            "key": "found",            "title": "Found a discussion worth a comment in r/SaaS."          },          "type": "data-milestone"        }      ],      "role": "system",      "seq": 1,      "sourceAdapter": "system"    },    {      "authorUserId": "user_2x9founder",      "createdAt": "2026-06-17T12:00:00.000Z",      "id": "item_2x9message",      "level": "timeline",      "metadata": {        "authorName": "Anthony",        "origin": "web"      },      "parts": [        {          "text": "Make it shorter.",          "type": "text"        }      ],      "role": "user",      "seq": 2,      "sourceAdapter": "web"    }  ],  "lastSeq": 2,  "mode": "copilot",  "pendingQuestion": null}
{  "error": {    "code": "agentic_invalid_input",    "details": {      "issues": [        {          "code": "invalid_type",          "message": "Expected string, received undefined.",          "path": [            "organizationId"          ]        }      ]    },    "message": "Request body did not match the agentic capability schema."  }}

{  "error": {    "code": "agentic_unauthorized",    "message": "Authenticate before using Rankhog agentic capabilities."  }}

{  "error": {    "code": "agentic_paid_plan_required",    "details": {      "managedAccountBillingStatus": "active",      "subscriptionStatus": "past_due"    },    "message": "Rankhog agentic capabilities are available only for active or trialing paid workspaces."  }}

{  "error": {    "code": "agentic_missing_scope",    "details": {      "missingScopes": [        "rankhog:read"      ]    },    "message": "Missing required OAuth scope: rankhog:read."  }}

{  "error": {    "code": "agentic_managed_account_not_found",    "message": "Managed Reddit account not found."  }}

{  "error": {    "code": "agentic_internal_error",    "message": "Rankhog could not complete this agentic request."  }}