> ## Documentation Index
> Fetch the complete documentation index at: https://bavlio.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List Inbox

> Return one stable page from the last 30 days, newest first.

Resume state advances each source only for items emitted. Each retry skips
identities at or before the source's last-emitted key, so an upstream offset
shift cannot duplicate rows. A provider failure returns a partial page and
names that source.



## OpenAPI

````yaml https://api.bavlio.com/openapi.json get /api/v1/inbox
openapi: 3.1.0
info:
  title: Bavlio API
  description: >-
    Outreach automation API — lead enrichment, email campaigns, LinkedIn
    automation, and AI agent. Full docs at https://docs.bavlio.com.
  version: 1.0.0
  x-guidance:
    product: Bavlio Data API
    protocols:
      - x402
    description: >-
      Pay-per-call B2B data endpoints for AI agents. USDC on Base mainnet via
      x402 v2. See /openapi.json for pricing. Landing page + marketing details:
      https://bavlio.com/developers
    network: eip155:8453
    docs_url: https://docs.bavlio.com
  x-payment-merchant-address: '0xcca4725e0e931982830bff523b141e1a7a58d3e7'
servers: []
security: []
tags:
  - name: API Keys
    description: >-
      Create, list, and revoke API keys for programmatic access. JWT
      authentication required.
  - name: credits
    description: Credit balance, cost estimates, and transaction history.
  - name: campaigns
    description: Create, manage, launch, and monitor email campaigns.
  - name: campaign-personalization
    description: AI-powered email subject and body personalization for campaigns.
  - name: email-finder
    description: Find and verify email addresses for prospects.
  - name: sender-profiles
    description: Manage sender identity profiles for outreach.
  - name: sender-profile-chat
    description: Interactive chat for building sender profiles.
  - name: templates
    description: Email template CRUD.
  - name: suppression
    description: Do-not-contact suppression list management.
  - name: datasets
    description: Lead dataset listing, download, and updates.
  - name: user-extractions
    description: Uploaded lead file management and processing.
  - name: enrichment-chat
    description: Interactive chat for data enrichment sessions.
  - name: enrichment-processing
    description: Batch lead enrichment processing.
  - name: File Upload (CSV/Excel)
    description: Upload and preview CSV/Excel lead files.
  - name: connected-accounts
    description: LinkedIn account connections via Unipile.
  - name: linkedin-content
    description: LinkedIn post creation, scheduling, and management.
  - name: linkedin-playground
    description: Direct LinkedIn actions (profile lookup, messaging, engagement).
  - name: bavimail-proxy
    description: BaviMail domain, alias, and email management.
  - name: agent
    description: Bavi AI agent chat with SSE streaming.
  - name: notifications
    description: Notification preferences and delivery.
  - name: referral
    description: Referral code management and stats.
  - name: feedback
    description: User feedback submission.
  - name: authentication
    description: JWT token verification and user info.
  - name: users
    description: User quota and usage information.
  - name: Health
    description: Health checks and system status.
  - name: Personalization
    description: Core lead personalization engine.
  - name: Session Management
    description: Enrichment session lifecycle.
  - name: Session Processing
    description: Session data processing.
  - name: webhooks
    description: Inbound webhook handlers (Stripe, BaviMail, Unipile).
