The Mobile First Company CRM API
Manage people, companies, and deals in your CRM.
Manage people, companies, and deals in your CRM.
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/the-mobile-first-company-crm-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Allo Analytics CRM API
description: 'Allo API provides programmatic access to your Allo account, allowing you to manage webhooks, retrieve calls and contacts, and send SMS messages.
All requests to `/v1/api/**` endpoints automatically go through quota checking and scope validation.'
version: 1.0.0
contact:
name: Allo Support
servers:
- url: https://api.withallo.com
description: Production server
tags:
- name: CRM
description: Manage people, companies, and deals in your CRM.
paths:
/v2/api/crm/people:
post:
summary: Create person
description: Creates a new person in your CRM.
operationId: createPerson
tags:
- CRM
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePersonRequest'
example:
name: John
last_name: Doe
job_title: CEO
website: https://example.com
address: 123 Main St
numbers:
- '+33612345678'
emails:
- john@example.com
company_id: com-xyz789
responses:
'200':
description: Person created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmPerson'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'409':
$ref: '#/components/responses/ApiConflict'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/people/{id}:
get:
summary: Get person
description: Returns a single person by ID.
operationId: getPerson
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Person ID (e.g., "per-abc123")
schema:
type: string
example: per-abc123
responses:
'200':
description: Person details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmPerson'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'429':
$ref: '#/components/responses/ApiRateLimited'
put:
summary: Update person
description: Updates an existing person. Only provided fields will be updated.
operationId: updatePerson
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Person ID (e.g., "per-abc123")
schema:
type: string
example: per-abc123
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdatePersonRequest'
example:
job_title: CTO
responses:
'200':
description: Person updated
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmPerson'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/people/search:
post:
summary: Search people
description: Search and filter people in your CRM with advanced filtering, sorting, and pagination.
operationId: searchPeople
tags:
- CRM
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchPeopleRequest'
example:
filters:
job_title: engineer
company: Acme
sort: NAME_ASC
page: 1
size: 20
responses:
'200':
description: Search results
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CrmPerson'
- $ref: '#/components/schemas/PaginatedResponse'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/companies:
post:
summary: Create company
description: Creates a new company in your CRM.
operationId: createCompany
tags:
- CRM
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCompanyRequest'
example:
name: Acme Corp
website: https://acme.com
industry: Technology
responses:
'201':
description: Company created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmCompany'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/companies/{id}:
get:
summary: Get company
description: Returns a single company by ID.
operationId: getCompany
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Company ID (e.g., "com-xyz789")
schema:
type: string
example: com-xyz789
responses:
'200':
description: Company details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmCompany'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'429':
$ref: '#/components/responses/ApiRateLimited'
put:
summary: Update company
description: Updates an existing company. Only provided fields will be updated.
operationId: updateCompany
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Company ID (e.g., "com-xyz789")
schema:
type: string
example: com-xyz789
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCompanyRequest'
example:
industry: SaaS
responses:
'200':
description: Company updated
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmCompany'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/companies/search:
post:
summary: Search companies
description: Search and filter companies in your CRM.
operationId: searchCompanies
tags:
- CRM
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchCompaniesRequest'
example:
filters:
name: Acme
industry: Technology
sort: NAME_ASC
page: 1
size: 20
responses:
'200':
description: Search results
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CrmCompany'
- $ref: '#/components/schemas/PaginatedResponse'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/deals:
post:
summary: Create deal
description: Creates a new deal in your CRM.
operationId: createDeal
tags:
- CRM
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateDealRequest'
example:
name: Enterprise Plan
status: negotiation
amount: 50000
currency: USD
company_id: com-xyz789
responses:
'201':
description: Deal created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmDeal'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/deals/{id}:
get:
summary: Get deal
description: Returns a single deal by ID.
operationId: getDeal
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Deal ID (e.g., "dea-def456")
schema:
type: string
example: dea-def456
responses:
'200':
description: Deal details
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmDeal'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'429':
$ref: '#/components/responses/ApiRateLimited'
patch:
summary: Update deal
description: Updates an existing deal. Only provided fields will be updated.
operationId: updateDeal
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Deal ID (e.g., "dea-def456")
schema:
type: string
example: dea-def456
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDealRequest'
example:
status: won
closed_at: '2026-04-28T12:00:00'
responses:
'200':
description: Deal updated
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/CrmDeal'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
delete:
summary: Delete deal
description: Deletes a deal from your CRM.
operationId: deleteDeal
tags:
- CRM
security:
- ApiKeyAuth: []
parameters:
- name: id
in: path
required: true
description: Deal ID (e.g., "dea-def456")
schema:
type: string
example: dea-def456
responses:
'204':
description: Deal deleted
'401':
$ref: '#/components/responses/ApiUnauthorized'
'404':
$ref: '#/components/responses/ApiNotFound'
'429':
$ref: '#/components/responses/ApiRateLimited'
/v2/api/crm/deals/search:
post:
summary: Search deals
description: Search and filter deals in your CRM.
operationId: searchDeals
tags:
- CRM
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchDealsRequest'
example:
search: Enterprise
page: 1
size: 20
responses:
'200':
description: Search results
content:
application/json:
schema:
allOf:
- type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CrmDeal'
- $ref: '#/components/schemas/PaginatedResponse'
'401':
$ref: '#/components/responses/ApiUnauthorized'
'422':
$ref: '#/components/responses/ApiValidationError'
'429':
$ref: '#/components/responses/ApiRateLimited'
components:
schemas:
UpdateDealRequest:
type: object
description: Request body for updating a deal. Only provided fields will be updated.
properties:
name:
type:
- string
- 'null'
description: Deal name
status:
type:
- string
- 'null'
description: Deal status
amount:
type:
- number
- 'null'
description: Deal monetary value
currency:
type:
- string
- 'null'
description: Three-letter ISO 4217 currency code
minLength: 3
maxLength: 3
closed_at:
type:
- string
- 'null'
description: When the deal was closed (ISO 8601)
company_id:
type:
- string
- 'null'
description: ID of the company to associate with
ApiError:
type: object
properties:
error:
type: object
properties:
type:
type: string
code:
type: string
message:
type: string
retryable:
type: boolean
request_id:
type: string
retry_after_seconds:
type:
- integer
- 'null'
CreateDealRequest:
type: object
description: Request body for creating a deal
required:
- name
properties:
name:
type: string
description: Deal name
example: Enterprise Plan
status:
type:
- string
- 'null'
description: Deal status
example: negotiation
amount:
type:
- number
- 'null'
description: Deal monetary value
example: 50000
currency:
type:
- string
- 'null'
description: Three-letter ISO 4217 currency code
example: USD
minLength: 3
maxLength: 3
closed_at:
type:
- string
- 'null'
description: When the deal was closed (ISO 8601)
example: '2026-04-28T12:00:00'
company_id:
type:
- string
- 'null'
description: ID of the company to associate with
example: com-xyz789
SearchDealsRequest:
type: object
description: Request body for searching deals
properties:
filters:
type:
- object
- 'null'
description: Named filters. Combined with AND.
properties:
stage:
type: string
description: Filter by deal stage/status (exact match)
search:
type:
- string
- 'null'
description: Free-text search across deal name and company
sort:
type:
- string
- 'null'
enum:
- DATE_DESC
- DATE_ASC
- NAME_ASC
- NAME_DESC
- CREATED_DESC
- CREATED_ASC
description: 'Sort order (default: DATE_DESC)'
page:
type: integer
default: 1
description: Page number (1-indexed)
size:
type: integer
default: 20
maximum: 100
description: Results per page
SearchPeopleRequest:
type: object
description: Request body for searching people
properties:
filters:
type:
- object
- 'null'
description: Named filters. All are combined with AND.
properties:
name:
type: string
description: Filter by first name (contains)
last_name:
type: string
description: Filter by last name (contains)
job_title:
type: string
description: Filter by job title (contains)
website:
type: string
description: Filter by website (contains)
company:
type: string
description: Filter by company name (contains)
phone_number:
type: string
description: Filter by phone number (exact match)
email:
type: string
description: Filter by email (contains)
deal_status:
type: string
description: Filter by deal status (exact match)
search:
type:
- string
- 'null'
description: Free-text search across name, email, phone number, and company
sort:
type:
- string
- 'null'
enum:
- DATE_DESC
- DATE_ASC
- NAME_ASC
- NAME_DESC
- CREATED_DESC
- CREATED_ASC
description: 'Sort order (default: DATE_DESC)'
page:
type: integer
default: 1
description: Page number (1-indexed)
size:
type: integer
default: 20
maximum: 100
description: Results per page
CrmCompany:
type: object
description: A company in the CRM
properties:
id:
type: string
description: Unique company identifier
example: com-xyz789
name:
type: string
description: Company name
example: Acme Corp
website:
type:
- string
- 'null'
description: Company website URL
example: https://acme.com
industry:
type:
- string
- 'null'
description: Industry sector
example: Technology
person_count:
type: integer
description: Number of people linked to this company
example: 3
interactions:
type: integer
description: Total number of interactions across all people in this company
example: 12
last_activity_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the last activity
example: '2026-04-28T10:30:00'
created_at:
type: string
format: date-time
description: When the company was created
example: '2026-04-01T09:00:00'
updated_at:
type: string
format: date-time
description: When the company was last updated
example: '2026-04-28T10:30:00'
UpdatePersonRequest:
type: object
description: Request body for updating a person. Only provided fields will be updated.
properties:
name:
type:
- string
- 'null'
description: First name
last_name:
type:
- string
- 'null'
description: Last name
job_title:
type:
- string
- 'null'
description: Job title
website:
type:
- string
- 'null'
description: Website URL
address:
type:
- string
- 'null'
description: Postal address
numbers:
type:
- array
- 'null'
items:
type: string
description: Phone numbers (replaces all existing numbers)
emails:
type:
- array
- 'null'
items:
type: string
description: Email addresses (replaces all existing emails)
company_id:
type:
- string
- 'null'
description: ID of the company to associate with
UpdateCompanyRequest:
type: object
description: Request body for updating a company. Only provided fields will be updated.
properties:
name:
type:
- string
- 'null'
description: Company name
website:
type:
- string
- 'null'
description: Company website URL
industry:
type:
- string
- 'null'
description: Industry sector
CrmDeal:
type: object
description: A deal in the CRM
properties:
id:
type: string
description: Unique deal identifier
example: dea-def456
name:
type: string
description: Deal name
example: Enterprise Plan
status:
type:
- string
- 'null'
description: Current deal status
example: negotiation
amount:
type:
- number
- 'null'
description: Deal monetary value
example: 50000
currency:
type:
- string
- 'null'
description: Three-letter ISO 4217 currency code
example: USD
minLength: 3
maxLength: 3
closed_at:
type:
- string
- 'null'
format: date-time
description: When the deal was closed (ISO 8601)
example: null
company:
$ref: '#/components/schemas/CrmCompanyRef'
created_at:
type: string
format: date-time
description: When the deal was created
example: '2026-04-15T14:00:00'
updated_at:
type: string
format: date-time
description: When the deal was last updated
example: '2026-04-28T10:30:00'
CrmPerson:
type: object
description: A person in the CRM
properties:
id:
type: string
description: Unique person identifier
example: per-abc123
name:
type:
- string
- 'null'
description: First name
example: John
last_name:
type:
- string
- 'null'
description: Last name
example: Doe
job_title:
type:
- string
- 'null'
description: Job title
example: CEO
website:
type:
- string
- 'null'
description: Website URL
example: https://example.com
address:
type:
- string
- 'null'
description: Postal address
example: 123 Main St
numbers:
type: array
items:
type: string
description: Phone numbers in E.164 format
example:
- '+33612345678'
emails:
type: array
items:
type: string
description: Email addresses
example:
- john@example.com
company:
$ref: '#/components/schemas/CrmCompanyRef'
interactions:
type: integer
description: Total number of interactions (calls + messages)
example: 5
last_activity_at:
type:
- string
- 'null'
format: date-time
description: Timestamp of the last activity
example: '2026-04-28T10:30:00'
created_at:
type: string
format: date-time
description: When the person was created
example: '2026-04-01T09:00:00'
updated_at:
type: string
format: date-time
description: When the person was last updated
example: '2026-04-28T10:30:00'
PaginatedResponse:
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
CrmCompanyRef:
type:
- object
- 'null'
description: Embedded company reference
properties:
id:
type: string
description: Company ID
example: com-xyz789
name:
type: string
description: Company name
example: Acme Corp
CreatePersonRequest:
type: object
description: Request body for creating a person
required:
- numbers
properties:
name:
type:
- string
- 'null'
description: First name
example: John
last_name:
type:
- string
- 'null'
description: Last name
example: Doe
job_title:
type:
- string
- 'null'
description: Job title
example: CEO
website:
type:
- string
- 'null'
description: Website URL
example: https://example.com
address:
type:
- string
- 'null'
description: Postal address
example: 123 Main St
numbers:
type: array
items:
type: string
description: Phone numbers in E.164 format. At least one number is required.
minItems: 1
example:
- '+33612345678'
emails:
type:
- array
- 'null'
items:
type: string
description: Email addresses
example:
- john@example.com
company_id:
type:
- string
- 'null'
description: ID of the company to associate with
example: com-xyz789
allow_duplicate_number:
type: boolean
description: When true, allows creating a person even if the phone numbers are already assigned to another person. Defaults to false.
default: false
Pagination:
type: object
properties:
page:
type: integer
size:
type: integer
total_count:
type: integer
total_pages:
type: integer
has_more:
type: boolean
CreateCompanyRequest:
type: object
description: Request body for creating a company
required:
- name
properties:
name:
type: string
description: Company name
example: Acme Corp
website:
type:
- string
- 'null'
description: Company website URL
example: https://acme.com
industry:
type:
- string
- 'null'
description: Industry sector
example: Technology
SearchCompaniesRequest:
type: object
description: Request body for searching companies
properties:
filters:
type:
- object
- 'null'
description: Named filters. All are combined with AND.
properties:
name:
type: string
description: Filter by company name (contains)
website:
type: string
description: Filter by website (contains)
industry:
type: string
description: Filter by industry (contains)
sort:
type:
- string
- 'null'
enum:
- DATE_DESC
- DATE_ASC
- NAME_ASC
- NAME_DESC
- CREATED_DESC
- CREATED_ASC
description: 'Sort order (default: DATE_DESC)'
page:
type: integer
default: 1
description: Page number (1-indexed)
size:
type: integer
default: 20
maximum: 100
description: Results per page
responses:
ApiConflict:
description: Conflict with existing resource
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
ApiNotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
ApiRateLimited:
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
ApiValidationError:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
ApiUnauthorized:
description: Invalid or missing API key
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
securitySchemes:
CallsAuth:
type: apiKey
in: header
name: Authorization
description: 'Scope needed: `CONVERSATIONS_READ`'
ContactsAuth:
type: apiKey
in: header
name: Authorization
description: 'Scope needed: `CONTACTS_READ`'
ContactsWriteAuth:
type: apiKey
in: header
name: Authorization
description: 'Scope needed: `CONTACTS_READ_WRITE`'
SmsAuth:
type: apiKey
in: header
name: Authorization
description: 'Scope needed: `SMS_SEND`'
ApiKeyAuth:
type: apiKey
in: header
name: Authorization