Post Opportunity Conversation Message
Steer an opportunity conversation or answer its pending question with the optional answer.questionId, then queue an agent turn.
Steer an opportunity conversation or answer its pending question with the optional answer.questionId, then queue an agent turn. Terminal and cutover-history conversations are read-only. Messages do not grant execution permission; use confirm_opportunity_action with the explicit dangerous-write grant to send. Cache policy: live. Idempotency: required. Auth modes: api_key, mcp_oauth, session_bearer.
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
application/json
application/json
curl -X POST "https://example.com/agent/v1/opportunities/conversation/messages" \ -H "Content-Type: application/json" \ -d '{ "managedRedditAccountId": "mra_2x9rnkhdemo", "organizationId": "org_2x9rnkhdemo", "websiteId": "site_2x9rnkhdemo", "idempotencyKey": "conv-msg-2026-06-17-001", "message": "Skip the pricing angle and answer the workflow question.", "opportunityId": "opp_2x9opportunity" }'{ "agentTurnQueued": true, "conversationId": "conv_2x9conversation", "created": true, "itemId": "item_2x9posted", "seq": 3}{ "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", "conversation:write" ] }, "message": "Missing required scope: rankhog:read, conversation:write." }}{ "error": { "code": "agentic_managed_account_not_found", "message": "Managed Reddit account not found." }}{ "error": { "code": "agentic_conversation_read_only", "message": "This opportunity conversation is read-only history." }}{ "error": { "code": "agentic_write_rate_limited", "details": { "limit": 30, "windowSeconds": 3600 }, "message": "Agentic conversation messages are rate-limited for this workspace." }}{ "error": { "code": "agentic_internal_error", "message": "Rankhog could not complete this agentic request." }}Get Opportunity Conversation POST
Read one opportunity's conversation timeline: milestones, drafts, questions, and messages. Poll with afterSeq for new items.
Start Conversation POST
Start a conversation from a prompt, like the New composer in Rankhog. A Reddit post or comment link becomes a reply opportunity: Rankhog reads the...