paths:
  /api/v1/inbox:
    get:
      tags:
        - inbox
      summary: List Inbox
      description: >-
        Return one stable page from the last 30 days, newest first.


        Resume state advances each source only for items emitted. Each retry
        skips

        identities at or before the source's last-emitted key, so an upstream
        offset

        shift cannot duplicate rows. A provider failure returns a partial page
        and

        names that source.
      operationId: list_inbox_api_v1_inbox_get
      parameters:
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Opaque versioned merged-source cursor
            title: Cursor
          description: Opaque versioned merged-source cursor
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            title: Limit
            default: 20
        - name: channel
          in: query
          required: false
          schema:
            enum:
              - all
              - email
              - linkedin
            type: string
            default: all
            title: Channel
        - name: account_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: Local connected LinkedIn account; omitted means all
            title: Account Id
          description: Local connected LinkedIn account; omitted means all
        - name: scope
          in: query
          required: false
          schema:
            enum:
              - campaigns
              - all
            type: string
            description: >-
              Show only campaign-matched threads by default, or all inbox
              threads.
            default: campaigns
            title: Scope
          description: Show only campaign-matched threads by default, or all inbox threads.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InboxListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    InboxListResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/InboxItem'
          type: array
          title: Items
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: >-
            Opaque resume cursor. Each source advances only after its pending
            items are emitted.
        degraded_sources:
          items:
            type: string
          type: array
          title: Degraded Sources
          description: >-
            Providers or enrichment layers that failed while this partial page
            was built.
        visibility:
          $ref: '#/components/schemas/InboxVisibility'
          description: >-
            The intentionally asymmetric ownership scope of each upstream
            source.
        window_days:
          type: integer
          const: 30
          title: Window Days
          description: Fixed recent-view window anchored when the first page is requested.
          default: 30
      type: object
      required:
        - items
      title: InboxListResponse
      description: A 30-day snapshot page; unread state is deliberately absent in v1.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    InboxItem:
      properties:
        thread_id:
          type: string
          title: Thread Id
        channel:
          type: string
          enum:
            - email
            - linkedin
          title: Channel
        sender:
          anyOf:
            - $ref: '#/components/schemas/InboxSender'
            - type: 'null'
        email_sender:
          anyOf:
            - $ref: '#/components/schemas/EmailSender'
            - type: 'null'
        email_linkage:
          anyOf:
            - type: string
              enum:
                - route
                - owned_unattributed
                - cold_alias
                - none
                - unresolved
                - unavailable
            - type: 'null'
          title: Email Linkage
        reply_transport:
          anyOf:
            - $ref: '#/components/schemas/EmailReplyTransport'
            - type: 'null'
        connected_reply_summary:
          anyOf:
            - $ref: '#/components/schemas/ConnectedReplySummary'
            - type: 'null'
        counterpart:
          $ref: '#/components/schemas/InboxCounterpart'
        last_message:
          $ref: '#/components/schemas/InboxLastMessage'
        conversation_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Conversation Key
          description: >-
            Opaque email-only presentation grouping key. Rows sharing it belong
            to one explicit source conversation in one mailbox scope. Never a
            reply target, never a thread id; thread_id remains the only
            reply/deep-link identity.
        campaign_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Campaign Id
        campaign_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Campaign Name
        lead_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Lead Id
        intent:
          anyOf:
            - type: string
            - type: 'null'
          title: Intent
        sentiment:
          anyOf:
            - type: string
            - type: 'null'
          title: Sentiment
        followup_scheduled:
          type: boolean
          title: Followup Scheduled
          default: false
        action_eligibility:
          $ref: '#/components/schemas/InboxActionEligibility'
      type: object
      required:
        - thread_id
        - channel
        - counterpart
        - last_message
        - action_eligibility
      title: InboxItem
    InboxVisibility:
      properties:
        email:
          type: string
          const: actor_scoped
          title: Email
          description: BaviMail rows visible through the authenticated actor's API key.
          default: actor_scoped
        linkedin:
          type: string
          const: org_scoped
          title: Linkedin
          description: >-
            Supported inventory and canonical summaries across connected
            LinkedIn accounts.
          default: org_scoped
      type: object
      title: InboxVisibility
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    InboxSender:
      properties:
        account_id:
          type: string
          title: Account Id
          description: Local connected_accounts UUID
        provider_account_id:
          type: string
          title: Provider Account Id
          description: Unipile API account ID
        name:
          type: string
          title: Name
          description: Stored display name or factual fallback
      type: object
      required:
        - account_id
        - provider_account_id
        - name
      title: InboxSender
      description: Trusted connected LinkedIn account identity; not a send override.
    EmailSender:
      properties:
        transport:
          type: string
          enum:
            - gmail
            - outlook
            - bavimail_alias
          title: Transport
          description: Original transport
        account:
          type: string
          title: Account
          description: Original sender email address
        alias_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Alias Id
          description: Exact cold alias only
      type: object
      required:
        - transport
        - account
      title: EmailSender
      description: Validated original email sender, never a relay or arbitrary alias.
    EmailReplyTransport:
      properties:
        transport:
          type: string
          enum:
            - gmail
            - outlook
            - bavimail_alias
            - unavailable
          title: Transport
          description: Validated transport, or unavailable when unverified
        available:
          type: boolean
          title: Available
          description: Transport capability only; also require action eligibility
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
          description: Explicit reason when replies are unavailable
        alias_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Alias Id
          description: Exact verified cold alias; never a relay
      type: object
      required:
        - transport
        - available
      title: EmailReplyTransport
      description: >-
        Current transport capability; connected list rows require detail
        authority.
    ConnectedReplySummary:
      properties:
        id:
          type: string
          minLength: 1
          title: Id
        status:
          type: string
          enum:
            - sending
            - accepted
            - unknown
            - not_sent
          title: Status
        snippet:
          type: string
          maxLength: 500
          title: Snippet
        created_at:
          type: string
          title: Created At
        accepted_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Accepted At
        from_email:
          type: string
          title: From Email
        to_email:
          type: string
          title: To Email
      type: object
      required:
        - id
        - status
        - snippet
        - created_at
        - accepted_at
        - from_email
        - to_email
      title: ConnectedReplySummary
      description: >-
        Bounded presentation only; never send authority or a cursor ordering
        key.
    InboxCounterpart:
      properties:
        name:
          type: string
          title: Name
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        linkedin_provider_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Linkedin Provider Id
        profile_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Profile Url
          description: Validated https LinkedIn profile URL, or null. LinkedIn rows only.
        picture_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Picture Url
          description: >-
            https photo on LinkedIn's CDN (licdn.com), or null. Signed and
            expiring: clients fall back to initials when it fails to load.
            LinkedIn rows only.
      type: object
      required:
        - name
      title: InboxCounterpart
    InboxLastMessage:
      properties:
        at:
          type: string
          title: At
        dir:
          type: string
          enum:
            - inbound
            - outbound
            - unknown
          title: Dir
        snippet:
          type: string
          title: Snippet
      type: object
      required:
        - at
        - dir
        - snippet
      title: InboxLastMessage
    InboxActionEligibility:
      properties:
        can_reply:
          type: boolean
          title: Can Reply
        reason:
          anyOf:
            - type: string
              enum:
                - suppressed
                - opted_out
                - eligibility_unavailable
                - conversation_unpersisted
                - reply_unavailable
            - type: 'null'
          title: Reason
        suppressed:
          type: boolean
          title: Suppressed
        casl_status:
          type: string
          enum:
            - not_required
            - ready
            - missing_identity
            - unavailable
          title: Casl Status
      type: object
      required:
        - can_reply
        - reason
        - suppressed
        - casl_status
      title: InboxActionEligibility
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.