EZ Texting Contacts API
The Contacts API from EZ Texting — 3 operation(s) for contacts.
The Contacts API from EZ Texting — 3 operation(s) for contacts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/eztexting-com:eztexting-com-contacts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: EzTexting Contacts API
description: EzTexting API
termsOfService: https://www.eztexting.com/terms
contact:
email: support@eztexting.com
version: '1.0'
servers:
- url: a.eztexting.com
security:
- basic_auth:
- read
- write
- oauth_auth:
- read
- write
tags:
- name: Contacts
paths:
/v1/contacts:
get:
tags:
- Contacts
summary: List Contacts
description: List contacts matching provided filters
operationId: list
parameters:
- name: page
in: query
description: Offset of a given page. The default is 0. See [pagination](https://eztexting.readme.io/docs/pagination) docs for more information.
required: false
schema:
type: integer
default: 0
example: 0
- name: size
in: query
description: The maximum number of records to return in a paged list response. The default is 20 and allowed values are 10, 20, 50, 100, 200
required: false
schema:
type: string
default: '20'
enum:
- '10'
- '20'
- '50'
- '100'
- '200'
example: 20
- name: sort
in: query
description: 'Sort field name and direction (asc or desc). Example: sort=created,desc'
required: false
schema:
type: string
- name: filters[phoneNumber][like]
in: query
description: Filter by phone number
schema:
type: string
- name: filters[firstName][like]
in: query
description: Filter by first name
schema:
type: string
- name: filters[lastName][like]
in: query
description: Filter by last name
schema:
type: string
- name: filters[email][like]
in: query
description: Filter by email
schema:
type: string
- name: filters[source][eq]
in: query
description: 'Filter by source: ''Unknown'', ''WebInterface'', ''Upload'', ''WebWidget'', ''API'', ''Keyword'''
schema:
type: string
- name: filters[optOut][eq]
in: query
description: 'Filter by optOut status: true, false'
schema:
type: string
- name: filters[groupName][like]
in: query
description: Filter by group name
schema:
type: string
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/PageResponseContact'
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'429':
description: Too Many Requests
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
post:
tags:
- Contacts
summary: Create or Update Contact
description: Create a new contact or update an existing contact
operationId: createOrUpdate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ContactUpsertRequest'
required: true
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/IdResponseString'
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'429':
description: Too Many Requests
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
/v1/contacts/batch:
post:
tags:
- Contacts
summary: Create or Update a Batch of Contacts
description: Create or update a batch of contacts
operationId: createOrUpdateBatch
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ContactsBatchUpsertRequest'
required: true
responses:
'200':
description: OK
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'429':
description: Too Many Requests
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
/v1/contacts/{phoneNumber}:
get:
tags:
- Contacts
summary: Get Contact
description: Get a contact by phone number
operationId: get
parameters:
- name: phoneNumber
in: path
description: Phone number
required: true
schema:
type: string
responses:
'200':
description: OK
content:
'*/*':
schema:
$ref: '#/components/schemas/Contact'
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'429':
description: Too Many Requests
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
delete:
tags:
- Contacts
summary: Delete Contact
description: Delete a contact by phone number
operationId: delete
parameters:
- name: phoneNumber
in: path
description: Phone number
required: true
schema:
type: string
responses:
'200':
description: OK
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
'429':
description: Too Many Requests
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/Errors'
components:
schemas:
ContactsBatchUpsertRequest:
type: object
description: ContactsBatchUpsertRequest
properties:
contacts:
type: array
description: Contacts to create or update
items:
$ref: '#/components/schemas/ContactsBatchUpsertContact'
minItems: 1
groupIdsAdd:
type: array
description: Groups to add contacts to
items:
type: string
groupIdsRemove:
type: array
description: Groups to remove contacts from
items:
type: string
required:
- contacts
Error:
type: object
properties:
code:
type: string
title:
type: string
message:
type: string
ContactsBatchUpsertContact:
type: object
description: ContactsBatchUpsertContact
properties:
phoneNumber:
type: string
description: Phone number
firstName:
type: string
description: First name
maxLength: 255
minLength: 1
lastName:
type: string
description: Last name
maxLength: 255
minLength: 1
email:
type: string
format: email
description: Email address
note:
type: string
description: Notes
maxLength: 500
minLength: 0
custom1:
type: string
description: Custom value 1
maxLength: 255
minLength: 0
custom2:
type: string
description: Custom value 2
maxLength: 255
minLength: 0
custom3:
type: string
description: Custom value 3
maxLength: 255
minLength: 0
custom4:
type: string
description: Custom value 4
maxLength: 255
minLength: 0
custom5:
type: string
description: Custom value 5
maxLength: 255
minLength: 0
values:
type: object
additionalProperties:
type: string
Contact:
type: object
description: Contact
properties:
phoneNumber:
type: string
description: Phone number
firstName:
type: string
description: First name
lastName:
type: string
description: Last name
email:
type: string
description: Email address
note:
type: string
description: Notes
custom1:
type: string
description: Custom value 1
custom2:
type: string
description: Custom value 2
custom3:
type: string
description: Custom value 3
custom4:
type: string
description: Custom value 4
custom5:
type: string
description: Custom value 5
source:
type: integer
format: int32
description: Source this contact was created from, e.g. API, WEBWIDGET, UPLOAD etc
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 21
- 22
- 23
- 999990
- 999991
- 999992
- 999993
- 999994
- 999995
values:
type: object
additionalProperties:
type: string
createdAt:
type: string
format: date-time
description: Created date
updatedAt:
type: string
format: date-time
description: Last modification date
optOut:
type: boolean
description: Is opted out
groups:
type: array
description: Groups this contact is in
items:
$ref: '#/components/schemas/ContactGroup'
IdResponseString:
type: object
properties:
id:
type: string
ContactUpsertRequest:
type: object
description: ContactUpsertRequest
properties:
phoneNumber:
type: string
description: Phone number
firstName:
type: string
description: First name
maxLength: 20
minLength: 0
lastName:
type: string
description: Last name
maxLength: 20
minLength: 0
email:
type: string
format: email
description: Email address
note:
type: string
description: Notes
maxLength: 200
minLength: 0
custom1:
type: string
description: Custom value 1
maxLength: 20
minLength: 0
custom2:
type: string
description: Custom value 2
maxLength: 20
minLength: 0
custom3:
type: string
description: Custom value 3
maxLength: 20
minLength: 0
custom4:
type: string
description: Custom value 4
maxLength: 20
minLength: 0
custom5:
type: string
description: Custom value 5
maxLength: 20
minLength: 0
values:
type: object
additionalProperties:
type: string
groupIdsAdd:
type: array
description: Groups to add contact to
items:
type: string
groupIdsRemove:
type: array
description: Groups to remove contact from
items:
type: string
PageResponseContact:
type: object
description: Page
properties:
content:
type: array
description: The paged collection of elements
items:
$ref: '#/components/schemas/Contact'
number:
type: integer
format: int32
description: The requested page number
example: 0
size:
type: integer
format: int32
description: The requested page size
example: 20
totalElements:
type: integer
format: int64
description: The total number of elements available
example: 100
totalPages:
type: integer
format: int32
description: The total number of pages available
example: 5
numberOfElements:
type: integer
format: int32
description: The number of elements in the current page
example: 20
ContactGroup:
type: object
description: ContactGroup
properties:
id:
type: string
description: Group id
name:
type: string
description: Group name
note:
type: string
description: Notes related to contact group
contactsCount:
type: integer
format: int32
description: Number of contacts in contact group
Errors:
type: object
properties:
status:
type: integer
format: int32
title:
type: string
detail:
type: string
errors:
type: array
items:
$ref: '#/components/schemas/Error'
securitySchemes:
basic_auth:
type: http
scheme: basic
oauth_auth:
type: oauth2
flows:
password:
tokenUrl: http://nova-app.stg0.cf.wtf/oauth_token/generate/swagger
scopes:
read: ''
write: ''
x-proxy-enabled: false
x-send-defaults: true
x-samples-languages:
- curl
- node
- ruby
- javascript
- python
- java
- swift
- kotlin
- go
- csharp
x-provenance:
method: searched
source: https://developers.eztexting.com/reference
harvested: '2026-11-07'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://developers.eztexting.com/reference/acquire-1.md
- https://developers.eztexting.com/reference/acquire_1-1.md
- https://developers.eztexting.com/reference/archive-1.md
- https://developers.eztexting.com/reference/blockoutboundtexts-1.md
- https://developers.eztexting.com/reference/check-1.md
- https://developers.eztexting.com/reference/contactsadd-1.md
- https://developers.eztexting.com/reference/contactsremove-1.md
- https://developers.eztexting.com/reference/create-1.md
- https://developers.eztexting.com/reference/create_1-1.md
- https://developers.eztexting.com/reference/create_2-1.md
- https://developers.eztexting.com/reference/create_3-1.md
- https://developers.eztexting.com/reference/create_4-1.md
- https://developers.eztexting.com/reference/create_5-1.md
- https://developers.eztexting.com/reference/create_6-1.md
- https://developers.eztexting.com/reference/createorupdate-1.md
- https://developers.eztexting.com/reference/createorupdatebatch-1.md
- https://developers.eztexting.com/reference/creditbalance-1.md
- https://developers.eztexting.com/reference/delete-1.md
- https://developers.eztexting.com/reference/delete_1-1.md
- https://developers.eztexting.com/reference/delete_2-1.md
- https://developers.eztexting.com/reference/delete_3-1.md
- https://developers.eztexting.com/reference/delete_4-1.md
- https://developers.eztexting.com/reference/delete_5-1.md
- https://developers.eztexting.com/reference/delete_6-1.md
- https://developers.eztexting.com/reference/details-1.md
- https://developers.eztexting.com/reference/get-1.md
- https://developers.eztexting.com/reference/get_1-1.md
- https://developers.eztexting.com/reference/get_2-1.md
- https://developers.eztexting.com/reference/get_3-1.md
- https://developers.eztexting.com/reference/get_4-1.md
- https://developers.eztexting.com/reference/get_5-1.md
- https://developers.eztexting.com/reference/get_6-1.md
- https://developers.eztexting.com/reference/list-1.md
- https://developers.eztexting.com/reference/list_1-1.md
- https://developers.eztexting.com/reference/list_2-1.md
- https://developers.eztexting.com/reference/list_3-1.md
- https://developers.eztexting.com/reference/list_4-1.md
- https://developers.eztexting.com/reference/list_5-1.md
- https://developers.eztexting.com/reference/list_6-1.md
- https://developers.eztexting.com/reference/list_7-1.md
- https://developers.eztexting.com/reference/list_8-1.md
- https://developers.eztexting.com/reference/listcampaigns-1.md
- https://developers.eztexting.com/reference/listresponsesdelivery-1.md
- https://developers.eztexting.com/reference/listresponsesengagement-1.md
- https://developers.eztexting.com/reference/listresponseslink-1.md
- https://developers.eztexting.com/reference/messagelist-1.md
- https://developers.eztexting.com/reference/messageread-1.md
- https://developers.eztexting.com/reference/messageunread-1.md
- https://developers.eztexting.com/reference/purchasecredits-1.md
- https://developers.eztexting.com/reference/refresh-1.md
- https://developers.eztexting.com/reference/release-1.md
- https://developers.eztexting.com/reference/restore-1.md
- https://developers.eztexting.com/reference/revoke-1.md
- https://developers.eztexting.com/reference/update-1.md
- https://developers.eztexting.com/reference/update_1-1.md
- https://developers.eztexting.com/reference/update_2-1.md
- https://developers.eztexting.com/reference/updatesettings-1.md
merge:
pages: 57
deduped: 253
conflicts_kept_first: 0