Leadping Conversations API

Provides lead conversation timelines and inbox-oriented conversation views. Use these endpoints to list recent conversations and retrieve the cross-channel communication history associated with a lead.

OpenAPI Specification

leadping-conversations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Leadping Conversations API
  description: The Leadping API helps businesses capture and manage leads, automate follow-up, send SMS and MMS messages, place calls, track conversations, enforce contact suppression, and analyze communication workflows. Use this OpenAPI 3.1 contract to integrate lead sources, build organization tools, or generate a typed API client. Authenticate protected operations with a Leadping user access token or WorkOS organization API key. Lead intake operations also accept a Leadping source key.
  termsOfService: https://leadping.ai/docs/terms-of-service
  contact:
    name: Leadping Support
    url: https://leadping.ai/contact
    email: support@leadping.ai
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  version: v1
  summary: Lead management, messaging, calling, and automation API
servers:
- url: https://api.leadping.ai
  description: Production
tags:
- name: Conversations
  description: Provides lead conversation timelines and inbox-oriented conversation views. Use these endpoints to list recent conversations and retrieve the cross-channel communication history associated with a lead.
paths:
  /conversations/my:
    post:
      tags:
      - Conversations
      summary: List current user's inbox conversations
      description: Lists the current user's lead conversations with paging and sorting for inbox views, recent follow-up, and communication history.
      operationId: Conversations_GetAllForCurrentUser
      parameters:
      - name: archiveFilter
        in: query
        description: Optional filter selecting active, archived, or all lead conversations.
        schema:
          type: string
      requestBody:
        description: Pagination, filtering, and sorting options for the inbox.
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequestDataOptions'
              description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequestDataOptions'
              description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequestDataOptions'
              description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
        required: true
      responses:
        '200':
          description: Returns the paged conversation response.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/PagedResultOfConversationResponse'
                description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PagedResultOfConversationResponse'
                description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PagedResultOfConversationResponse'
                description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
        '400':
          description: The request was invalid or failed validation.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '500':
          description: An unexpected server error occurred.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '401':
          description: Authentication credentials are missing or invalid.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '403':
          description: The authenticated user or organization does not have permission to perform this operation.
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '429':
          description: The API rate limit for this account or client has been exceeded.
          headers:
            Retry-After:
              description: Number of seconds to wait before retrying the request.
              schema:
                minimum: 0
                type: integer
                format: int32
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
      security:
      - Bearer: []
  /conversations/lead/{leadId}:
    post:
      tags:
      - Conversations
      summary: List inbox conversations for a lead
      description: Lists conversations for one lead, helping users inspect communication threads, recent follow-up, and related events.
      operationId: Conversations_GetConversationsByLead
      parameters:
      - name: leadId
        in: path
        description: The lead ID to get conversations for.
        required: true
        schema:
          type: string
      requestBody:
        description: Pagination, filtering, and sorting options for the lead's conversations.
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequestDataOptions'
              description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequestDataOptions'
              description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RequestDataOptions'
              description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
        required: true
      responses:
        '200':
          description: Returns the paged conversation response.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/PagedResultOfConversationResponse'
                description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PagedResultOfConversationResponse'
                description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/PagedResultOfConversationResponse'
                description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
        '400':
          description: The request was invalid or failed validation.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '500':
          description: An unexpected server error occurred.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '401':
          description: Authentication credentials are missing or invalid.
          content:
            text/plain:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
            text/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '403':
          description: The authenticated user or organization does not have permission to perform this operation.
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
        '429':
          description: The API rate limit for this account or client has been exceeded.
          headers:
            Retry-After:
              description: Number of seconds to wait before retrying the request.
              schema:
                minimum: 0
                type: integer
                format: int32
          content:
            application/problem+json:
              schema:
                allOf:
                - $ref: '#/components/schemas/ProblemDetails'
                description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
      security:
      - Bearer: []
