openapi: 3.2.0
info:
title: Leadping Sms Events 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: SmsEvents
description: Provides SMS and MMS event records for delivery tracking and diagnostics. Use these endpoints to search and inspect message lifecycle events, including outbound delivery updates and inbound messaging activity.
paths:
/events/sms/all/my:
post:
tags:
- SmsEvents
summary: List current-user lead SMS event history
description: Lists SMS events visible to the current user with paging, sorting, and filters for message history and follow-up review.
operationId: SmsEvents_GetAllForCurrentUser
requestBody:
description: Pagination, filtering, and sorting options.
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.
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: SMS events were successfully retrieved.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PagedResultOfSmsEventTableRow'
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 malformed.
content:
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.
'401':
description: Authentication credentials are missing or invalid.
content:
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.
'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: []
/events/sms/{smsEventId}:
get:
tags:
- SmsEvents
summary: Get lead SMS event details by event ID
description: Returns one SMS event, including message metadata, provider status, related lead, and delivery context.
operationId: SmsEvents_GetById
parameters:
- name: smsEventId
in: path
description: The ID of the SMS event to retrieve.
required: true
schema:
type: string
responses:
'200':
description: Returns the sms event table row.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/SmsEventTableRow'
description: Summarizes SMS event data in paginated and searchable results.
'404':
description: The requested resource was not found.
content:
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.
'401':
description: Authentication credentials are missing or invalid.
content:
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.
'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: []
/events/sms/lead/{leadId}:
post:
tags:
- SmsEvents
summary: List message event history for a lead
description: Lists SMS events for one lead with paging, helping users review sent messages, scheduled messages, and delivery outcomes.
operationId: SmsEvents_GetByLeadId
parameters:
- name: leadId
in: path
description: The ID of the lead.
required: true
schema:
type: string
requestBody:
description: Pagination, filtering, and sorting options.
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.
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 sms event table row.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PagedResultOfSmsEventTableRow'
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:
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.
'401':
description: Authentication credentials are missing or invalid.
content:
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.
'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: []
/events/sms/phone/{phoneNumber}:
post:
tags:
- SmsEvents
summary: List SMS event history for a phone number
description: Lists SMS events for one phone number with paging, helping users review volume, delivery outcomes, and communication history.
operationId: SmsEvents_GetByPhoneNumber
parameters:
- name: phoneNumber
in: path
description: The phone number to search for.
required: true
schema:
type: string
requestBody:
description: Pagination, filtering, and sorting options.
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.
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 sms event table row.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/PagedResultOfSmsEventTableRow'
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:
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.
'401':
description: Authentication credentials are missing or invalid.
content:
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.
'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.
CommunicationConsoleEntry:
type: object
properties:
id:
type: string
description: Unique identifier of this diagnostic console entry.
stage:
type: string
description: Communication-processing stage that produced the entry, such as validation, routing, or provider delivery.
status:
type: string
description: Outcome or state recorded for this processing stage.
message:
type: string
description: User-safe diagnostic message describing what occurred at this stage.
occurredAt:
type: string
description: UTC timestamp when this communication-processing event occurred.
format: date-time
description: Describes one durable diagnostic entry from the processing of a communication.
SmsEventTableRow:
type: object
properties:
id:
type: string
description: Unique Leadping identifier for this SMS event table row.
conversationId:
type:
- 'null'
- string
description: Conversation ID that links this SMS event table row to the Leadping inbox thread.
lead:
allOf:
- $ref: '#/components/schemas/IdNamePair'
description: Identifier and display name of the related lead.
fromPhoneNumberId:
type: string
description: Sender phone number ID used for this outbound SMS or call.
outboundPhoneNumberId:
type: string
description: Phone number ID selected for outbound delivery.
fromPhoneNumber:
type: string
description: Sender phone number used for this communication.
toPhoneNumber:
type: string
description: Recipient phone number used for this communication.
text:
type: string
description: Body text for the SMS message or communication represented by this SMS event table row.
media:
type: array
items:
allOf:
- $ref: '#/components/schemas/MessageMediaAttachment'
description: Media attached to an SMS/MMS conversation event.
description: Media attached to this SMS/MMS event.
status:
enum:
- draft
- scheduled
- queued
- sending
- sent
- received
- delivered
- failed
- undeliverable
- opted_out
- blocked_compliance
- blocked_billing
- blocked_missing_campaign
- canceled
type:
- 'null'
- string
description: Describes the normalized lifecycle of an SMS or MMS message from scheduling through delivery or failure.
statusReason:
type:
- 'null'
- string
description: Human-readable reason explaining the current status of this SMS event table row.
direction:
type: string
description: Communication direction for this SMS event table row, such as inbound or outbound.
createdAt:
type: string
description: UTC timestamp when this SMS event table row was created.
format: date-time
queuedAt:
type:
- 'null'
- string
description: UTC timestamp when Leadping queued this SMS event table row for processing.
format: date-time
scheduledFor:
type:
- 'null'
- string
description: UTC timestamp when this SMS event is scheduled to send.
format: date-time
scheduledReason:
type:
- 'null'
- string
description: Reason Leadping scheduled this delivery for a later time.
sendingStartedAt:
type:
- 'null'
- string
description: UTC timestamp when Leadping began sending this message.
format: date-time
sentAt:
type:
- 'null'
- string
description: UTC timestamp when Leadping sent this message to the provider.
format: date-time
deliveredAt:
type:
- 'null'
- string
description: UTC timestamp when the provider confirmed delivery.
format: date-time
failedAt:
type:
- 'null'
- string
description: UTC timestamp when processing failed for this SMS event table row.
format: date-time
undeliverableAt:
type:
- 'null'
- string
description: UTC timestamp when the provider marked the message undeliverable.
format: date-time
receivedAt:
type:
- 'null'
- string
description: UTC timestamp when Leadping received this inbound event or message.
format: date-time
blockedAt:
type:
- 'null'
- string
description: UTC timestamp when Leadping blocked this communication.
format: date-time
canceledAt:
type:
- 'null'
- string
description: UTC timestamp when this delivery or workflow was canceled.
format: date-time
cancelReason:
type:
- 'null'
- string
description: Reason this delivery, run, or request was canceled.
errorCode:
type:
- 'null'
- string
description: Machine-readable error code returned while processing this SMS event table row.
errorMessage:
type:
- 'null'
- string
description: Human-readable error message returned while processing this SMS event table row.
isAutomated:
type: boolean
description: Indicates whether automation created or triggered this SMS event table row.
outboundSource:
enum:
- manual
- automation
- campaign
- import
- api
- system_notification
- warmup
- retry
type:
- 'null'
- string
description: Defines the source that requested outbound delivery.
trafficType:
enum:
- RealLead
- Warmup
- Test
- SystemInternal
- FailedAttempt
type:
- 'null'
- string
description: Classifies messaging traffic by conversational, informational, marketing, or other compliance-relevant purpose.
billableAmount:
type:
- 'null'
- number
description: Monetary amount billed for this Leadping communication or transaction.
format: double
billingStatus:
type:
- 'null'
- string
description: Billing state for this communication, charge, or transaction.
complianceAction:
type:
- 'null'
- string
description: Compliance action applied to this message, lead, or sender.
consoleEntries:
type: array
items:
allOf:
- $ref: '#/components/schemas/CommunicationConsoleEntry'
description: Describes one durable diagnostic entry from the processing of a communication.
description: Ordered diagnostic entries recorded while Leadping processed this message.
user:
type: string
description: User summary connected to this SMS event table row.
actorUserId:
type:
- 'null'
- string
description: User ID for the actor that performed the action.
actorDisplayName:
type:
- 'null'
- string
description: Display name for the actor that performed the action.
userName:
type:
- 'null'
- string
description: Display name for the user connected to this SMS event table row.
senderName:
type:
- 'null'
- string
description: Display name for the sender of this message.
organization:
type: string
description: Organization summary connected to this SMS event table row.
organizationName:
type:
- 'null'
- string
description: Organization display name shown for this SMS event.
description: Summarizes SMS event data in paginated and searchable results.
MessageMediaAttachment:
type: object
properties:
url:
type: string
description: URL from which the media attachment can be retrieved.
format: uri
contentType:
type:
- 'null'
- string
description: MIME content type of the media attachment.
size:
type:
- 'null'
- integer
description: Size of the media attachment in bytes.
format: int64
sha256:
type:
- 'null'
- string
description: SHA-256 digest of the media content, when available.
fileName:
type:
- 'null'
- string
description: Original file name of the media attachment, when available.
description: Media attached to an SMS/MMS conversation event.
PagedResultOfSmsEventTableRow:
type: object
properties:
items:
type: array
items:
allOf:
- $ref: '#/components/schemas/SmsEventTableRow'
description: Summarizes SMS event data in paginated and searchable results.
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.
IdNamePair:
required:
- id
- name
type: object
properties:
id:
type: string
description: Stable unique identifier of the referenced resource.
name:
type: string
description: Human-readable display name of the referenced resource.
description: Provides a compact API reference to another resource using its stable identifier and human-readable display name.
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.
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
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.
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