Revenue

Tasks loads open follow-ups with the soonest due date first. It asks for open tasks, one hundred at a time, and does not ask for an older page. The first task is Follow up on the proposal, due on July 15.

get/v1/revenue-actions

Request

  • Base URL: / (relative, and the document was published on a file host, not at the API’s origin)
  • URL: /v1/revenue-actions
  • Auth: HTTP bearer

Query parameters

queueStatus'open' | 'snoozed' | 'dismissed' | 'handled' | 'all'
Example:open

Queue status filter, or all.

limitinteger
Example:100

Page size (max 100). Tasks asks for 100.

offsetinteger

How many tasks to skip. Tasks does not send this on the first page.

surface'task' | 'recovery'
Example:task

task keeps follow-up tasks. recovery keeps every other action.

due'asc' | 'desc'
Example:asc

Soonest due first is asc. Latest due is desc.

Response

Queue page.

hasMoreboolean

Another task or follow-up exists beyond this page.

Example response

{
  "actions": [
    {
      "actionType": "warm_follow_up",
      "approvalStatus": "pending",
      "approvedAt": "2026-07-12T12:05:00Z",
      "approvedRevision": 1,
      "channel": "email",
      "createdAt": "2026-07-12T12:00:00Z",
      "detector": "manual",
      "dismissReason": "not_relevant",
      "dueAt": "2026-07-15T00:00:00Z",
      "evidence": [
        {
          "excerpt": "We are concerned security could delay renewal.",
          "externalEvidenceRefs": [
            "timestamp:12000-16000"
          ],
          "id": "4b8dfa9b-a7b2-46ea-982c-622a914c00e5",
          "occurredAt": "2026-07-31T14:00:00Z",
          "source": "meeting",
          "sourceRecordId": "oppulence:session-42:claim:claim-risk"
        }
      ],
      "executedAt": "2026-07-12T12:06:00Z",
      "executionMode": "draft",
      "executionOwner": "rowboat",
      "executionStatus": "pending",
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "policyStatus": "pending",
      "priorityComponents": {
        "commitment_urgency": 25,
        "evidence_quality": 10,
        "recency_signal": 12,
        "relationship_value": 20,
        "uncertainty_penalty": -5
      },
      "priorityScore": 82,
      "proposedMessage": "Hi Jordan — you asked me to circle back this month...",
      "proposedSubject": "Following up as promised",
      "providerMessageId": "msg_01",
      "providerThreadId": "thread_01",
      "queueStatus": "open",
      "reason": "They asked for a follow-up in July.",
      "recipientEmail": "buyer@example.com",
      "reconciliationAttempts": 1,
      "reconciliationCheckedAt": "2026-07-12T12:07:00Z",
      "reconciliationNextAt": "2026-07-12T12:12:00Z",
      "reconciliationStatus": "pending",
      "relationshipId": "9c8dfa9b-a7b2-46ea-982c-622a914c00e5",
      "relationshipName": "Acme",
      "revision": 1,
      "revisionHash": "sha256:746c1d9cd3925b8e632fc1b4bd539758514cb1aefdf31948fe8d1b45ce74c29d",
      "senderAccountRef": "gmail:me@company.com",
      "snoozedUntil": "2026-07-20T09:00:00Z",
      "updatedAt": "2026-07-12T12:06:00Z"
    }
  ]
}

Changes