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