components:
  schemas:
    RequestDataOptions:
      type: object
      properties:
        pageSize:
          type: integer
          description: Maximum number of items requested for one page; the server may enforce a lower maximum or apply a default.
          format: int32
        continuationToken:
          type:
          - 'null'
          - string
          description: Opaque cursor returned by the previous paged response; omit it when requesting the first page and do not parse or modify it.
        orderBy:
          type:
          - 'null'
          - array
          items:
            allOf:
            - $ref: '#/components/schemas/OrderByOption'
            description: Defines one field and direction used to order an API query result set.
          description: Sort instructions applied in priority order, with the first entry acting as the primary sort.
        includeCount:
          type:
          - 'null'
          - boolean
          description: Whether the response should include the total number of matching records; counting may increase query cost or latency.
        search:
          type:
          - 'null'
          - string
          description: Free-text search term applied to the configured SearchFields.
        searchFields:
          type:
          - 'null'
          - array
          items:
            type: string
          description: Serializable string field names searched for Search; supported names are determined by the queried resource.
        filters:
          type:
          - 'null'
          - array
          items:
            allOf:
            - $ref: '#/components/schemas/ExactMatchFilter'
            description: Selects records whose named field equals a supplied scalar value.
          description: Exact-match conditions that require each named field to equal its supplied value.
        rangeFilters:
          type:
          - 'null'
          - array
          items:
            allOf:
            - $ref: '#/components/schemas/RangeFilter'
            description: Selects records by applying inclusive or exclusive lower and upper bounds to a named comparable field.
          description: Range conditions that constrain comparable fields with inclusive or exclusive lower and upper bounds.
      description: Defines cursor pagination, sorting, search, exact-match filters, and range filters for a structured API query.
    CurrentLeadStatusSummary:
      type: object
      properties:
        id:
          type:
          - 'null'
          - string
          description: Unique Leadping identifier for this current lead status change summary.
        category:
          enum:
          - Open
          - Qualified
          - Converted
          - Lost
          - Invalid
          - Duplicate
          type:
          - 'null'
          - string
          description: Controlled lead status change categories used for reporting, automation, and analytics.
        outcome:
          type:
          - 'null'
          - string
          description: Current lead status change outcome assigned to the lead.
        displayName:
          type: string
          description: Human-readable display name shown for this current lead status change summary.
        changedAt:
          type:
          - 'null'
          - string
          description: UTC timestamp when the lead status change last changed.
          format: date-time
        changedByUserId:
          type:
          - 'null'
          - string
          description: User ID of the person who last changed the lead status change.
        changedByAutomationId:
          type:
          - 'null'
          - string
          description: Automation ID that last changed the lead status change.
        source:
          enum:
          - User
          - AI
          - Automation
          - System
          - API
          type:
          - 'null'
          - string
          description: Known sources that can change a lead's current lead status change.
      description: Summary schema for Leadping API current lead status change summary data used in dashboards and reports.
    ProblemDetails:
      type: object
      properties:
        type:
          type:
          - 'null'
          - string
          description: URI reference that identifies the problem type.
        title:
          type:
          - 'null'
          - string
          description: Short, human-readable summary of the problem.
        status:
          type:
          - 'null'
          - integer
          description: HTTP status code returned for the problem.
          format: int32
        detail:
          type:
          - 'null'
          - string
          description: Human-readable explanation specific to this occurrence of the problem.
        instance:
          type:
          - 'null'
          - string
          description: URI reference that identifies this specific occurrence of the problem.
      description: Standard problem-details response containing machine-readable and human-readable information about an HTTP API error.
      example:
        type: https://leadping.ai/docs/errors/validation
        title: Request validation failed
        status: 400
        detail: One or more request fields are invalid.
        instance: /leads/intake
    OrderByOption:
      type: object
      properties:
        field:
          type: string
          description: Serializable field name used for sorting; supported names are determined by the queried resource.
        direction:
          enum:
          - asc
          - desc
          type:
          - 'null'
          - string
          description: Identifies whether query results are ordered from lower to higher values or from higher to lower values.
      description: Defines one field and direction used to order an API query result set.
    ExactMatchFilter:
      type: object
      properties:
        value:
          description: Scalar value the target field must equal; its JSON type should match the field being queried.
        field:
          type: string
          description: Serializable field name to evaluate; supported names are determined by the queried resource.
      description: Selects records whose named field equals a supplied scalar value.
    PagedResultOfConversationResponse:
      type: object
      properties:
        items:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/ConversationResponse'
            description: Describes conversation data returned by Leadping.
          description: Items included in the current page, in the order determined by the query.
        pageSize:
          type: integer
          description: Effective page-size limit used for this response, which may differ from the requested size because of server defaults or limits.
          format: int32
        totalCount:
          type:
          - 'null'
          - integer
          description: Total number of records matching the query across all pages, or null when counting was not requested or computed.
          format: int32
        continuationToken:
          type:
          - 'null'
          - string
          description: Opaque cursor for requesting the next page, or null when no additional page is available; clients must not parse or modify it.
      description: Returns one page of query results together with page-size, optional total-count, and opaque continuation-cursor metadata.
    ConversationResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique Leadping identifier for this conversation response.
        leadId:
          type: string
          description: Lead ID associated with this inbox conversation.
        firstName:
          type:
          - 'null'
          - string
          description: First name of the lead, user, or contact represented by this conversation response.
        lastName:
          type:
          - 'null'
          - string
          description: Last name of the lead, user, or contact represented by this conversation response.
        email:
          type:
          - 'null'
          - string
          description: Email address used to resolve the lead's avatar when available.
          format: email
        avatarUrl:
          type:
          - 'null'
          - string
          description: Optional profile image URL explicitly associated with the lead.
          format: uri
        lastSnippet:
          type:
          - 'null'
          - string
          description: Most recent message preview shown for the conversation.
        lastEventAt:
          type:
          - 'null'
          - string
          description: UTC timestamp when the most recent conversation event occurred.
          format: date-time
        lastEventIsInternalNote:
          type: boolean
          description: Indicates that the most recent conversation activity is an internal note.
        status:
          enum:
          - needs_reply
          - waiting
          - failed
          - open
          type:
          - 'null'
          - string
          description: Defines the customer-facing operational status for an inbox conversation.
        statusReason:
          type:
          - 'null'
          - string
          description: Human-readable reason explaining the current status of this conversation response.
        archivedAt:
          type:
          - 'null'
          - string
          description: UTC timestamp when this record was archived.
          format: date-time
        archiveReason:
          enum:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          type:
          - 'null'
          - integer
          description: Defines why a lead was removed from the active working pipeline.
          format: int32
        isArchived:
          type: boolean
          description: Indicates whether the Leadping conversation has been archived.
        currentLeadStatus:
          type:
          - 'null'
          - object
          allOf:
          - $ref: '#/components/schemas/CurrentLeadStatusSummary'
          description: Current lead status change summary that describes the lead outcome.
        nextStep:
          type:
          - 'null'
          - string
          description: Recommended next step to move this conversation response forward.
        isUnread:
          type: boolean
          description: Indicates whether the current user has unread activity in the conversation.
        phoneNumber:
          type:
          - 'null'
          - object
          allOf:
          - $ref: '#/components/schemas/IdNameValue'
          description: Phone number used by this conversation response for calls, SMS, lookup, or routing.
        leadPhoneNumber:
          type:
          - 'null'
          - string
          description: Lead's phone number used for conversation matching and outreach.
        outboundPhoneNumberOverrideId:
          type:
          - 'null'
          - string
          description: Phone number ID manually chosen to override automatic outbound selection.
        activeOutboundPhoneNumberId:
          type:
          - 'null'
          - string
          description: Phone number ID currently active for outbound delivery.
      description: Describes conversation data returned by Leadping.
    RangeFilter:
      type: object
      properties:
        greaterThan:
          description: Exclusive lower bound; matching field values must be greater than this value.
        greaterThanOrEqual:
          description: Inclusive lower bound; matching field values must be greater than or equal to this value.
        lessThan:
          description: Exclusive upper bound; matching field values must be less than this value.
        lessThanOrEqual:
          description: Inclusive upper bound; matching field values must be less than or equal to this value.
        field:
          type: string
          description: Serializable field name to evaluate; supported names are determined by the queried resource.
      description: Selects records by applying inclusive or exclusive lower and upper bounds to a named comparable field.
    IdNameValue:
      required:
      - id
      - name
      type: object
      properties:
        value:
          type:
          - 'null'
          - string
          description: Optional machine-readable or display value associated with the referenced resource.
        id:
          type: string
          description: Stable unique identifier of the referenced resource.
        name:
          type: string
          description: Human-readable display name of the referenced resource.
      description: Extends an identifier-and-name resource reference with an optional string value used for display or selection metadata.
  securitySchemes:
    Bearer:
      type: http
      description: Authorization header using the Bearer scheme. Accepted values are Leadping user JWT access tokens and WorkOS organization API keys beginning with sk_.
      scheme: bearer
      bearerFormat: JWT or organization API key
    SourceKey:
      type: http
      description: 'Leadping source key for lead ingestion endpoints only using the Authorization header. Example: "Authorization: Bearer lp_src_...".'
      scheme: bearer
      bearerFormat: Leadping source key
externalDocs:
  description: Leadping API documentation, authentication guide, concepts, and integration guidance.
  url: https://leadping.ai/docs/api-reference