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

    Getting Started with Outreach2day API

    Overview#

    Outreach2day API lets you programmatically manage email outreach infrastructure: purchase domains, create mailboxes, run warmup, send campaigns, and read replies — all through a single API.
    Base URL: https://public.outreach2day.com

    Prerequisites#

    Before using the API, you need to:
    1.
    Create an account at app.outreach2day.com (Google or email signup)
    2.
    Create a workspace and attach a payment method (Stripe)
    3.
    Generate an API key from your account settings
    Once you have an API key, all further operations (buying domains, creating mailboxes, launching campaigns, etc.) can be done entirely through the API.

    Authentication#

    All API requests require a Bearer token in the Authorization header:
    Authorization: Bearer ot2d_your_api_key_here
    API keys have the ot2d_ prefix and are valid for 365 days.

    Managing API Keys#

    Create an API Key#

    POST /api-keys?workspace_id={workspace_id}
    Query Parameters:
    ParameterTypeRequiredDescription
    workspace_idintegerYesWorkspace to bind the key to
    namestringNoHuman-readable label for the key
    Response:
    {
      "api_key": "ot2d_abc123...",
      "name": "My Integration",
      "workspace_id": 42,
      "expiration_date": "2027-03-09T00:00:00Z"
    }

    List API Keys#

    GET /api-keys
    Returns all valid (non-expired) API keys for your account.

    Delete an API Key#

    DELETE /api-keys/{api_key}

    Workspaces#

    A workspace is your billing and organizational unit. All domains, mailboxes, campaigns, and integrations belong to a workspace.

    List Workspaces#

    GET /workspaces
    Response:
    [
      {
        "workspace_id": 42,
        "project_name": "My Outreach Project",
        "type": "default",
        "description": "Q1 outreach",
        "max_mailboxes": 100,
        "role": "owner"
      }
    ]

    Create a Workspace#

    POST /workspaces
    Request Body:
    {
      "project_name": "New Project",
      "description": "Cold outreach for SaaS"
    }

    Setup Payment Method#

    Before purchasing domains or mailboxes, attach a payment method:
    POST /workspaces/{workspace_id}/setup_payment_method
    Response:
    {
      "setup_url": "https://checkout.stripe.com/..."
    }
    Open setup_url in a browser to complete the Stripe checkout. After that, the workspace is ready for purchases.

    Check Payment Method#

    GET /workspaces/{workspace_id}/payment_method
    Response:
    {
      "has_payment_method": true,
      "card_last4": "4242",
      "card_brand": "visa"
    }

    Upgrade Subscription#

    Increase the mailbox limit for your workspace:
    POST /workspaces/{workspace_id}/upgrade_subscription?newMaxMailboxes=200

    Common Patterns#

    Pagination#

    Paginated endpoints use cursor-based pagination:
    GET /campaigns?workspaceId=42&limit=50&cursor=abc123
    Response:
    {
      "items": [...],
      "next_cursor": "def456"
    }
    Pass next_cursor as cursor in the next request. When next_cursor is null, you've reached the end.

    Idempotency#

    For create/mutate operations, pass an Idempotency-Key header to prevent duplicate operations:
    Idempotency-Key: unique-request-id-123

    Error Handling#

    Errors return standard HTTP status codes with a JSON body:
    {
      "detail": {
        "error": "workspace_not_found",
        "message": "Workspace 999 does not exist or you don't have access"
      }
    }
    Status CodeMeaning
    400Bad request (validation error)
    401Invalid or missing API key
    403No access to the requested workspace
    404Resource not found
    409Conflict (duplicate resource)
    429Rate limit exceeded
    500Internal server error

    Workspace ID#

    Most endpoints require a workspaceId query parameter:
    GET /campaigns?workspaceId=42
    This scopes all operations to the specified workspace. Your API key must have access to the workspace.

    Use Cases#

    The API supports three main workflows:
    Use CaseDescriptionGuide
    Mailboxes & DomainsPurchase domains, configure DNS, create mailboxes, enable warmupStep-by-step infrastructure setup
    Unified Inbox (Unibox)Read and reply to all emails in one place with smart filteringReal-time inbox management
    CampaignsCreate email sequences, import leads, launch, and track resultsBuild your own sequencer

    Quick Example#

    Here's a minimal flow to get started (Python):

    API Documentation#

    Interactive API docs (Scalar) are available at:
    Docs: https://public.outreach2day.com/docs
    OpenAPI spec: https://public.outreach2day.com/openapi.json
    Redoc: https://public.outreach2day.com/redoc

    Next Steps#

    Start with Mailboxes & Domains to set up your email infrastructure, then move to Campaigns to start sending.
    Modified at 2026-03-10 01:37:30
    Next
    Use Case 1: Mailboxes & Domains
    Built with