The Mobile First Company Calls API
Retrieve and search call records with filtering and pagination. Filter calls by your Allo phone number.
Retrieve and search call records with filtering and pagination. Filter calls by your Allo phone number.
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-calls-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 Calls 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: Calls
description: Retrieve and search call records with filtering and pagination. Filter calls by your Allo phone number.
paths:
/v1/api/calls:
get:
summary: Search Calls
description: Search and filter calls for a specific Allo phone number with pagination support.
operationId: searchCalls
tags:
- Calls
security:
- CallsAuth: []
parameters:
- name: size
in: query
description: Number of results per page. Must be between 1 and 100.
required: false
schema:
type: integer
minimum: 1
maximum: 100
default: 10
- name: page
in: query
description: Page number (0-indexed).
required: false
schema:
type: integer
minimum: 0
default: 0
- name: allo_number
in: query
description: Your Allo phone number to filter calls by. Must be in E.164 format (e.g., `+1234567890`).
required: true
schema:
type: string
example: '+1234567890'
- name: contact_number
in: query
description: Filter calls by contact phone number. Only returns calls with this specific contact. Must be in E.164 format (e.g., `+1234567890`).
required: false
schema:
type: string
example: +0987654321
responses:
'200':
description: Calls retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SearchCallsApiResponse'
example:
data:
results:
- id: call_abc123
from_number: '+1234567890'
to_number: +0987654321
length_in_minutes: 5.5
type: INBOUND
summary: Customer called about order status.
tag: support
recording_url: https://storage.withallo.com/recordings/abc123.mp3
start_date: '2024-01-15T10:30:00'
transcript:
- source: AGENT
text: Hello, how can I help you today?
time: '2024-01-15T10:30:05'
start_seconds: 5
end_seconds: 8.5
- source: EXTERNAL
text: Hi, I'm calling about my order status.
time: '2024-01-15T10:30:10'
start_seconds: 10
end_seconds: 14
metadata:
total_pages: 5
current_page: 0
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
schemas:
SearchMetadata:
type: object
description: Pagination metadata for calls endpoint
properties:
total_pages:
type: integer
example: 5
current_page:
type: integer
example: 0
SearchCallsApiResponse:
type: object
description: Standard response wrapper for paginated call results
properties:
data:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/CallApiResponse'
metadata:
$ref: '#/components/schemas/SearchMetadata'
ErrorDetail:
type: object
properties:
message:
type: string
field:
type: string
CallApiResponse:
type: object
description: A call record with details about the conversation
properties:
id:
type: string
description: Unique call identifier
example: call_abc123
from_number:
type: string
description: Phone number that initiated the call (E.164 format or 'anonymous')
example: '+1234567890'
to_number:
type:
- string
- 'null'
description: Phone number that received the call
example: +0987654321
length_in_minutes:
type: number
format: double
description: Duration of the call in minutes
example: 5.5
type:
type:
- string
- 'null'
enum:
- INBOUND
- OUTBOUND
description: Direction of the call
result:
type: string
enum:
- ANSWERED
- VOICEMAIL
- TRANSFERRED_AI
- TRANSFERRED_EXTERNAL
- BLOCKED
- FAILED
- FAILED_EXTERNAL
- RECEIVED
- CLOSED
description: 'The outcome of the call. For outbound calls that reached voicemail, this will be VOICEMAIL regardless of the routing result. Common values: ANSWERED (call was answered), VOICEMAIL (call went to voicemail), TRANSFERRED_AI (transferred to AI agent), BLOCKED (call was blocked)'
example: ANSWERED
summary:
type:
- string
- 'null'
description: AI-generated summary of the call conversation
example: Customer inquired about order status
tag:
type:
- string
- 'null'
description: Tag/category assigned to the call
example: support
recording_url:
type:
- string
- 'null'
format: uri
description: URL to access the call recording
start_date:
type: string
format: date-time
description: When the call started (ISO 8601 format)
example: '2024-01-15T10:30:00'
transcript:
type:
- array
- 'null'
description: Transcript of the call conversation
items:
$ref: '#/components/schemas/TranscriptRow'
ErrorResponse:
type: object
properties:
code:
type: string
description: Error code identifying the type of error
details:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ErrorDetail'
description: Additional error details, or null if not applicable
TranscriptRow:
type: object
description: A single row in the call transcript
properties:
source:
type: string
enum:
- AGENT
- EXTERNAL
- USER
description: The source of this transcript entry (AGENT for AI assistant, EXTERNAL for the caller, USER for the Allo user)
text:
type: string
description: The transcribed text content
example: Hello, how can I help you today?
time:
type: string
format: date-time
description: When this transcript entry occurred (ISO 8601 format)
example: '2024-01-15T10:30:15'
start_seconds:
type:
- number
- 'null'
format: double
description: Start time of this segment in seconds from call start
example: 15
end_seconds:
type:
- number
- 'null'
format: double
description: End time of this segment in seconds from call start
example: 18.5
responses:
Forbidden:
description: Forbidden - API key lacks required scope
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: API_KEY_INSUFFICIENT_SCOPE
details:
- message: required=CONTACTS_READ
field: scope
TooManyRequests:
description: Too Many Requests - Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: API_KEY_QUOTA_EXCEEDED
details:
- message: limit=1000;type=DAILY;reset_in=3600
field: DAILY
Unauthorized:
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
code: API_KEY_INVALID
details: null
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