Outreach2day
    Outreach2day
    • Getting Started with Outreach2day API
    • Use Case 1: Mailboxes & Domains
    • Use Case 2: Unified Inbox (Unibox)
    • Use Case 3: Campaigns
    • Mailboxes
      • List Mailboxes
        GET
      • Delete Mailboxes
        DELETE
      • Create Mailboxes
        POST
      • Update Mailboxes Handler
        POST
    • Domains
      • List Domains
        GET
      • Update Domains Redirects
        PATCH
      • Get Dns Records
        GET
      • Update Dns Records
        POST
      • Check Domains
        POST
      • Purchase Domains
        POST
      • Start Cloudflare domain transfer flow
        POST
      • Start Cloudflare domain transfer flow
        POST
      • Get Cloudflare transfer status for workspace domains
        GET
      • Get Cloudflare transfer status for workspace domains
        GET
    • Unibox
      • Public Get Threads Debug
        GET
      • Public Get Threads Capabilities
        GET
      • Public Get Threads
        GET
      • Public Get Thread Messages
        GET
      • Public Reply To Thread
        POST
      • Public Send New Message
        POST
      • Public Get Outbound Operation Status
        GET
    • Campaigns
      • Public List Campaigns
        GET
      • Public Create Campaign
        POST
      • List campaign lifecycle statuses and transitions
        GET
      • Get campaign API capability contract for workspace
        GET
      • Public Get Campaign
        GET
      • Public Update Campaign
        PATCH
      • Public Delete Campaign
        DELETE
      • Public Update Campaign Schedule
        PUT
      • Public Update Campaign Stop Rules
        PUT
      • Public List Campaign Steps
        GET
      • Public Create Campaign Step
        POST
      • Public Update Campaign Step
        PATCH
      • Public Delete Campaign Step
        DELETE
      • Public List Campaign Mailboxes
        GET
      • Public Add Campaign Mailbox
        POST
      • Public Update Campaign Mailbox
        PATCH
      • Public Remove Campaign Mailbox
        DELETE
      • Public Import Campaign Contacts Csv
        POST
      • Public Create Import Job
        POST
      • Public Submit Import Job With Mapping V3
        POST
      • Public Get Import Status
        GET
      • Public Get Import Status Alias
        GET
      • Public Get Import Mapping Preview
        GET
      • Public Confirm Import Mapping
        POST
      • Public Replay Import Dead Letter
        POST
      • Public Cancel Import
        POST
      • Public Get Import Runbook Summary
        GET
      • Public List Campaign Contacts
        GET
      • Public List Campaign Contacts Changes
        GET
      • Public Launch Campaign
        POST
      • Public Get Campaign Launch Job
        GET
      • Public Get Campaign Stats
        GET
      • Public List Campaign Sends
        GET
      • Run campaign preflight checks
        GET
      • Run campaign mailbox auth preflight checks
        GET
      • Execute campaign lifecycle action
        POST
      • Duplicate campaign with steps and mailboxes
        POST
      • Get shareable campaign URL
        GET
      • Export campaign analytics CSV payload
        GET
      • List campaign subsequences
        GET
      • Create campaign subsequence
        POST
      • Get campaign subsequence
        GET
      • Update campaign subsequence
        PATCH
      • Delete campaign subsequence
        DELETE
      • Sync leads into subsequence
        POST
      • Get subsequence routing policy
        GET
      • Update subsequence routing policy
        PATCH
    • Workspaces
      • List Workspaces
      • Create New Workspace
      • Get Workspace Info Handler
      • Upgrade Workspace Subscription
    • Warmup
      • Public Create Warmup Operation
      • Public Get Warmup Operation
      • Public List Warmup Mailboxes
    • Sequencers
      • Public List Sequencer Providers
      • Public List Sequencers
      • Public Create Sequencer
      • Public Validate Sequencer
      • Public Update Sequencer
      • Public Delete Sequencer
      • Public Get Sequencer Readiness
      • Public Export Mailboxes
      • Public Reconnect Mailboxes
      • Public List Exports
    • Payment
      • Get Payment Method
      • Setup Payment Method
    • Campaign Suppression
      • Upsert campaign suppression entries
      • List suppression entries
      • Delete suppression entry
      • Get suppression status for one email
    • Campaign Webhooks
      • List supported campaign webhook event types
      • Create campaign webhook subscription
      • List campaign webhook subscriptions
      • Get campaign webhook subscription by id
      • Update campaign webhook subscription
      • Delete campaign webhook subscription
      • Pause campaign webhook subscription
      • Resume campaign webhook subscription
      • Rotate campaign webhook subscription secret
      • Enqueue test campaign webhook event
      • List deliveries for campaign webhook subscription
      • List emitted campaign webhook events
      • Get emitted campaign webhook event by id
      • Get campaign webhook delivery summary
      • Requeue failed campaign webhook deliveries
      • Requeue one campaign webhook delivery
      • Classify campaign reply and emit webhook events
      • List campaign contact outcomes
      • Override campaign contact reply intent via EVA
      • Dispatch queued campaign webhook deliveries
    • Schemas
      • Body_public_create_import_job_imports_post
      • Body_public_export_mailboxes_sequencers__connection_id__export_post
      • Body_public_import_campaign_contacts_csv_campaigns__campaign_id__contacts_import_post
      • Body_public_rotate_campaign_webhook_subscription_secret_campaigns_webhooks_subscriptions__subscription_id__rotate_secret_post
      • Body_public_submit_import_job_with_mapping_v3_imports_v3_submit_post
      • CampaignAdmissionOut
      • CampaignContactOut
      • CampaignContactOutcomeOut
      • CampaignContactOutcomesPageOut
      • CampaignContactsChangesPageOut
      • CampaignContactsImportOut
      • CampaignCreateIn
      • CampaignDecisionOut
      • CampaignDeleteOut
      • CampaignDuplicateCopiedOut
      • CampaignDuplicateOut
      • CampaignExportOut
      • CampaignImportConfirmOut
      • CampaignImportEnvelopeOut
      • CampaignImportJobOut
      • CampaignImportMappingEnvelopeOut
      • CampaignImportMappingOut
      • CampaignImportStatusOut
      • CampaignLaunchJobOut
      • CampaignLaunchOut
      • CampaignLifecycleOut
      • CampaignMailboxAttachIn
      • CampaignMailboxOut
      • CampaignMailboxPolicyUpdateIn
      • CampaignOut
      • CampaignPreflightCheckOut
      • CampaignPreflightOut
      • CampaignPreflightSummaryOut
      • CampaignReplyClassificationOut
      • CampaignScheduleIn
      • CampaignScheduleWindowIn
      • CampaignSendContactOut
      • CampaignSendOut
      • CampaignSendStepOut
      • CampaignSendsPageOut
      • CampaignShareOut
      • CampaignStatsCampaignOut
      • CampaignStatsOut
      • CampaignStatsSendsOut
      • CampaignStatusEnumsOut
      • CampaignStepCreateIn
      • CampaignStepOut
      • CampaignStepUpdateIn
      • CampaignStepVariantIn
      • CampaignStopRulesIn
      • CampaignSubsequenceDeleteOut
      • CampaignSubsequenceEnvelopeOut
      • CampaignSubsequenceListOut
      • CampaignSubsequenceOut
      • CampaignSubsequenceRoutingOut
      • CampaignSubsequenceRoutingPatchOut
      • CampaignSubsequenceSyncOut
      • CampaignSuppressionDeleteOut
      • CampaignSuppressionOut
      • CampaignSuppressionStatusEnvelopeOut
      • CampaignSuppressionStatusOut
      • CampaignSuppressionUpsertIn
      • CampaignSuppressionUpsertOut
      • CampaignSuppressionsPageOut
      • CampaignUpdateIn
      • CampaignWebhookActionOut
      • CampaignWebhookDeliveriesPageOut
      • CampaignWebhookDeliveryEnvelopeOut
      • CampaignWebhookDeliveryOut
      • CampaignWebhookDispatchOut
      • CampaignWebhookEventEnvelopeOut
      • CampaignWebhookEventOut
      • CampaignWebhookEventTypeOut
      • CampaignWebhookEventTypesOut
      • CampaignWebhookEventsPageOut
      • CampaignWebhookRetriggerOut
      • CampaignWebhookSubscriptionEnvelopeOut
      • CampaignWebhookSubscriptionOut
      • CampaignWebhookSubscriptionsOut
      • CampaignWebhookSummaryOut
      • CheckDomainsIn
      • CheckDomainsOut
      • CreateMailboxRequest
      • CreateWorkspaceRequest
      • DNSRecord
      • DomainAvailability
      • DomainAvailabilityStatus
      • DomainInfo
      • DomainPurchaseContactInfo
      • DomainPurchaseRequest
      • DomainPurchaseResponse
      • HTTPValidationError
      • MailboxInfo
      • PublicCampaignDuplicateIn
      • PublicCampaignImportMappingConfirmIn
      • PublicCampaignLifecycleIn
      • PublicCampaignOutcomeOverrideIn
      • PublicCampaignReplyClassificationIn
      • PublicCampaignSubsequenceCreateIn
      • PublicCampaignSubsequenceRoutingPatchIn
      • PublicCampaignSubsequenceSyncIn
      • PublicCampaignSubsequenceUpdateIn
      • PublicCampaignWebhookRetriggerIn
      • PublicCreateCampaignWebhookSubscriptionIn
      • PublicCreateSequencerIn
      • PublicDomainRedirectsUpdateIn
      • PublicReplyToThreadIn
      • PublicSendNewMessageIn
      • PublicUpdateCampaignWebhookSubscriptionIn
      • PublicUpdateSequencerIn
      • PublicValidateSequencerIn
      • SequencerConnectionEnvelopeOut
      • SequencerConnectionOut
      • SequencerConnectionsOut
      • SequencerDeleteOut
      • SequencerExportDetailOut
      • SequencerExportOut
      • SequencerExportsOut
      • SequencerMailboxExportOut
      • SequencerProviderCapabilitiesOut
      • SequencerProviderOut
      • SequencerProvidersOut
      • SequencerReadinessOut
      • SequencerReconnectErrorOut
      • SequencerReconnectOut
      • SequencerValidateOut
      • TransferCheckoutRequest
      • TransferCheckoutResponse
      • TransferDomainStatus
      • TransferStatusResponse
      • UniboxDebugOut
      • UniboxMessageOut
      • UniboxReplyOut
      • UniboxSchema
      • UniboxSendOut
      • UniboxThreadMessagesOut
      • UniboxThreadOut
      • UniboxThreadsOut
      • UpdateDNSRecordRequest
      • UpdateMailboxesIn
      • ValidationError
      • WarmupAction
      • WarmupItemStatus
      • WarmupMailboxStateOut
      • WarmupOperationCreateIn
      • WarmupOperationItemOut
      • WarmupOperationOut
      • WarmupOperationStatus
      • WarmupRejection
      • WorkspaceInfo

    Use Case 2: Unified Inbox (Unibox)

    Read and manage all email replies across all your mailboxes in one place. Unibox aggregates conversations and provides smart filtering to surface only relevant messages.

    Prerequisites#

    Active workspace with mailboxes (see Mailboxes & Domains)
    API key with access to the workspace

    How It Works#

    Unibox provides two modes:
    ModeDescriptionWhen to use
    FullAll messages from all mailboxesWhen you want complete visibility and do your own filtering
    RelevantFiltered — excludes warmup, test, and outbound-only messagesWhen you only care about real prospect replies
    If you have a sequencer connected (Instantly, Smartlead, etc.) or warmup enabled, Unibox automatically excludes those system-generated emails from the "relevant" view.

    Check Capabilities#

    Before querying, check what features are available for your workspace:
    GET /threads/capabilities?workspaceId=42
    Response:
    {
      "inbox": true,
      "outbound": true,
      "syncMode": "incremental",
      "providers": ["opensrs", "maildoso"]
    }

    List Threads#

    Fetch conversations (threads) with filtering and pagination:
    GET /threads?workspaceId=42
    Query Parameters:
    ParameterTypeDefaultDescription
    workspaceIdintegerrequiredWorkspace to query
    limitinteger50Results per page (1-200)
    cursorstringnullPagination cursor from previous response
    mailboxIdstringnullFilter by specific mailbox
    replyIntentstringnullFilter by classification (see below)
    Response:
    {
      "threads": [
        {
          "id": "thr_abc123",
          "external_thread_id": "msg-id@mail.com",
          "subject": "Re: Partnership opportunity",
          "subject_display": "Partnership opportunity",
          "last_message": {
            "from_email": "prospect@company.com",
            "date_received": "2026-03-09T14:30:00Z",
            "body_text": "Hi John, thanks for reaching out..."
          },
          "is_warming": false,
          "is_postmaster": false,
          "message_count": 3,
          "replyIntent": "interested",
          "campaignId": "cmp_xyz789"
        }
      ],
      "next_cursor": "cursor_def456"
    }

    Pagination#

    Use cursor-based pagination to iterate through all threads:

    Filtering#

    By mailbox — only show threads for a specific sender:
    GET /threads?workspaceId=42&mailboxId=john@cooloutreach.com
    By reply intent — only show threads classified as interested:
    GET /threads?workspaceId=42&replyIntent=interested
    Reply intent values:
    IntentDescription
    interestedProspect expressed interest
    not_interestedProspect declined
    out_of_officeAuto-reply / OOO
    bouncedEmail bounced
    unsubscribeUnsubscribe request
    neutralGeneral reply, no clear intent

    Incremental Sync#

    For real-time applications, use sync mode to only fetch new/updated threads:
    GET /threads?workspaceId=42&updatedSince=2026-03-09T10:00:00Z
    This returns only threads that have new messages since the given timestamp.

    Read Thread Messages#

    Get all messages in a specific thread:
    GET /threads/{thread_id}/messages?workspaceId=42
    Response:
    {
      "replyIntent": "interested",
      "campaignId": "cmp_xyz789",
      "messages": [
        {
          "id": "msg_001",
          "message_id": "<unique-id@mail.com>",
          "from_email": "john@cooloutreach.com",
          "to_emails": ["prospect@company.com"],
          "cc_emails": [],
          "subject": "Partnership opportunity",
          "date_received": "2026-03-08T10:00:00Z",
          "body_text": "Hi, I wanted to reach out about...",
          "body_html": "<p>Hi, I wanted to reach out about...</p>",
          "is_incoming": false,
          "folder": "sent"
        },
        {
          "id": "msg_002",
          "message_id": "<reply-id@company.com>",
          "from_email": "prospect@company.com",
          "to_emails": ["john@cooloutreach.com"],
          "cc_emails": [],
          "subject": "Re: Partnership opportunity",
          "date_received": "2026-03-09T14:30:00Z",
          "body_text": "Hi John, thanks for reaching out...",
          "body_html": "<p>Hi John, thanks for reaching out...</p>",
          "is_incoming": true,
          "folder": "inbox"
        }
      ]
    }
    Key fields:
    is_incoming: true — message received from the prospect
    is_incoming: false — message you sent
    folder — inbox, sent, spam, etc.

    Reply to a Thread#

    Send a reply within an existing conversation:
    POST /threads/{thread_id}/reply?workspaceId=42
    Request:
    {
      "bodyText": "Thanks for your interest! Let's schedule a call.",
      "bodyHtml": "<p>Thanks for your interest! Let's schedule a call.</p>",
      "fromMailboxAddress": "john@cooloutreach.com"
    }
    Response:
    {
      "status": "queued",
      "message_id": "<reply-msg-id@cooloutreach.com>",
      "operation_id": "op_reply_123"
    }
    The reply is sent asynchronously. Track delivery status with the operation ID.

    Check Send Status#

    GET /threads/outbound-operations/op_reply_123?workspaceId=42

    Send a New Message#

    Start a new conversation (not a reply to an existing thread):
    POST /threads/new?workspaceId=42
    Request:
    {
      "toAddress": "newprospect@company.com",
      "subject": "Quick question about your product",
      "bodyText": "Hi, I saw your product on...",
      "bodyHtml": "<p>Hi, I saw your product on...</p>",
      "fromMailboxAddress": "john@cooloutreach.com"
    }
    Response:
    {
      "status": "queued",
      "message_id": "<new-msg-id@cooloutreach.com>",
      "thread_id": "thr_new123",
      "operation_id": "op_send_456"
    }

    Forward a Thread#

    Forward a conversation to someone else:
    POST /threads/{thread_id}/forward?workspaceId=42
    Request:
    {
      "toAddress": "colleague@company.com",
      "bodyText": "FYI — check this reply from the prospect",
      "fromMailboxAddress": "john@cooloutreach.com"
    }

    Classify Reply Intent#

    Manually set or override the AI-assigned reply classification:
    PATCH /threads/{thread_id}/reply-intent?workspaceId=42
    Request:
    {
      "replyIntent": "interested"
    }

    Complete Python Example: Inbox Monitor#

    Build a simple inbox monitor that checks for new interested replies:

    Filtering Warmup & System Emails#

    Unibox automatically filters out:
    Warmup emails — if warmup is enabled via our platform
    Test/system emails — postmaster notifications, delivery reports
    Your outbound emails — only shows when they're part of a reply thread
    If you connect a third-party warmup provider via Sequencers, those emails are also excluded.
    The is_warming and is_postmaster flags on threads let you identify these if you're working with the full (unfiltered) feed.

    Related#

    Mailboxes & Domains — set up the mailboxes that feed into Unibox
    Campaigns — replies from campaigns appear in Unibox with campaignId
    Modified at 2026-03-10 01:38:24
    Previous
    Use Case 1: Mailboxes & Domains
    Next
    Use Case 3: Campaigns
    Built with