AgentPhone Contacts API
The contacts API from AgentPhone — 3 operation(s) for contacts.
The contacts API from AgentPhone — 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/agentphone:agentphone-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: SMS Contacts API
description: A simple API to provision phone numbers and receive SMS
version: 0.1.0
tags:
- name: Contacts
paths:
/v1/contacts:
get:
tags:
- Contacts
summary: List Contacts
description: 'List all contacts for this account.
Optional `search` query filters by name or phone number (case-insensitive contains).'
operationId: list_contacts_v1_contacts_get
security:
- HTTPBearer: []
parameters:
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Search
- name: limit
in: query
required: false
schema:
type: integer
maximum: 200
default: 50
title: Limit
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
title: Offset
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- Contacts
summary: Create Contact
description: 'Create a new contact.
Phone number is normalized to E.164 format. Returns 409 if a contact
with this phone number already exists for the project.'
operationId: create_contact_v1_contacts_post
security:
- HTTPBearer: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateContactRequest'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/contacts/capabilities:
get:
tags:
- Contacts
summary: Get Contact Capabilities
description: 'Check which messaging channels a phone number supports, without sending
a message.
Runs a live check (typically 1-2 seconds), so the result reflects the
number right now. Capabilities can still change by the time you send.
Requires at least one active iMessage-capable or RCS number on the
account; each flag is null when your account holds no line that could
act on it (rcs reachability is checked against YOUR agents, so it can
differ per account while an agent is pre-launch).'
operationId: get_contact_capabilities_v1_contacts_capabilities_get
security:
- HTTPBearer: []
parameters:
- name: phone_number
in: query
required: true
schema:
type: string
description: Phone number to check (E.164 preferred; URL-encode + as %2B)
title: Phone Number
description: Phone number to check (E.164 preferred; URL-encode + as %2B)
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactCapabilitiesResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v1/contacts/{contact_id}:
get:
tags:
- Contacts
summary: Get Contact
description: Get a single contact by ID.
operationId: get_contact_v1_contacts__contact_id__get
security:
- HTTPBearer: []
parameters:
- name: contact_id
in: path
required: true
schema:
type: string
title: Contact Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- Contacts
summary: Update Contact
description: 'Update a contact''s fields.
If phoneNumber is updated, it''s re-normalized and checked for uniqueness (409 on conflict).'
operationId: update_contact_v1_contacts__contact_id__patch
security:
- HTTPBearer: []
parameters:
- name: contact_id
in: path
required: true
schema:
type: string
title: Contact Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateContactRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Contacts
summary: Delete Contact
description: Delete a contact.
operationId: delete_contact_v1_contacts__contact_id__delete
security:
- HTTPBearer: []
parameters:
- name: contact_id
in: path
required: true
schema:
type: string
title: Contact Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ContactResponse:
properties:
id:
type: string
title: Id
phoneNumber:
type: string
title: Phonenumber
name:
type: string
title: Name
email:
anyOf:
- type: string
- type: 'null'
title: Email
notes:
anyOf:
- type: string
- type: 'null'
title: Notes
createdAt:
type: string
format: date-time
title: Createdat
updatedAt:
type: string
format: date-time
title: Updatedat
type: object
required:
- id
- phoneNumber
- name
- createdAt
- updatedAt
title: ContactResponse
ContactCapabilityFlags:
properties:
imessage:
anyOf:
- type: boolean
- type: 'null'
title: Imessage
sms:
anyOf:
- type: boolean
- type: 'null'
title: Sms
rcs:
anyOf:
- type: boolean
- type: 'null'
title: Rcs
type: object
title: ContactCapabilityFlags
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
ContactCapabilitiesResponse:
properties:
phoneNumber:
type: string
title: Phonenumber
capabilities:
$ref: '#/components/schemas/ContactCapabilityFlags'
checkedAt:
type: string
format: date-time
title: Checkedat
type: object
required:
- phoneNumber
- capabilities
- checkedAt
title: ContactCapabilitiesResponse
ContactListResponse:
properties:
data:
items:
$ref: '#/components/schemas/ContactResponse'
type: array
title: Data
hasMore:
type: boolean
title: Hasmore
total:
type: integer
title: Total
type: object
required:
- data
- hasMore
- total
title: ContactListResponse
CreateContactRequest:
properties:
phoneNumber:
type: string
title: Phonenumber
name:
type: string
title: Name
email:
anyOf:
- type: string
- type: 'null'
title: Email
notes:
anyOf:
- type: string
- type: 'null'
title: Notes
type: object
required:
- phoneNumber
- name
title: CreateContactRequest
UpdateContactRequest:
properties:
phoneNumber:
anyOf:
- type: string
- type: 'null'
title: Phonenumber
name:
anyOf:
- type: string
- type: 'null'
title: Name
email:
anyOf:
- type: string
- type: 'null'
title: Email
notes:
anyOf:
- type: string
- type: 'null'
title: Notes
type: object
title: UpdateContactRequest
securitySchemes:
HTTPBearer:
type: http
scheme: bearer