# Openphone
> ## Documentation Index
---
# Source: https://www.quo.com/docs/mdx/api-reference/authentication.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Authentication
> Learn how to gain API access.
## Prerequisites
Before you begin using the Quo API, ensure you have:
Need an account? Follow our [account creation
guide](https://support.openphone.com/hc/en-us/articles/1500009886621-How-to-create-an-OpenPhone-account).
Owner or admin privileges in your Quo workspace.
**US Messaging Registration Required:** To send text messages to US numbers
via the API, you must complete US Carrier Registration. Learn more
[here](https://support.openphone.com/hc/en-us/articles/15519949741463-Guide-to-US-carrier-registration-for-OpenPhone-customers).
## API key generation
The Quo API uses API keys for secure authentication. Follow these steps to get started:
Access your Quo account.
Navigate to the "API" tab under workspace settings. Remember, you need
workspace owner or admin privileges to access this tab.
Click "Generate API key" and provide a descriptive label. Each key provides
full API access.
Label your keys based on their intended use (e.g., "Production
Environment" or "Testing Integration")
Include your API key in the Authorization header of each request: ` Authorization: YOUR_API_KEY`
The Quo API does not use a Bearer token for authentication.
## Security guidelines
Your API key carries the same privileges as your Quo account. Treat it
with the same level of security as your password.
### Best practices
* Keep your API keys confidential
* Don’t share your API keys in publicly accessible areas such as GitHub or client-side code
* Regularly rotate your API keys to enhance security
* If a key is compromised, revoke it immediately and generate a new one
### Revoking access
If a key is compromised or no longer needed:
1. Navigate to the "API" tab in Workspace Settings
2. Locate the specific key
3. Click the ellipsis (three dots) icon and select 'delete' to immediately revoke access
4. Generate a new key if needed
Deleting an API key only affects the integrations using that specific key.
Other keys and integrations will continue to function normally.
---
# Source: https://www.quo.com/docs/mdx/guides/building-with-ai-llms.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Building with AI LLMs
> Learn how to use AI Language Models to build applications with the Quo API.
## Introduction
Building with Large Language Models (LLMs) can significantly accelerate your Quo API integration development. This guide will help you effectively use LLMs to create applications with our API.
While we provide examples using Claude, the principles and practices outlined here apply to any capable LLM platform.
## Getting started
### Documentation setup
Before beginning development with an LLM, gather and prepare the necessary documentation:
Get our [OpenAPI specification](https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json) for detailed endpoint information.
**Tip**: Right-click and select "Save Link As..." to download the file
Download and extract our [complete documentation package](https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-llm-ready-docs-prod.zip)
Provide these resources to your LLM to help it understand Quo API capabilities
## Development process
### Working with LLMs
Start by clearly describing your integration objectives to the LLM
Share relevant API documentation and specifications
Let the LLM help break complex features into manageable tasks
Generate and review code one step at a time
### Best practices
* Start with core functionality
* Iterate to add features
* Test each component thoroughly
* Move forward only after validation
* Never share API keys with LLMs
* Keep sensitive data out of prompts
* Validate all generated code
* Follow security best practices
* Follow Quo API rate limits
* Implement proper error handling
* Monitor API usage
* Optimize API calls
## Example interactions
Here's a practical example of how to instruct an LLM to help build with our API:
```text theme={null}
I want to build an application that:
1. Displays a list of all my phone numbers
2. Allows me to select a number to send a message with
3. Lets me input an external phone number to send a message to
4. Sends a message to the external phone number
Please help me implement this using the Quo API.
```
```text theme={null}
Help me create a system to:
1. Sync contacts from my CRM
2. Update contact details automatically
3. Track message history per contact
4. Generate contact activity reports
```
## Integration patterns
Automate message handling and responses
Sync and manage contact information
Process call summaries and recording data
Manage scheduling and reminders
## Implementation checklist
Thoroughly review all LLM-generated code
Test extensively in a development environment
Implement comprehensive error handling and logging
Deploy with appropriate monitoring systems
Continuously improve based on usage and feedback
Need more detailed guidance? Check out our comprehensive [API Reference](/api-reference/introduction) for detailed endpoint documentation and examples.
---
# Source: https://www.quo.com/docs/mdx/api-reference/changelog.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Changelog
> Stay up to date with the latest improvements to the API. View [main product Changelog.](https://support.quo.com/changelog)
### Minor Changes
* Adds a property `externalId` to the contact model. Adds `externalId` and `source` as optional parameters to the Create Contact (`POST /contacts`) request.
* Adds `externalId` and `source` as optional parameters to the Update Contact (`PATCH /contacts/:id`) request.
* Added a route to list contacts (`GET /contacts`).
### Patch Changes
* Fixed an issue where creating or updating a contact with an invalid custom field would result in 500 error. Sending an invalid custom field will now result in a 400 "Invalid Custom Field Item" error.
### Patch Changes
* Fixed an issue where paginated endpoints would return a string token for the next page at the end of paginated results. Now, they will correctly return the next page token as `null`.
* Added a callout that the `totalItems` result field for the paginated endpoints is not functioning as expected and is not returning the true total items count.
### Patch Changes
* Fixes an issue where phone numbers in various routes were expected to be in E164 format, but the format was not being validated correctly.
## 1.1.0
### Minor Changes
* Adds a property, `restrictions`, to the objects in the response from list phone numbers (`GET /phone-numbers`). The new property contains information about regional restrictions for outbound calling and messaging from a phone number.
### Patch Changes
* Fixed an issue with list calls (`GET /calls`) where sending an empty participants param resulted in a 500 response. Sending an empty participants param will now result in a descriptive 400 response.
* Fixes an issue where attempting to send a message to an international number would result in a 500 response if international messaging is not enabled in the workspace. With this fix, the 500 error response changed to a 403 with a descriptive message
* Fixes a bug where the GET call recordings endpoint sometimes returned an empty array.
* Fixes an issue that was preventing some call records from returning successfully from `GET /calls`
* Fixes an issue where getting a contact by id would result in a 500 instead of a 404 when contact is not found. Now this will respond in a 404 with a descriptive message.
* Fixes an issue where sending a message that contained only whitespace (`' '`, `'\n'`, etc.) resulted in a 500 error response. Now, this will respond with 400 and a validation error message instead.
### Patch Changes
* Fixes an issue with List Calls (`GET /calls`) where the user ID applied by default when the user ID parameter was not sent was being set to the workspace owner instead of the phone number owner.
## 1.0.0
### Major Changes
OpenPhone's Public API v1 release 🚀
Changes from the beta version include:
* The `since` query parameter on "list calls" and "list messages" has been deprecated. It used to incorrectly behave as a `createdBefore`. Please use `createdAfter` instead, or `createdBefore` to maintain current functionality.
* The `phoneNumberId` field for "send text message" has been deprecated. Please use `from` instead.
* `/v0` endpoints have been deprecated. Please use `/v1` instead.
---
# Source: https://www.quo.com/docs/mdx/pricing-support/contact-the-team.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Contact the team
> Stuck? Need Help?
Drop us a line at [support+developers@quo.com](mailto:support+developers@quo.com).
---
# Source: https://www.quo.com/docs/mdx/guides/contacts.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# External contacts
> Learn about working with contacts imported via the Quo API or native integrations.
## Understanding external contacts
External contacts are contacts that originate from outside the Quo app: either created through the Quo API or synced via native integrations (such as CRM or other connected platforms). These contacts allow you to centralize contact records from multiple sources within your Quo workspace.
### Key characteristics
External contacts are separate from contacts created directly in the Quo app, with their own specific behaviors depending on how they were created.
External contacts can come from two sources: the Quo API or native integrations and each has different editability rules within the Quo app.
### Editability by source
Contacts created via the Quo API can be updated directly within the Quo app. You can also continue managing them programmatically through API endpoints.
Contacts synced from native integrations remain read-only within Quo. Any changes must be made in the source system and synced back to Quo.
### Important behaviors and limitations
When you create a contact using the `POST /contacts` endpoint, it's essential to save the `id` returned in the response. This `id` will be required for all future API operations involving the contact.
After creating an API contact, it will only appear in the Quo app—whether in the conversation list, contact list, or search results—if there's an associated conversation with a matching phone number.
## Contact field structure
Quo organizes contact information using two distinct field types. Understanding these is crucial for effective contact management.
Every contact in Quo includes these predefined fields:
* First Name
* Last Name
* Role
* Company
* Emails
* Phone Numbers
These fields maintain consistent properties across all contacts and form the foundation of contact information.
Custom fields allow for flexible, user-defined contact properties. Supported data types include:
* Address
* Boolean
* Date
* Multi-select
* Number
* String
* URL
**Managing Custom Fields:** Custom field definitions can only be modified within the Quo app. The API does not currently support creating or editing custom field definitions.
## Creating and managing contacts via API
Follow these steps to effectively create and manage contacts through the API:
First, call the `GET /contact-custom-fields` endpoint to retrieve your workspace's custom contact field definitions.
Structure your contact data according to both default and custom fields:
```json theme={null}
{
"defaultFields": {
"firstName": "John",
"lastName": "Doe",
"phoneNumbers": [
{
"name": "primary",
"value": "+1234567890"
}
]
},
"customFields": {
// Include any custom field values here
}
}
```
Use the `POST /contacts` endpoint to create the contact and store the returned contact ID for future operations.
Update contacts either within the Quo app or programmatically using the `PATCH /contacts/:id` endpoint with the saved contact ID.
Always validate phone numbers are in E.164 format (+1234567890) before creating or updating contacts to ensure proper functionality.
---
# Source: https://www.quo.com/docs/mdx/api-reference/contacts/create-a-contact.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Create a contact
> Create a contact for a workspace.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json post /v1/contacts
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/contacts:
post:
tags:
- Contacts
summary: Create a contact
description: Create a contact for a workspace.
operationId: createContact_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
defaultFields:
type: object
properties:
company:
anyOf:
- description: The contact's company name.
examples:
- OpenPhone
type: string
- type: 'null'
emails:
type: array
items:
type: object
properties:
name:
description: The name for the contact's email address.
examples:
- company email
type: string
value:
anyOf:
- description: The contact's email address.
examples:
- abc@example.com
type: string
- type: 'null'
required:
- name
- value
firstName:
anyOf:
- description: The contact's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The contact's last name.
examples:
- Doe
type: string
- type: 'null'
phoneNumbers:
type: array
items:
type: object
properties:
name:
description: The name of the contact's phone number.
examples:
- company phone
type: string
value:
anyOf:
- description: The contact's phone number.
examples:
- '+12345678901'
type: string
- type: 'null'
required:
- name
- value
role:
anyOf:
- description: The contact's role.
examples:
- Sales
type: string
- type: 'null'
required:
- firstName
customFields:
type: array
items:
allOf:
- type: object
properties:
key:
description: The identifying key for contact custom field.
examples:
- inbound-lead
type: string
- anyOf:
- type: object
properties:
value:
anyOf:
- type: array
items:
type: string
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- type: string
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- type: boolean
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- type: number
- type: 'null'
required:
- value
createdByUserId:
description: The unique identifier of the user who created the contact.
examples:
- US123abc
pattern: ^US(.*)$
type: string
source:
description: >-
The contact's source. Defaults to `null` for contacts
created in the UI. Defaults to `public-api` for contacts
created via the public API. Cannot be one of the following
reserved words: `openphone`, `device`, `csv`, `zapier`,
`google-people`, `other` or start with one of the following
reserved prefixes: `openphone`, `csv`.
examples:
- public-api
- custom-hubspot
- google-calendar
default: public-api
minLength: 1
maxLength: 72
type: string
sourceUrl:
description: A link to the contact in the source system.
format: uri
examples:
- https://openphone.co/contacts/664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 200
type: string
externalId:
anyOf:
- description: >-
A unique identifier from an external system that can
optionally be supplied when creating a contact. This ID
is used to associate the contact with records in other
systems and is required for retrieving the contact later
via the "List Contacts" endpoint. Ensure the
`externalId` is unique and consistent across systems for
accurate cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- type: 'null'
required:
- defaultFields
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The unique identifier of the contact.
examples:
- 664d0db69fcac7cf2e6ec
type: string
externalId:
anyOf:
- description: >-
A unique identifier from an external system that
can optionally be supplied when creating a
contact. This ID is used to associate the contact
with records in other systems and is required for
retrieving the contact later via the "List
Contacts" endpoint. Ensure the `externalId` is
unique and consistent across systems for accurate
cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- type: 'null'
source:
anyOf:
- description: >-
Indicates how the contact was created or where it
originated from.
examples:
- public-api
minLength: 1
maxLength: 75
type: string
- type: 'null'
sourceUrl:
anyOf:
- description: A link to the contact in the source system.
format: uri
examples:
- >-
https://openphone.co/contacts/664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 200
type: string
- type: 'null'
defaultFields:
type: object
properties:
company:
anyOf:
- description: The contact's company name.
examples:
- OpenPhone
type: string
- type: 'null'
emails:
type: array
items:
type: object
properties:
name:
description: The name for the contact's email address.
examples:
- company email
type: string
value:
anyOf:
- description: The contact's email address.
examples:
- abc@example.com
type: string
- type: 'null'
id:
description: >-
The unique identifier for the contact email
field.
examples:
- acb123
type: string
required:
- name
- value
firstName:
anyOf:
- description: The contact's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The contact's last name.
examples:
- Doe
type: string
- type: 'null'
phoneNumbers:
type: array
items:
type: object
properties:
name:
description: The name of the contact's phone number.
examples:
- company phone
type: string
value:
anyOf:
- description: The contact's phone number.
examples:
- '+12345678901'
type: string
- type: 'null'
id:
description: >-
The unique identifier of the contact phone
number field.
examples:
- acb123
type: string
required:
- name
- value
role:
anyOf:
- description: The contact's role.
examples:
- Sales
type: string
- type: 'null'
required:
- company
- emails
- firstName
- lastName
- phoneNumbers
- role
customFields:
type: array
items:
allOf:
- type: object
properties:
name:
description: >-
The name of the custom contact field. This
name is set by users in the OpenPhone
interface when the custom field is created.
examples:
- Inbound Lead
type: string
key:
description: >-
The identifying key for contact custom
field.
examples:
- inbound-lead
type: string
id:
description: >-
The unique identifier for the contact custom
field.
examples:
- 66d0d87d534de8fd1c433cec3
type: string
required:
- name
- anyOf:
- type: object
properties:
type:
type: string
enum:
- multi-select
value:
anyOf:
- type: array
items:
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- address
- string
- url
value:
anyOf:
- type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- boolean
value:
anyOf:
- type: boolean
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- date
value:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- number
value:
anyOf:
- type: number
- type: 'null'
required:
- type
- value
createdAt:
description: Timestamp of contact creation in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: Timestamp of last contact update in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
createdByUserId:
description: >-
The unique identifier of the user who created the
contact.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- id
- externalId
- source
- sourceUrl
- defaultFields
- customFields
- createdAt
- updatedAt
- createdByUserId
required:
- data
'400':
description: Invalid Custom Field Item
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Custom Field Item
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Custom Field Item
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'409':
description: Conflict
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800409'
type: string
status:
const: 409
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Conflict
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/create-a-new-webhook-for-call-summaries.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Create a new webhook for call summaries
> Creates a new webhook that triggers on events from call summaries.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json post /v1/webhooks/call-summaries
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks/call-summaries:
post:
tags:
- Webhooks
summary: Create a new webhook for call summaries
description: Creates a new webhook that triggers on events from call summaries.
operationId: createCallSummaryWebhook_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
events:
minItems: 1
type: array
items:
type: string
enum:
- call.summary.completed
label:
description: Webhook's label
examples:
- my webhook label
type: string
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com
type: string
userId:
description: >-
The unique identifier of the user that creates the webhook.
If not provided, default to workspace owner.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- events
- url
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the webhook
belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
minItems: 1
type: array
items:
type: string
enum:
- call.summary.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
required:
- data
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/create-a-new-webhook-for-call-transcripts.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Create a new webhook for call transcripts
> Creates a new webhook that triggers on events from call transcripts.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json post /v1/webhooks/call-transcripts
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks/call-transcripts:
post:
tags:
- Webhooks
summary: Create a new webhook for call transcripts
description: Creates a new webhook that triggers on events from call transcripts.
operationId: createCallTranscriptWebhook_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
events:
minItems: 1
type: array
items:
type: string
enum:
- call.transcript.completed
label:
description: The webhook's label.
examples:
- my webhook label
type: string
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
status:
type: string
enum:
- enabled
- disabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com
type: string
userId:
description: >-
The ID of the user that creates the webhook. If not
provided, default to workspace owner.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- events
- url
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the webhook
belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
minItems: 1
type: array
items:
type: string
enum:
- call.transcript.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
required:
- data
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/create-a-new-webhook-for-calls.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Create a new webhook for calls
> Creates a new webhook that triggers on events from calls.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json post /v1/webhooks/calls
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks/calls:
post:
tags:
- Webhooks
summary: Create a new webhook for calls
description: Creates a new webhook that triggers on events from calls.
operationId: createCallWebhook_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com/
type: string
events:
type: array
items:
type: string
enum:
- call.completed
- call.ringing
- call.recording.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
userId:
description: >-
The unique identifier of the user that creates the webhook.
If not provided, default to workspace owner.
examples:
- US123abc
pattern: ^US(.*)$
type: string
label:
description: Webhook's label
examples:
- my webhook label
type: string
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
required:
- url
- events
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the webhook
belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
type: array
items:
type: string
enum:
- call.completed
- call.ringing
- call.recording.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
required:
- data
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/create-a-new-webhook-for-messages.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Create a new webhook for messages
> Creates a new webhook that triggers on events from messages.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json post /v1/webhooks/messages
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks/messages:
post:
tags:
- Webhooks
summary: Create a new webhook for messages
description: Creates a new webhook that triggers on events from messages.
operationId: createMessageWebhook_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
events:
type: array
items:
type: string
enum:
- message.received
- message.delivered
label:
description: Webhook's label
examples:
- my webhook label
type: string
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com
type: string
userId:
description: >-
The unique identifier of the user that creates the webhook.
If not provided, default to workspace owner.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- events
- url
responses:
'201':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the webhook
belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: The endpoint that receives events from the webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
type: array
items:
type: string
enum:
- message.received
- message.delivered
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
required:
- data
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/contacts/delete-a-contact.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Delete a contact
> Delete a contact by its unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json delete /v1/contacts/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/contacts/{id}:
delete:
tags:
- Contacts
summary: Delete a contact
description: Delete a contact by its unique identifier.
operationId: deleteContact_v1
parameters:
- in: path
name: id
required: true
schema:
description: The unique identifier of the contact.
examples:
- 66d0d87e8dc1211467372303
type: string
responses:
'204':
description: Success
'400':
description: Invalid Custom Field Item
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Custom Field Item
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Custom Field Item
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'409':
description: Conflict
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800409'
type: string
status:
const: 409
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Conflict
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/delete-a-webhook-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Delete a webhook by ID
> Delete a webhook by its unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json delete /v1/webhooks/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks/{id}:
delete:
tags:
- Webhooks
summary: Delete a webhook by ID
description: Delete a webhook by its unique identifier.
operationId: deleteWebhookById_v1
parameters:
- in: path
name: id
required: true
schema:
description: The unique identifier of a webhook
examples:
- WH12345
pattern: ^WH(.*)$
type: string
responses:
'204':
description: Success
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/error-codes.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# API response codes
> Quo uses standard HTTP response codes to indicate request status.
## Response code categories
* 2xx: Success
* 4xx: Client-side errors
* 5xx: Server-side errors
Some 4xx errors include specific error codes for programmatic handling.
## Common response codes
| Code | Status | Description |
| ----- | ----------------- | ------------------------------------------------------------- |
| `200` | OK | Request successful |
| `201` | Created | Resource successfully created |
| `202` | Accepted | Request accepted for processing |
| `204` | No Content | Request successful, no content returned |
| `400` | Bad Request | Invalid parameters |
| `401` | Unauthorized | Missing or invalid API key |
| `403` | Forbidden | Insufficient permissions or an account setting is not enabled |
| `404` | Not Found | Resource doesn't exist |
| `409` | Conflict | Conflict with another request |
| `429` | Too Many Requests | Rate limit exceeded |
| `500` | Server Error | Quo-side issue |
For 429 errors, implement exponential backoff in your requests.
---
# Source: https://www.quo.com/docs/mdx/api-reference/calls/get-a-call-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a call by ID
> Get a call by its unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/calls/{callId}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/calls/{callId}:
get:
tags:
- Calls
summary: Get a call by ID
description: Get a call by its unique identifier.
operationId: getCallById_v1
parameters:
- in: path
name: callId
required: true
schema:
description: Unique identifier of the call.
examples:
- AC3700e624eca547eb9f749a06f2eb1
pattern: ^AC(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
additionalProperties: false
type: object
properties:
answeredAt:
anyOf:
- description: >-
The timestamp when the call was answered in ISO
8601 format. Null if the call was not answered.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
answeredBy:
anyOf:
- description: >-
The unique identifier of the OpenPhone user who
answered the incoming call. Null for outgoing
calls or unanswered incoming calls.
examples:
- USlHhXmRMz
type: string
- type: 'null'
initiatedBy:
anyOf:
- description: >-
The unique identifier of the OpenPhone user who
initiated the outgoing call. Null for incoming
calls.
examples:
- USlHhXmRMz
type: string
- type: 'null'
direction:
type: string
enum:
- incoming
- outgoing
description: >-
The direction of the call relative to the OpenPhone
number.
examples:
- incoming
status:
type: string
enum:
- queued
- initiated
- ringing
- in-progress
- completed
- busy
- failed
- no-answer
- canceled
- missed
- answered
- forwarded
- abandoned
description: The current status of the call.
examples:
- completed
completedAt:
anyOf:
- description: >-
The timestamp when the call ended, in ISO 8601
format. Null if the call is ongoing or was not
completed.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
createdAt:
description: >-
The timestamp when the call record was created, in ISO
8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
callRoute:
anyOf:
- description: >-
How the call reached the user's inbox: either by
direct dial to their number or routed through a
phone menu. Null for outbound calls.
examples:
- phone-number
- phone-menu
type: string
- type: 'null'
duration:
description: The total duration of the call in seconds.
examples:
- 60
type: integer
forwardedFrom:
anyOf:
- anyOf:
- description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- pattern: ^US(.*)$
type: string
- type: 'null'
forwardedTo:
anyOf:
- anyOf:
- description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- pattern: ^US(.*)$
type: string
- type: 'null'
aiHandled:
anyOf:
- description: >-
Type of AI that answered the call. Set to
'ai-agent' for AI responses, or null for human
responses.
examples:
- ai-agent
type: string
- type: 'null'
id:
description: The unique identifier of the call.
examples:
- AC123abc
pattern: ^AC(.*)$
type: string
phoneNumberId:
description: >-
The unique identifier of the OpenPhone number
associated with the call.
examples:
- PN123abc
pattern: ^PN(.*)$
type: string
participants:
maxItems: 2
type: array
items:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
updatedAt:
anyOf:
- description: >-
The timestamp when the call record was last
updated, in ISO 8601 format. Null if never
updated.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
userId:
description: >-
The unique identifier of the OpenPhone user account
associated with the call.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- answeredAt
- answeredBy
- initiatedBy
- direction
- status
- completedAt
- createdAt
- callRoute
- duration
- forwardedFrom
- forwardedTo
- aiHandled
- id
- phoneNumberId
- participants
- updatedAt
- userId
required:
- data
'400':
description: Too Many Participants
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0101400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Too Many Participants
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Too Many Participants
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0100401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0101403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0100404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0101500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/contacts/get-a-contact-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a contact by ID
> Retrieve detailed information about a specific contact in your OpenPhone workspace using the contact's unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/contacts/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/contacts/{id}:
get:
tags:
- Contacts
summary: Get a contact by ID
description: >-
Retrieve detailed information about a specific contact in your OpenPhone
workspace using the contact's unique identifier.
operationId: getContactById_v1
parameters:
- in: path
name: id
required: true
schema:
description: The unique identifier of the contact.
examples:
- 66d0d87e8dc1211467372303
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The unique identifier of the contact.
examples:
- 664d0db69fcac7cf2e6ec
type: string
externalId:
anyOf:
- description: >-
A unique identifier from an external system that
can optionally be supplied when creating a
contact. This ID is used to associate the contact
with records in other systems and is required for
retrieving the contact later via the "List
Contacts" endpoint. Ensure the `externalId` is
unique and consistent across systems for accurate
cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- type: 'null'
source:
anyOf:
- description: >-
Indicates how the contact was created or where it
originated from.
examples:
- public-api
minLength: 1
maxLength: 75
type: string
- type: 'null'
sourceUrl:
anyOf:
- description: A link to the contact in the source system.
format: uri
examples:
- >-
https://openphone.co/contacts/664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 200
type: string
- type: 'null'
defaultFields:
type: object
properties:
company:
anyOf:
- description: The contact's company name.
examples:
- OpenPhone
type: string
- type: 'null'
emails:
type: array
items:
type: object
properties:
name:
description: The name for the contact's email address.
examples:
- company email
type: string
value:
anyOf:
- description: The contact's email address.
examples:
- abc@example.com
type: string
- type: 'null'
id:
description: >-
The unique identifier for the contact email
field.
examples:
- acb123
type: string
required:
- name
- value
firstName:
anyOf:
- description: The contact's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The contact's last name.
examples:
- Doe
type: string
- type: 'null'
phoneNumbers:
type: array
items:
type: object
properties:
name:
description: The name of the contact's phone number.
examples:
- company phone
type: string
value:
anyOf:
- description: The contact's phone number.
examples:
- '+12345678901'
type: string
- type: 'null'
id:
description: >-
The unique identifier of the contact phone
number field.
examples:
- acb123
type: string
required:
- name
- value
role:
anyOf:
- description: The contact's role.
examples:
- Sales
type: string
- type: 'null'
required:
- company
- emails
- firstName
- lastName
- phoneNumbers
- role
customFields:
type: array
items:
allOf:
- type: object
properties:
name:
description: >-
The name of the custom contact field. This
name is set by users in the OpenPhone
interface when the custom field is created.
examples:
- Inbound Lead
type: string
key:
description: >-
The identifying key for contact custom
field.
examples:
- inbound-lead
type: string
id:
description: >-
The unique identifier for the contact custom
field.
examples:
- 66d0d87d534de8fd1c433cec3
type: string
required:
- name
- anyOf:
- type: object
properties:
type:
type: string
enum:
- multi-select
value:
anyOf:
- type: array
items:
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- address
- string
- url
value:
anyOf:
- type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- boolean
value:
anyOf:
- type: boolean
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- date
value:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- number
value:
anyOf:
- type: number
- type: 'null'
required:
- type
- value
createdAt:
description: Timestamp of contact creation in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: Timestamp of last contact update in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
createdByUserId:
description: >-
The unique identifier of the user who created the
contact.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- id
- externalId
- source
- sourceUrl
- defaultFields
- customFields
- createdAt
- updatedAt
- createdByUserId
required:
- data
'400':
description: Invalid Custom Field Item
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Custom Field Item
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Custom Field Item
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'409':
description: Conflict
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800409'
type: string
status:
const: 409
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Conflict
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/messages/get-a-message-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a message by ID
> Get a message by its unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/messages/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/messages/{id}:
get:
tags:
- Messages
summary: Get a message by ID
description: Get a message by its unique identifier.
operationId: getMessageById_v1
parameters:
- in: path
name: id
required: true
schema:
description: The unique identifier of a message
examples:
- AC123abc
pattern: ^AC(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The unique identifier of the message.
examples:
- AC123abc
pattern: ^AC(.*)$
type: string
to:
type: array
items:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
from:
description: >-
A phone number in E.164 format, including the country
code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
text:
description: The content of the message.
examples:
- Hello, world!
type: string
phoneNumberId:
anyOf:
- description: >-
The unique identifier of the OpenPhone phone
number that the message was sent from.
examples:
- PN123abc
pattern: ^PN(.*)$
type: string
- type: 'null'
direction:
type: string
enum:
- incoming
- outgoing
description: >-
The direction of the message relative to the OpenPhone
number.
examples:
- incoming
userId:
description: >-
The unique identifier of the user who sent the
message. Null for incoming messages.
examples:
- US123abc
pattern: ^US(.*)$
type: string
status:
type: string
enum:
- queued
- sent
- delivered
- undelivered
description: The status of the message.
examples:
- sent
createdAt:
description: >-
The timestamp when the message was created at, in ISO
8601 format
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The timestamp when the message status was last
updated, in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
required:
- id
- to
- from
- text
- phoneNumberId
- direction
- userId
- status
- createdAt
- updatedAt
required:
- data
'400':
description: A2P Registration Not Approved
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0206400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: A2P Registration Not Approved
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: A2P Registration Not Approved
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'402':
description: Not Enough Credits
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200402'
type: string
status:
const: 402
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Enough Credits
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: >-
The organization does not have enough prepaid credits to
send the message
type: string
required:
- message
- code
- status
- docs
- title
- description
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0202403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0201500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/phone-numbers/get-a-phone-number-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a phone number by ID
> Get a phone number by its unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/phone-numbers/{phoneNumberId}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/phone-numbers/{phoneNumberId}:
get:
tags:
- Phone Numbers
summary: Get a phone number by ID
description: Get a phone number by its unique identifier.
operationId: getPhoneNumberById_v1
parameters:
- in: path
name: phoneNumberId
required: true
schema:
description: Unique identifier of the phone number.
examples:
- PNlja6rrtI
pattern: ^PN(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The unique identifier of OpenPhone phone number.
examples:
- PN123bc
pattern: ^PN(.*)$
type: string
groupId:
description: >-
The unique identifier of the group to which the
OpenPhone number belongs.
examples:
- '1234'
type: string
portRequestId:
anyOf:
- description: >-
Unique identifier for the phone number’s porting
request, if applicable.
examples:
- 123abc
type: string
- type: 'null'
formattedNumber:
anyOf:
- description: A human-readable representation of a phone number.
examples:
- '+15555555555'
type: string
- type: 'null'
forward:
anyOf:
- description: >-
Forwarding number for incoming calls, null if no
forwarding number is configured.
examples:
- '+15555555555'
type: string
- type: 'null'
name:
description: The display name of the phone number
examples:
- My phone number
type: string
number:
description: >-
A phone number in E.164 format, including the country
code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
portingStatus:
anyOf:
- description: >-
Current status of the porting process, if
applicable.
examples:
- completed
type: string
- type: 'null'
symbol:
anyOf:
- description: >-
Custom symbol or emoji associated with the phone
number.
examples:
- 🏡
type: string
- type: 'null'
users:
type: array
items:
type: object
allOf:
- type: object
properties:
email:
description: The user's email address.
examples:
- my@email.com
format: email
type: string
firstName:
anyOf:
- description: The user's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The user's last name.
examples:
- Doe
type: string
- type: 'null'
id:
pattern: ^US(.*)$
type: string
role:
type: string
enum:
- owner
- admin
- member
description: The user's role in the organization.
examples:
- owner
- admin
- member
required:
- email
- firstName
- lastName
- id
- role
- type: object
properties:
groupId:
description: >-
The unique identifier of the group to which
the user belongs.
examples:
- GRcei8k90o
pattern: ^GR(.*)$
type: string
required:
- groupId
createdAt:
description: >-
Timestamp of when the phone number was added to the
account in ISO 8601 format.
examples:
- ' ''2022-01-01T00:00:00Z'''
type: string
updatedAt:
description: >-
Timestamp of the last update to the phone number's
details in ISO 8601 format.
examples:
- ' ''2022-01-01T00:00:00Z'''
type: string
restrictions:
type: object
properties:
calling:
type: object
properties:
CA:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for
a specific region
examples:
- unrestricted
Intl:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for
a specific region
examples:
- unrestricted
US:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for
a specific region
examples:
- unrestricted
required:
- CA
- Intl
- US
messaging:
type: object
properties:
CA:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for
a specific region
examples:
- unrestricted
Intl:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for
a specific region
examples:
- unrestricted
US:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for
a specific region
examples:
- unrestricted
required:
- CA
- Intl
- US
required:
- calling
- messaging
required:
- id
- groupId
- portRequestId
- formattedNumber
- forward
- name
- number
- portingStatus
- symbol
- users
- createdAt
- updatedAt
- restrictions
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0401500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/calls/get-a-summary-for-a-call.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a summary for a call
> Retrieve a detailed summary of a specific call identified by its unique call ID. This endpoint supports summaries for both regular calls and calls handled by Sona. Call summaries are only available on business and scale plans.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/call-summaries/{callId}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/call-summaries/{callId}:
get:
tags:
- Calls
summary: Get a summary for a call
description: >-
Retrieve a detailed summary of a specific call identified by its unique
call ID. This endpoint supports summaries for both regular calls and
calls handled by Sona. Call summaries are only available on business and
scale plans.
operationId: getCallSummary_v1
parameters:
- in: path
name: callId
required: true
schema:
description: The unique identifier of the call associated with the summary.
examples:
- AC3700e624eca547eb9f749a06f
pattern: ^AC(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
callId:
description: >-
The unique identifier of the call to which this
summary belongs.
examples:
- ACea724hac8c30465bcbcff0b76e4c1c7b
type: string
nextSteps:
anyOf:
- type: array
items:
examples:
- Bring an umbrella.
type: string
- type: 'null'
status:
type: string
enum:
- absent
- in-progress
- completed
- failed
description: The status of the call summary.
examples:
- completed
summary:
anyOf:
- type: array
items:
examples:
- You talked about the weather.
type: string
- type: 'null'
jobs:
anyOf:
- type: array
items:
type: object
properties:
icon:
type: string
name:
type: string
result:
type: object
properties:
data:
type: array
items:
type: object
properties:
name:
type: string
value:
anyOf:
- type: string
- type: number
- type: boolean
required:
- name
- value
required:
- data
required:
- icon
- name
- result
- type: 'null'
required:
- callId
- nextSteps
- status
- summary
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0500400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0500401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0500403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0500404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0501500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/calls/get-a-transcription-for-a-call.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a transcription for a call
> Retrieve a detailed transcript of a specific call identified by its unique call ID. This endpoint supports transcripts for both regular calls and calls handled by Sona. Call transcripts are only available on business and scale plans.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/call-transcripts/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/call-transcripts/{id}:
get:
tags:
- Calls
summary: Get a transcription for a call
description: >-
Retrieve a detailed transcript of a specific call identified by its
unique call ID. This endpoint supports transcripts for both regular
calls and calls handled by Sona. Call transcripts are only available on
business and scale plans.
operationId: getCallTranscript_v1
parameters:
- in: path
name: id
required: true
schema:
description: Unique identifier of the call associated with this transcript.
examples:
- AC3700e624eca547eb9f749a06f2eb1
pattern: ^AC(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
callId:
description: >-
The unique identifier of the call to which this
transcript belongs.
examples:
- ACea724hac8c30465bcbcff0b76e4c1c7b
type: string
createdAt:
description: >-
The timestamp when the transcription was created, in
ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
dialogue:
anyOf:
- type: array
items:
type: object
properties:
content:
description: >-
The transcribed text of a specific dialogue
segment.
examples:
- Hello, world!
type: string
start:
description: >-
The start time of the dialogue segment in
seconds, relative to the beginning of the
call.
examples:
- 5.123456
type: number
end:
description: >-
The end time of the dialogue segment in
seconds, relative to the beginning of the
call.
examples:
- 10.123456
type: number
identifier:
anyOf:
- description: >-
The phone number of the participant who
spoke during this dialogue segment.
examples:
- '+19876543210'
type: string
- type: 'null'
userId:
anyOf:
- description: >-
The unique identifier of the OpenPhone
user who spoke during this dialogue
segment. Null for external participants
or if user identification is not
available.
examples:
- US123abc
pattern: ^US(.*)$
type: string
- type: 'null'
required:
- content
- start
- end
- identifier
- userId
- type: 'null'
duration:
description: The total duration of the transcribed call in seconds.
examples:
- 100
type: number
status:
type: string
enum:
- absent
- in-progress
- completed
- failed
description: The status of the call transcription.
examples:
- completed
required:
- callId
- createdAt
- dialogue
- duration
- status
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0600400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0600401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0600403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0600404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0601500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/users/get-a-user-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a user by ID
> Retrieve detailed information about a specific user in your OpenPhone workspace using the user's unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/users/{userId}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/users/{userId}:
get:
tags:
- Users
summary: Get a user by ID
description: >-
Retrieve detailed information about a specific user in your OpenPhone
workspace using the user's unique identifier.
operationId: getUserById_v1
parameters:
- in: path
name: userId
required: true
schema:
description: The unique identifier of the user being retrieved.
examples:
- US123abc
pattern: ^US(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
pattern: ^US(.*)$
type: string
email:
description: The user's email address.
examples:
- my@email.com
format: email
type: string
firstName:
anyOf:
- description: The user's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The user's last name.
examples:
- Doe
type: string
- type: 'null'
pictureUrl:
anyOf:
- description: The user's picture URL.
examples:
- https://example.com/picture.jpg
format: uri
type: string
- type: 'null'
role:
type: string
enum:
- owner
- admin
- member
description: The user's role in the organization.
examples:
- owner
- admin
- member
createdAt:
description: Timestamp of user creation in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: Timestamp of last user update in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
required:
- id
- email
- firstName
- lastName
- pictureUrl
- role
- createdAt
- updatedAt
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1101500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/calls/get-a-voicemail-for-a-call.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a voicemail for a call
> Retrieve a voicemail associated with a specific call. Returns null data fields while the voicemail is processing in our system. Returns competed data fields when the voicemail has finished processing.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/call-voicemails/{callId}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/call-voicemails/{callId}:
get:
tags:
- Calls
summary: Get a voicemail for a call
description: >-
Retrieve a voicemail associated with a specific call. Returns null data
fields while the voicemail is processing in our system. Returns competed
data fields when the voicemail has finished processing.
operationId: getCallVoicemails_v1
parameters:
- in: path
name: callId
required: true
schema:
description: >-
The unique identifier of the call for which a voicemail is being
retrieved.
examples:
- AC3700e624eca547eb9f749a06f
pattern: ^AC(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
additionalProperties: false
type: object
properties:
duration:
anyOf:
- description: >-
The length of the call voicemail in seconds. Null
if the voicemail is not completed or the duration
is unknown.
examples:
- 60
type: integer
- type: 'null'
id:
description: The unique identifier of the call voicemail.
examples:
- VMaaff8f317e0c4e61953b74a5eb42a370
pattern: ^VM(.*)$
type: string
transcript:
anyOf:
- description: >-
The transcript of the call voicemail. Null if the
voicemail is not completed or the transcript is
not available.
examples:
- Hello, this is a voicemail from John Doe.
type: string
- type: 'null'
recordingUrl:
anyOf:
- description: >-
The URL where the call voicemail can be accessed
or downloaded. Null if the voicemail is not
completed or the URL is not available.
examples:
- >-
https://examplestorage.com/a643d4d3e1484fcc8b721627284eda5e.mp3
format: uri
type: string
- type: 'null'
status:
type: string
enum:
- completed
- in-progress
description: The current status of the call voicemail.
examples:
- completed
- in-progress
required:
- duration
- id
- transcript
- recordingUrl
- status
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1200400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1200401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1200403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1200404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1201500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/get-a-webhook-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get a webhook by ID
> Get a webhook by its unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/webhooks/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks/{id}:
get:
tags:
- Webhooks
summary: Get a webhook by ID
description: Get a webhook by its unique identifier.
operationId: getWebhookById_v1
parameters:
- in: path
name: id
required: true
schema:
description: The unique identifier of a webhook
examples:
- WH12345
pattern: ^WH(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
anyOf:
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
type: array
items:
type: string
enum:
- message.received
- message.delivered
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
type: array
items:
type: string
enum:
- call.completed
- call.ringing
- call.recording.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
minItems: 1
type: array
items:
type: string
enum:
- call.summary.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created the
webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
minItems: 1
type: array
items:
type: string
enum:
- call.transcript.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
required:
- data
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/contact-custom-fields/get-contact-custom-fields.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get contact custom fields
> Custom contact fields enhance your OpenPhone contacts with additional information beyond standard details like name, company, role, emails and phone numbers. These user-defined fields let you capture business-specific data. While you can only create or modify these fields in OpenPhone itself, this endpoint retrieves your existing custom properties. Use this information to accurately map and include important custom data when creating new contacts via the API.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/contact-custom-fields
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/contact-custom-fields:
get:
tags:
- Contact Custom Fields
summary: Get contact custom fields
description: >-
Custom contact fields enhance your OpenPhone contacts with additional
information beyond standard details like name, company, role, emails and
phone numbers. These user-defined fields let you capture
business-specific data. While you can only create or modify these fields
in OpenPhone itself, this endpoint retrieves your existing custom
properties. Use this information to accurately map and include important
custom data when creating new contacts via the API.
operationId: getContactCustomFields_v1
parameters: []
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
name:
description: >-
The name of the custom contact field. This name is
set by users in the OpenPhone interface when the
custom field is created.
examples:
- Inbound Lead
type: string
key:
description: The identifying key for contact custom field.
examples:
- inbound-lead
type: string
type:
type: string
enum:
- address
- boolean
- date
- multi-select
- number
- string
- url
description: >-
The data type of the custom contact field,
determining what kind of information can be stored
and how it should be formatted.
examples:
- boolean
required:
- name
- key
- type
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0700400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0700401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0700403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0700404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0701500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/calls/get-recordings-for-a-call.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Get recordings for a call
> Retrieve a list of recordings associated with a specific call. The results are sorted chronologically, with the oldest recording segment appearing first in the list.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/call-recordings/{callId}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/call-recordings/{callId}:
get:
tags:
- Calls
summary: Get recordings for a call
description: >-
Retrieve a list of recordings associated with a specific call. The
results are sorted chronologically, with the oldest recording segment
appearing first in the list.
operationId: getCallRecordings_v1
parameters:
- in: path
name: callId
required: true
schema:
description: >-
The unique identifier of the call for which recordings are being
retrieved.
examples:
- AC3700e624eca547eb9f749a06f
pattern: ^AC(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
additionalProperties: false
type: object
properties:
duration:
anyOf:
- description: >-
The length of the call recording in seconds.
Null if the recording is not completed or the
duration is unknown.
examples:
- 60
type: integer
- type: 'null'
id:
description: The unique identifier of the call recording.
examples:
- CRwRVK2qBq
type: string
startTime:
anyOf:
- description: >-
The timestamp when the recording began, in ISO
8601 format. Null if the recording hasn't
started or the start time is unknown.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
status:
anyOf:
- type: string
enum:
- absent
- completed
- deleted
- failed
- in-progress
- paused
- processing
- stopped
- stopping
description: The current status of the call recording.
examples:
- completed
- type: 'null'
type:
anyOf:
- description: >-
The file type of the call recording. Null if the
type is not specified or is unknown.
examples:
- audio/mpeg
type: string
- type: 'null'
url:
anyOf:
- description: >-
The URL where the call recording can be accessed
or downloaded. Null if the URL is not available
or the recording is not accessible.
examples:
- >-
https://examplestorage.com/a643d4d3e1484fcc8b721627284eda5e.mp3
format: uri-reference
type: string
- type: 'null'
required:
- duration
- id
- startTime
- status
- type
- url
required:
- data
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0900400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0900401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0900403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0900404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0901500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/introduction.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Introduction
> Welcome to the Quo API!
## Overview
The Quo API enables developers to integrate powerful communication features directly into their applications and workflows. Built on REST principles, our API provides a reliable and secure way to programmatically manage phone communications.
## Key features
Industry-standard REST API design with JSON responses for easy integration
API key-based authentication to ensure secure access to your account
All API responses are returned in standardized JSON format
Comprehensive documentation and [resources](/mdx/guides) to accelerate development
## Next steps
Ready to dive deeper? Here are some helpful resources:
* [Authentication guide](/mdx/api-reference/authentication) - Learn about securing your API requests
* [Send your first message](/mdx/api-reference/send-your-first-message) - Quick start guide for messaging
* [Build with AI LLMs](/mdx/guides/building-with-ai-llms) - Learn how to utilize this API alongside AI
---
# Source: https://www.quo.com/docs/mdx/api-reference/calls/list-calls.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List calls
> Fetch a paginated list of calls associated with a specific OpenPhone number and another number.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/calls
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/calls:
get:
tags:
- Calls
summary: List calls
description: >-
Fetch a paginated list of calls associated with a specific OpenPhone
number and another number.
operationId: listCalls_v1
parameters:
- in: query
name: phoneNumberId
required: true
schema:
description: >-
The unique identifier of the OpenPhone number associated with the
call.
examples:
- PN123abc
pattern: ^PN(.*)$
type: string
- in: query
name: userId
required: false
schema:
description: >-
The unique identifier of the OpenPhone user who either placed or
received the call. Defaults to the workspace owner.
examples:
- US123abc
pattern: ^US(.*)$
type: string
- in: query
name: participants
required: true
schema:
maxItems: 1
description: >-
The phone numbers of participants involved in the call
conversation, excluding your OpenPhone number. Each number should
contain the country code and conform to the E.164 format.
Currently limited to one-to-one (1:1) conversations only.
examples:
- '+15555555555'
type: array
items:
minLength: 1
type: string
- in: query
name: since
required: false
schema:
deprecated: true
description: >-
DEPRECATED, use "createdAfter" or "createdBefore" instead. "since"
incorrectly behaves as "createdBefore" and will be removed in an
upcoming release.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: createdAfter
required: false
schema:
description: >-
Filter results to only include calls created after the specified
date and time, in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: createdBefore
required: false
schema:
description: >-
Filter results to only include calls created before the specified
date and time, in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: maxResults
required: true
schema:
description: Maximum number of results to return per page.
default: 10
maximum: 100
minimum: 1
type: integer
- in: query
name: pageToken
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
additionalProperties: false
type: object
properties:
answeredAt:
anyOf:
- description: >-
The timestamp when the call was answered in ISO
8601 format. Null if the call was not answered.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
answeredBy:
anyOf:
- description: >-
The unique identifier of the OpenPhone user who
answered the incoming call. Null for outgoing
calls or unanswered incoming calls.
examples:
- USlHhXmRMz
type: string
- type: 'null'
initiatedBy:
anyOf:
- description: >-
The unique identifier of the OpenPhone user who
initiated the outgoing call. Null for incoming
calls.
examples:
- USlHhXmRMz
type: string
- type: 'null'
direction:
type: string
enum:
- incoming
- outgoing
description: >-
The direction of the call relative to the OpenPhone
number.
examples:
- incoming
status:
type: string
enum:
- queued
- initiated
- ringing
- in-progress
- completed
- busy
- failed
- no-answer
- canceled
- missed
- answered
- forwarded
- abandoned
description: The current status of the call.
examples:
- completed
completedAt:
anyOf:
- description: >-
The timestamp when the call ended, in ISO 8601
format. Null if the call is ongoing or was not
completed.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
createdAt:
description: >-
The timestamp when the call record was created, in
ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
callRoute:
anyOf:
- description: >-
How the call reached the user's inbox: either by
direct dial to their number or routed through a
phone menu. Null for outbound calls.
examples:
- phone-number
- phone-menu
type: string
- type: 'null'
duration:
description: The total duration of the call in seconds.
examples:
- 60
type: integer
forwardedFrom:
anyOf:
- anyOf:
- description: >-
A phone number in E.164 format, including
the country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- pattern: ^US(.*)$
type: string
- type: 'null'
forwardedTo:
anyOf:
- anyOf:
- description: >-
A phone number in E.164 format, including
the country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- pattern: ^US(.*)$
type: string
- type: 'null'
aiHandled:
anyOf:
- description: >-
Type of AI that answered the call. Set to
'ai-agent' for AI responses, or null for human
responses.
examples:
- ai-agent
type: string
- type: 'null'
id:
description: The unique identifier of the call.
examples:
- AC123abc
pattern: ^AC(.*)$
type: string
phoneNumberId:
description: >-
The unique identifier of the OpenPhone number
associated with the call.
examples:
- PN123abc
pattern: ^PN(.*)$
type: string
participants:
maxItems: 2
type: array
items:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
updatedAt:
anyOf:
- description: >-
The timestamp when the call record was last
updated, in ISO 8601 format. Null if never
updated.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
userId:
description: >-
The unique identifier of the OpenPhone user account
associated with the call.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- answeredAt
- answeredBy
- initiatedBy
- direction
- status
- completedAt
- createdAt
- callRoute
- duration
- forwardedFrom
- forwardedTo
- aiHandled
- id
- phoneNumberId
- participants
- updatedAt
- userId
totalItems:
description: >-
Total number of items available. ⚠️ Note: `totalItems` is
not accurately returning the total number of items that
can be paginated. We are working on fixing this issue.
type: integer
nextPageToken:
anyOf:
- type: string
- type: 'null'
required:
- data
- totalItems
- nextPageToken
'400':
description: Too Many Participants
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0101400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Too Many Participants
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Too Many Participants
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0100401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0101403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0100404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0101500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/contacts/list-contacts.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List contacts
> Retrieve a paginated list of contacts. You can optionally filter the results by providing external IDs and sources. When no external IDs are provided, all contacts for the organization are returned.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/contacts
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/contacts:
get:
tags:
- Contacts
summary: List contacts
description: >-
Retrieve a paginated list of contacts. You can optionally filter the
results by providing external IDs and sources. When no external IDs are
provided, all contacts for the organization are returned.
operationId: listContacts_v1
parameters:
- in: query
name: externalIds
required: false
schema:
description: >-
Optional list of unique identifiers from an external system used
to retrieve specific contacts. When provided, the result set is
limited to contacts associated with the provided `externalIds`.
These IDs must match those supplied during contact creation via
the "Create Contacts" endpoint. When omitted, returns all contacts
for the organization. Use this parameter to cross-reference and
fetch contacts linked to external systems.
type: array
items:
description: >-
A unique identifier from an external system that can optionally
be supplied when creating a contact. This ID is used to
associate the contact with records in other systems and is
required for retrieving the contact later via the "List
Contacts" endpoint. Ensure the `externalId` is unique and
consistent across systems for accurate cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- in: query
name: sources
required: false
schema:
type: array
items:
description: >-
Indicates how the contact was created or where it originated
from.
examples:
- public-api
minLength: 1
maxLength: 75
type: string
- in: query
name: maxResults
required: true
schema:
description: Maximum number of results to return per page.
default: 10
maximum: 50
minimum: 1
type: integer
- in: query
name: pageToken
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: The unique identifier of the contact.
examples:
- 664d0db69fcac7cf2e6ec
type: string
externalId:
anyOf:
- description: >-
A unique identifier from an external system that
can optionally be supplied when creating a
contact. This ID is used to associate the
contact with records in other systems and is
required for retrieving the contact later via
the "List Contacts" endpoint. Ensure the
`externalId` is unique and consistent across
systems for accurate cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- type: 'null'
source:
anyOf:
- description: >-
Indicates how the contact was created or where
it originated from.
examples:
- public-api
minLength: 1
maxLength: 75
type: string
- type: 'null'
sourceUrl:
anyOf:
- description: A link to the contact in the source system.
format: uri
examples:
- >-
https://openphone.co/contacts/664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 200
type: string
- type: 'null'
defaultFields:
type: object
properties:
company:
anyOf:
- description: The contact's company name.
examples:
- OpenPhone
type: string
- type: 'null'
emails:
type: array
items:
type: object
properties:
name:
description: The name for the contact's email address.
examples:
- company email
type: string
value:
anyOf:
- description: The contact's email address.
examples:
- abc@example.com
type: string
- type: 'null'
id:
description: >-
The unique identifier for the contact
email field.
examples:
- acb123
type: string
required:
- name
- value
firstName:
anyOf:
- description: The contact's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The contact's last name.
examples:
- Doe
type: string
- type: 'null'
phoneNumbers:
type: array
items:
type: object
properties:
name:
description: The name of the contact's phone number.
examples:
- company phone
type: string
value:
anyOf:
- description: The contact's phone number.
examples:
- '+12345678901'
type: string
- type: 'null'
id:
description: >-
The unique identifier of the contact phone
number field.
examples:
- acb123
type: string
required:
- name
- value
role:
anyOf:
- description: The contact's role.
examples:
- Sales
type: string
- type: 'null'
required:
- company
- emails
- firstName
- lastName
- phoneNumbers
- role
customFields:
type: array
items:
allOf:
- type: object
properties:
name:
description: >-
The name of the custom contact field. This
name is set by users in the OpenPhone
interface when the custom field is
created.
examples:
- Inbound Lead
type: string
key:
description: >-
The identifying key for contact custom
field.
examples:
- inbound-lead
type: string
id:
description: >-
The unique identifier for the contact
custom field.
examples:
- 66d0d87d534de8fd1c433cec3
type: string
required:
- name
- anyOf:
- type: object
properties:
type:
type: string
enum:
- multi-select
value:
anyOf:
- type: array
items:
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- address
- string
- url
value:
anyOf:
- type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- boolean
value:
anyOf:
- type: boolean
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- date
value:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- number
value:
anyOf:
- type: number
- type: 'null'
required:
- type
- value
createdAt:
description: Timestamp of contact creation in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: Timestamp of last contact update in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
createdByUserId:
description: >-
The unique identifier of the user who created the
contact.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- id
- externalId
- source
- sourceUrl
- defaultFields
- customFields
- createdAt
- updatedAt
- createdByUserId
totalItems:
description: >-
Total number of items available. ⚠️ Note: `totalItems` is
not accurately returning the total number of items that
can be paginated. We are working on fixing this issue.
type: integer
nextPageToken:
anyOf:
- type: string
- type: 'null'
required:
- data
- totalItems
- nextPageToken
'400':
description: Invalid Custom Field Item
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Custom Field Item
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Custom Field Item
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'409':
description: Conflict
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800409'
type: string
status:
const: 409
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Conflict
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/conversations/list-conversations.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List Conversations
> Fetch a paginated list of conversations of OpenPhone conversations. Can be filtered by user and/or phone numbers. Defaults to all conversations in the OpenPhone organization. Results are returned in descending order based on the most recent conversation.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/conversations
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/conversations:
get:
tags:
- Conversations
summary: List Conversations
description: >-
Fetch a paginated list of conversations of OpenPhone conversations. Can
be filtered by user and/or phone numbers. Defaults to all conversations
in the OpenPhone organization. Results are returned in descending order
based on the most recent conversation.
operationId: listConversations_v1
parameters:
- in: query
name: phoneNumber
required: false
schema:
description: >-
DEPRECATED, use `phoneNumbers` instead. If both `phoneNumber` and
`phoneNumbers` are provided, `phoneNumbers` will be used. Filters
results to only include conversations with the specified OpenPhone
phone number. Can be either your OpenPhone phone number ID or the
full phone number in E.164 format.
examples:
- '+15555555555'
- PN123abc
deprecated: true
anyOf:
- description: A phone number in E.164 format, including the country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- pattern: ^PN(.*)$
type: string
- in: query
name: phoneNumbers
required: false
schema:
description: >-
Filters results to only include conversations with the specified
OpenPhone phone numbers. Each item can be either an OpenPhone
phone number ID or a full phone number in E.164 format.
examples:
- - '+15555555555'
- PN123abc
minItems: 1
maxItems: 100
type: array
items:
anyOf:
- description: A phone number in E.164 format, including the country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- pattern: ^PN(.*)$
type: string
- in: query
name: userId
required: false
schema:
description: >-
The unique identifier of the user the making the request. Used to
filter results to only include the user's conversations.
examples:
- US123abc
pattern: ^US(.*)$
type: string
- in: query
name: createdAfter
required: false
schema:
description: >-
Filter results to only include conversations created after the
specified date and time, in ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: createdBefore
required: false
schema:
description: >-
Filter results to only include conversations created before the
specified date and time, in ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: excludeInactive
required: false
schema:
description: Exclude inactive conversations from the results.
examples:
- true
type: boolean
- in: query
name: updatedAfter
required: false
schema:
description: >-
Filter results to only include conversations updated after the
specified date and time, in ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: updatedBefore
required: false
schema:
description: >-
Filter results to only include conversations updated before the
specified date and time, in ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: maxResults
required: true
schema:
description: Maximum number of results to return per page.
default: 10
maximum: 100
minimum: 1
type: integer
- in: query
name: pageToken
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
assignedTo:
anyOf:
- type: string
- type: 'null'
createdAt:
anyOf:
- format: date-time
type: string
- type: 'null'
deletedAt:
anyOf:
- format: date-time
type: string
- type: 'null'
id:
pattern: ^CN(.*)$
type: string
lastActivityAt:
anyOf:
- format: date-time
type: string
- type: 'null'
lastActivityId:
anyOf:
- pattern: ^AC(.*)$
type: string
- type: 'null'
mutedUntil:
anyOf:
- format: date-time
type: string
- type: 'null'
name:
anyOf:
- type: string
- type: 'null'
participants:
type: array
items:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
phoneNumberId:
pattern: ^PN(.*)$
type: string
snoozedUntil:
anyOf:
- format: date-time
type: string
- type: 'null'
updatedAt:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- assignedTo
- createdAt
- deletedAt
- id
- lastActivityAt
- lastActivityId
- mutedUntil
- name
- participants
- phoneNumberId
- snoozedUntil
- updatedAt
totalItems:
description: >-
Total number of items available. ⚠️ Note: `totalItems` is
not accurately returning the total number of items that
can be paginated. We are working on fixing this issue.
type: integer
nextPageToken:
anyOf:
- type: string
- type: 'null'
required:
- data
- totalItems
- nextPageToken
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1000400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1000401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1001403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1000404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1001500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/messages/list-messages.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List messages
> Retrieve a chronological list of messages exchanged between your OpenPhone number and specified participants, with support for filtering and pagination.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/messages
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/messages:
get:
tags:
- Messages
summary: List messages
description: >-
Retrieve a chronological list of messages exchanged between your
OpenPhone number and specified participants, with support for filtering
and pagination.
operationId: listMessages_v1
parameters:
- in: query
name: phoneNumberId
required: true
schema:
description: >-
The unique identifier of the OpenPhone number used to send or
receive the messages. PhoneNumberID can be retrieved via the Get
Phone Numbers endpoint.
examples:
- OP123abc
pattern: ^PN(.*)$
type: string
- in: query
name: userId
required: false
schema:
description: The unique identifier of the user the message was sent from.
examples:
- US123abc
pattern: ^US(.*)$
type: string
- in: query
name: participants
required: true
schema:
description: >-
Array of phone numbers involved in the conversation, excluding
your OpenPhone number, in E.164 format.
examples:
- '+15555555555'
type: array
items:
description: A phone number in E.164 format, including the country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
- in: query
name: since
required: false
schema:
deprecated: true
description: >-
DEPRECATED, use "createdAfter" or "createdBefore" instead. "since"
currently behaves as "createdBefore" and will be removed in an
upcoming release.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: createdAfter
required: false
schema:
description: >-
Filter results to only include messages created after the
specified date and time, in ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: createdBefore
required: false
schema:
description: >-
Filter results to only include messages created before the
specified date and time, in ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- in: query
name: maxResults
required: true
schema:
description: Maximum number of results to return per page.
default: 10
maximum: 100
minimum: 1
type: integer
- in: query
name: pageToken
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: The unique identifier of the message.
examples:
- AC123abc
pattern: ^AC(.*)$
type: string
to:
type: array
items:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
from:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
text:
description: The content of the message.
examples:
- Hello, world!
type: string
phoneNumberId:
anyOf:
- description: >-
The unique identifier of the OpenPhone phone
number that the message was sent from.
examples:
- PN123abc
pattern: ^PN(.*)$
type: string
- type: 'null'
direction:
type: string
enum:
- incoming
- outgoing
description: >-
The direction of the message relative to the
OpenPhone number.
examples:
- incoming
userId:
description: >-
The unique identifier of the user who sent the
message. Null for incoming messages.
examples:
- US123abc
pattern: ^US(.*)$
type: string
status:
type: string
enum:
- queued
- sent
- delivered
- undelivered
description: The status of the message.
examples:
- sent
createdAt:
description: >-
The timestamp when the message was created at, in
ISO 8601 format
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The timestamp when the message status was last
updated, in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
required:
- id
- to
- from
- text
- phoneNumberId
- direction
- userId
- status
- createdAt
- updatedAt
totalItems:
description: >-
Total number of items available. ⚠️ Note: `totalItems` is
not accurately returning the total number of items that
can be paginated. We are working on fixing this issue.
type: integer
nextPageToken:
anyOf:
- type: string
- type: 'null'
required:
- data
- totalItems
- nextPageToken
'400':
description: A2P Registration Not Approved
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0206400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: A2P Registration Not Approved
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: A2P Registration Not Approved
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'402':
description: Not Enough Credits
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200402'
type: string
status:
const: 402
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Enough Credits
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: >-
The organization does not have enough prepaid credits to
send the message
type: string
required:
- message
- code
- status
- docs
- title
- description
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0202403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0201500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/phone-numbers/list-phone-numbers.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List phone numbers
> Retrieve the list of phone numbers and users associated with your OpenPhone workspace.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/phone-numbers
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/phone-numbers:
get:
tags:
- Phone Numbers
summary: List phone numbers
description: >-
Retrieve the list of phone numbers and users associated with your
OpenPhone workspace.
operationId: listPhoneNumbers_v1
parameters:
- in: query
name: userId
required: false
schema:
description: >-
Filter results to return only phone numbers associated with the
specified user"s unique identifier.
examples:
- US123abc
pattern: ^US(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/ListPhoneNumbersResponse'
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0400404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0401500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
schemas:
ListPhoneNumbersResponse:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
description: The unique identifier of OpenPhone phone number.
examples:
- PN123bc
pattern: ^PN(.*)$
type: string
groupId:
description: >-
The unique identifier of the group to which the OpenPhone
number belongs.
examples:
- '1234'
type: string
portRequestId:
anyOf:
- description: >-
Unique identifier for the phone number’s porting request,
if applicable.
examples:
- 123abc
type: string
- type: 'null'
formattedNumber:
anyOf:
- description: A human-readable representation of a phone number.
examples:
- '+15555555555'
type: string
- type: 'null'
forward:
anyOf:
- description: >-
Forwarding number for incoming calls, null if no
forwarding number is configured.
examples:
- '+15555555555'
type: string
- type: 'null'
name:
description: The display name of the phone number
examples:
- My phone number
type: string
number:
description: A phone number in E.164 format, including the country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
portingStatus:
anyOf:
- description: Current status of the porting process, if applicable.
examples:
- completed
type: string
- type: 'null'
symbol:
anyOf:
- description: Custom symbol or emoji associated with the phone number.
examples:
- 🏡
type: string
- type: 'null'
users:
type: array
items:
type: object
allOf:
- type: object
properties:
email:
description: The user's email address.
examples:
- my@email.com
format: email
type: string
firstName:
anyOf:
- description: The user's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The user's last name.
examples:
- Doe
type: string
- type: 'null'
id:
pattern: ^US(.*)$
type: string
role:
type: string
enum:
- owner
- admin
- member
description: The user's role in the organization.
examples:
- owner
- admin
- member
required:
- email
- firstName
- lastName
- id
- role
- type: object
properties:
groupId:
description: >-
The unique identifier of the group to which the user
belongs.
examples:
- GRcei8k90o
pattern: ^GR(.*)$
type: string
required:
- groupId
createdAt:
description: >-
Timestamp of when the phone number was added to the account in
ISO 8601 format.
examples:
- ' ''2022-01-01T00:00:00Z'''
type: string
updatedAt:
description: >-
Timestamp of the last update to the phone number's details in
ISO 8601 format.
examples:
- ' ''2022-01-01T00:00:00Z'''
type: string
restrictions:
type: object
properties:
calling:
type: object
properties:
CA:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for a
specific region
examples:
- unrestricted
Intl:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for a
specific region
examples:
- unrestricted
US:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for a
specific region
examples:
- unrestricted
required:
- CA
- Intl
- US
messaging:
type: object
properties:
CA:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for a
specific region
examples:
- unrestricted
Intl:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for a
specific region
examples:
- unrestricted
US:
type: string
enum:
- restricted
- unrestricted
description: >-
The phone-number usage restriction status for a
specific region
examples:
- unrestricted
required:
- CA
- Intl
- US
required:
- calling
- messaging
required:
- id
- groupId
- portRequestId
- formattedNumber
- forward
- name
- number
- portingStatus
- symbol
- users
- createdAt
- updatedAt
- restrictions
required:
- data
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/users/list-users.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# List users
> Retrieve a paginated list of users in your OpenPhone workspace.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/users
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/users:
get:
tags:
- Users
summary: List users
description: Retrieve a paginated list of users in your OpenPhone workspace.
operationId: listUsers_v1
parameters:
- in: query
name: maxResults
required: true
schema:
description: Maximum number of results to return per page.
default: 10
maximum: 50
minimum: 1
type: integer
- in: query
name: pageToken
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
pattern: ^US(.*)$
type: string
email:
description: The user's email address.
examples:
- my@email.com
format: email
type: string
firstName:
anyOf:
- description: The user's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The user's last name.
examples:
- Doe
type: string
- type: 'null'
pictureUrl:
anyOf:
- description: The user's picture URL.
examples:
- https://example.com/picture.jpg
format: uri
type: string
- type: 'null'
role:
type: string
enum:
- owner
- admin
- member
description: The user's role in the organization.
examples:
- owner
- admin
- member
createdAt:
description: Timestamp of user creation in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: Timestamp of last user update in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
required:
- id
- email
- firstName
- lastName
- pictureUrl
- role
- createdAt
- updatedAt
totalItems:
description: >-
Total number of items available. ⚠️ Note: `totalItems` is
not accurately returning the total number of items that
can be paginated. We are working on fixing this issue.
type: integer
nextPageToken:
anyOf:
- type: string
- type: 'null'
required:
- data
- totalItems
- nextPageToken
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Bad Request
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1100404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '1101500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/webhooks/lists-all-webhooks.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Lists all webhooks
> List all webhooks for a user.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json get /v1/webhooks
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/webhooks:
get:
tags:
- Webhooks
summary: Lists all webhooks
description: List all webhooks for a user.
operationId: listWebhooks_v1
parameters:
- in: query
name: userId
required: false
schema:
description: The unique identifier the user. Defaults to the workspace owner.
examples: U55wgP5I5
pattern: ^US(.*)$
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
anyOf:
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created
the webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
type: array
items:
type: string
enum:
- message.received
- message.delivered
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created
the webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
type: array
items:
type: string
enum:
- call.completed
- call.ringing
- call.recording.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created
the webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
minItems: 1
type: array
items:
type: string
enum:
- call.summary.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
- type: object
properties:
id:
description: The webhook's ID
examples:
- WHabcd1234
pattern: ^WH(.*)$
type: string
userId:
description: >-
The unique identifier of the user that created
the webhook.
examples:
- US123abc
pattern: ^US(.*)$
type: string
orgId:
description: >-
The unique identifier of the organization the
webhook belongs to
examples:
- OR1223abc
pattern: ^OR(.*)$
type: string
label:
anyOf:
- description: The webhook's label.
examples:
- my webhook label
type: string
- type: 'null'
status:
type: string
enum:
- enabled
- disabled
default: enabled
description: The status of the webhook.
examples:
- enabled
url:
format: uri
description: >-
The endpoint that receives events from the
webhook.
examples:
- https://example.com/
type: string
key:
description: Webhook key
examples:
- example-key
type: string
createdAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The date the webhook was created at, in ISO_8601
format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
deletedAt:
anyOf:
- description: >-
The date the webhook was deleted at, in
ISO_8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
- type: 'null'
events:
minItems: 1
type: array
items:
type: string
enum:
- call.transcript.completed
resourceIds:
anyOf:
- type: array
items:
pattern: ^PN(.*)$
type: string
- type: array
items:
const: '*'
type: string
required:
- id
- userId
- orgId
- label
- status
- url
- key
- createdAt
- updatedAt
- deletedAt
- events
- resourceIds
required:
- data
'400':
description: Invalid Version
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0305400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Version
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Version
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Forbidden
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0300404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0301500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/pricing-support/minimizing-costs.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Tips for minimizing costs
> We’ve provided the below tips to help you minimize segment counts and save money.
Standard Latin alphabet characters, numbers, and basic punctuation use 160 characters per segment.
Some special characters (é, ñ, ß) reduce segment capacity to 70 characters.
Most emojis count as two characters. Extensive use can quickly increase segment count.
Each line break counts as a character.
Long URLs can span multiple segments. Shortened links save space.
Use widely understood abbreviations to reduce character count.
---
# Source: https://www.quo.com/docs/mdx/api-reference/partner-directory.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Partner directory
> Connect with experts to achieve your customer communications goals.
Thinking about building with the Quo API but don’t have the time or in-house expertise to get started? Our trusted Quo Experts are here to help.
Browse our [directory of partners](https://www.openphone.com/experts) who offer tailored services to help you make the most of your Quo setup. Whether it's integrating with other tools, optimizing your workflows, or getting onboarded smoothly, we've got you covered.
Not sure where to start? [Tell us about your project](https://www.openphone.com/experts/matchmaking), and we'll connect you with the right partner.
---
# Source: https://www.quo.com/docs/mdx/pricing-support/pricing-overview.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# API Pricing overview
> Welcome to Quo's simple and transparent API pricing structure.
## Our pricing philosophy
At Quo, we believe in transparent and fair pricing. Sometimes it can be hard to understand the true cost of something when it's buried in the fine print. We are committed to helping you clearly understand and manage your costs when using our platform.
## Core pricing model
Our pricing is based on message segments, making it easy to calculate costs:
\$0.01 per segment
\$0.01 + country-specific rate per segment
Rates vary by destination country
For detailed international rates by country, see our [International Pricing Guide](https://www.openphone.com/rates).
## Understanding message segments
A **segment** is the basic unit we use to calculate SMS billing. Every message you send is divided into one or more segments based on two factors:
1. **Message length** (character count)
2. **Character type** (standard or special characters)
## How character types affect segment size
### Standard GSM characters
Messages using only standard GSM-7 characters fit **up to 160 characters per segment**.
Standard characters include:
* Letters (A-Z, a-z)
* Numbers (0-9)
* Spaces
* Basic punctuation (. , ! ? - etc.)
### Special/Non-GSM characters
**If your message contains even one special character, the entire message is billed at the 70-character limit** — not just the portion with special characters. This often results in more segments and higher costs than you might expect.
Messages containing **any** special characters fit only **up to 70 characters per segment**.
Special characters include:
* Accented letters (é, ñ, ü)
* Curly/smart quotes (" " ' ')
* Emojis (😊, 🚀, ✨)
* Many international characters
## Tools and optimization
### Segment calculator
Use our [Segment Calculator](https://twiliodeved.github.io/message-segment-calculator/) tool to estimate costs before sending messages. This helps you optimize your message length and content to avoid unexpected charges.
### Smart encoding
The Quo API automatically enables **smart encoding** to minimize segment usage and reduce costs wherever possible. This feature works behind the scenes to choose the most efficient encoding for your messages.
## API message types
You're only charged for outgoing API-powered messages, which include:
Messages sent through direct API calls
Messages sent via applications built with our API
## How our billing works
We use a credit-based system for all API messaging charges:
Add funds to your account through the "Plans & Billing" tab
Credits are automatically deducted when messages are sent
Monitor your balance and enable auto-recharge to prevent service interruptions
## Important service notes
### Requirements & limitations
1. An active Quo subscription is required for API access.
2. MMS is not supported in the current API version.
3. Partial credits cannot be used for sending messages; the API will return an error.
If your credit balance is insufficient for a message's full cost, the API will return an error and the message won't be sent.
### Support & assistance
Need help understanding our pricing or managing your costs? Our team is here to help. Email us at [support+developers@quo.com](mailto:support+developers@quo.com) with any questions.
---
# Source: https://www.quo.com/docs/mdx/api-reference/rate-limits.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Rate limits
> Quo implements rate limiting to ensure API stability and fair usage.
Each API key may make up to **10 requests per second.**
Exceeding this limit may result in `429` status code errors.
Implement request throttling in your application to stay within rate limits and optimize API usage.
---
# Source: https://www.quo.com/docs/mdx/api-reference/messages/send-a-text-message.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Send a text message
> Send a text message from your OpenPhone number to a recipient.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json post /v1/messages
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/messages:
post:
tags:
- Messages
summary: Send a text message
description: Send a text message from your OpenPhone number to a recipient.
operationId: sendMessage_v1
parameters: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
content:
minLength: 1
maxLength: 1600
pattern: .*\S.*
description: The text content of the message to be sent.
type: string
phoneNumberId:
description: >-
DEPRECATED, use "from" instead. OpenPhone phone number ID to
send a message from
examples:
- OP1232abc
deprecated: true
pattern: ^PN(.*)$
type: string
from:
anyOf:
- pattern: ^PN(.*)$
type: string
- description: >-
A phone number in E.164 format, including the country
code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
to:
minItems: 1
maxItems: 1
type: array
items:
description: >-
A phone number in E.164 format, including the country
code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
userId:
description: >-
The unique identifier of the OpenPhone user sending the
message. If not provided, defaults to the phone number
owner.
examples:
- US123abc
pattern: ^US(.*)$
type: string
setInboxStatus:
type: string
enum:
- done
description: >-
Used to set the status of the related OpenPhone inbox
conversation. The default behavior without setting this
parameter will be for the message sent to show up as an open
conversation in the user's inbox. Setting the parameter to
`'done'` would move the conversation to the Done inbox view.
examples:
- done
required:
- content
- from
- to
responses:
'202':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The unique identifier of the message.
examples:
- AC123abc
pattern: ^AC(.*)$
type: string
to:
type: array
items:
description: >-
A phone number in E.164 format, including the
country code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
from:
description: >-
A phone number in E.164 format, including the country
code.
examples:
- '+15555555555'
pattern: ^\+[1-9]\d{1,14}$
type: string
text:
description: The content of the message.
examples:
- Hello, world!
type: string
phoneNumberId:
anyOf:
- description: >-
The unique identifier of the OpenPhone phone
number that the message was sent from.
examples:
- PN123abc
pattern: ^PN(.*)$
type: string
- type: 'null'
direction:
type: string
enum:
- incoming
- outgoing
description: >-
The direction of the message relative to the OpenPhone
number.
examples:
- incoming
userId:
description: >-
The unique identifier of the user who sent the
message. Null for incoming messages.
examples:
- US123abc
pattern: ^US(.*)$
type: string
status:
type: string
enum:
- queued
- sent
- delivered
- undelivered
description: The status of the message.
examples:
- sent
createdAt:
description: >-
The timestamp when the message was created at, in ISO
8601 format
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: >-
The timestamp when the message status was last
updated, in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
required:
- id
- to
- from
- text
- phoneNumberId
- direction
- userId
- status
- createdAt
- updatedAt
required:
- data
'400':
description: A2P Registration Not Approved
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0206400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: A2P Registration Not Approved
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: A2P Registration Not Approved
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'402':
description: Not Enough Credits
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200402'
type: string
status:
const: 402
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Enough Credits
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: >-
The organization does not have enough prepaid credits to
send the message
type: string
required:
- message
- code
- status
- docs
- title
- description
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0202403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0200404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0201500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/api-reference/send-your-first-message.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Send your first message
> This is a step-by-step guide for sending your first text message.
## Ping!
Let's get started sending text messages via the Quo API.
**Have you completed Carrier Registration?** If you plan to send text messages to US numbers via the API, you will also need to complete US Carrier Registration. Learn more [here](https://support.openphone.com/hc/en-us/articles/15519949741463-Guide-to-US-carrier-registration-for-OpenPhone-customers).
### 1. Get phone numbers (optional)
Make a call to the `GET Phone Numbers` endpoint to retrieve `userId` and `from` for the desired number (the phone number from which you'd like to send a text message). This step is optional if you already know the `userId` and `from` for the desired sending number.
```
curl --request GET \
--url https://api.openphone.com/v1/phone-numbers \
--header 'Authorization: YOUR_API_KEY'
```
### 2. Specify user ID (optional)
If you'd like to send the text message as a particular Quo member in your workspace, make sure to include this `userId` in your request body. If `userId` is not specified, the sender will default to the phone number owner.
### 3. Send your message
You are now ready to send your first text message! Once you send your text message, you will receive a 202 Success Message via the API. Nice!
```
curl --request POST \
--url https://api.openphone.com/v1/messages \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"content": "",
"from": "",
"to": [
"+15555555555"
],
"userId": ""
}'
```
Be sure to format phone numbers in E.164 format (+1234567890).
### Summary
You are now able to send a text message to anyone in US or Canada. By using the API, you are able to programmatically send texts to your customers.
---
# Source: https://www.quo.com/docs/mdx/guides/sync-contacts.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Sync your contacts
> Implement a one-way contact sync from Google Sheets to Quo using Javascript.
## Overview
This guide provides a foundation for implementing a one-way sync from Google Sheets to Quo using JavaScript. You may need to adjust some details based on your specific requirements and environment. Remember to thoroughly test the implementation to ensure data integrity.
## Development guide
##### 1.1 Quo API.
* Obtain your Quo API key from the Quo dashboard.
##### 1.2 Google Sheets API
* Enable the Google Sheets API in your Google Cloud Console.
* Create service account credentials and download the JSON key file.
##### 1.3 Google Sheets
* Create a Google Sheet in the following format:
| contactId | firstName | lastName | phone | email |
| --------- | --------- | -------- | -------------- | ------------------------------------------- |
| | Jane | Doe | (555) 555-5555 | [jane@example.com](mailto:jane@example.com) |
* Share your Google Sheet with the service account email address.
##### 2.1 Ensure you have Node.js installed on your system.
##### 2.2 Create a new Node.js project and initialize it
```bash theme={null}
mkdir quo-sync
cd quo-sync
npm init -y
```
##### 2.3 Install required packages
```bash theme={null}
npm install googleapis axios dotenv node-cron
```
##### 2.4 Create a .env file to store environment variables
```bash theme={null}
QUO_API_KEY=your_quo_api_key
GOOGLE_APPLICATION_CREDENTIALS=path/to/your/credentials.json
GOOGLE_SHEET_ID=your_google_sheet_id
```
##### 3.1 Create a new file named `sync.js` and add the setup functions
```js theme={null}
require("dotenv").config();
const { google } = require("googleapis");
const axios = require("axios");
const cron = require("node-cron");
const API_BASE_URL = "https://api.openphone.com/v1";
const quo = axios.create({
baseURL: API_BASE_URL,
headers: {
Authorization: process.env.QUO_API_KEY,
"Content-Type": "application/json",
},
});
const googleAuth = new google.auth.GoogleAuth({
keyFile: process.env.GOOGLE_APPLICATION_CREDENTIALS,
scopes: ["https://www.googleapis.com/auth/spreadsheets"],
});
```
##### 3.2 Add the Quo API helper functions
```js theme={null}
async function createQuoContact(contactData) {
const response = await quo.post("/contacts", contactData);
return response.data.data;
}
async function updateQuoContact(contactId, contactData) {
const response = await quo.patch(`/contacts/${contactId}`, contactData);
return response.data.data;
}
```
##### 3.3 Add the Google Sheets to Quo contacts mapping function
```js theme={null}
function mapFields(sheetRow) {
if (!sheetRow.firstName) {
console.warn("Missing required firstName in row: ", sheetRow);
return;
}
return {
defaultFields: {
firstName: sheetRow.firstName,
lastName: sheetRow.lastName,
phoneNumbers: sheetRow.phone
? [{ name: "primary", value: sheetRow.phone }]
: undefined,
emails: sheetRow.email
? [{ name: "primary", value: sheetRow.email }]
: undefined,
},
};
}
```
##### 3.4 Add the Google Sheets helper functions
```js theme={null}
async function getGoogleSheetsData() {
const sheets = google.sheets({ version: "v4", googleAuth });
const response = await sheets.spreadsheets.values.get({
spreadsheetId: process.env.GOOGLE_SHEET_ID,
range: "Sheet1!A1:Z", // First sheet and all initial columns
});
const rows = response.data.values;
const headers = rows[0]; // First row contains headers
return rows.slice(1).map((row) => { // Skip the first row and map the contact data
const contact = {};
headers.forEach((header, index) => {
contact[header] = row[index];
});
return contact;
});
}
async function updateSheetWithContactId(rowNumber, contactId) {
const sheets = google.sheets({ version: "v4", googleAuth });
await sheets.spreadsheets.values.update({
spreadsheetId: process.env.GOOGLE_SHEET_ID,
range: `Sheet1!A${rowNumber + 2}`, // +2 to account for 1-based index and header row
valueInputOption: "RAW",
resource: { values: [[contactId]] },
});
}
```
##### 3.4 Finally, tie it all together
```js theme={null}
async function syncContacts() {
const sheetContacts = await getGoogleSheetsData();
for (const [rowNumber, sheetRow] of sheetContacts.entries()) {
const mappedContact = mapFields(sheetRow);
if (sheetRow.contactId) {
await updateQuoContact(sheetRow.contactId, mappedContact);
} else {
const { id } = await createQuoContact(mappedContact);
await updateSheetWithContactId(rowNumber, id);
}
}
console.log("Sync completed successfully");
}
// Run sync every hour
cron.schedule("0 * * * *", syncContacts);
console.log("Sync process started. Running every hour.");
```
```bash theme={null}
node sync.js
```
This will start the sync process, which will run every hour.
## Considerations and Optimizations
* Implement deletion logic to remove contacts from Quo that are no longer present in the Google Sheet.
* Implement pagination for fetching Quo contacts if you have a large number of contacts.
* Implement more robust error handling and retry mechanisms.
* Implement logging for auditing and troubleshooting purposes.
* Consider using a database to store the state of the sync process and to track changes between syncs.
* Consider implementing rate-limiting and an incremental sync to reduce API calls and processing time.
* For production use, consider deploying this script to a cloud platform like Heroku or AWS Lambda for better reliability and scalability.
---
# Source: https://www.quo.com/docs/mdx/api-reference/tech-partner.md
# Technology partners
> Integrate Quo to give your app powerful communication and AI features.
**Interested in becoming a Quo technology partner?**\
Technology partners are builders who create integrations between Quo and other platforms. By integrating with Quo, you can deliver seamless communication workflows and enhanced functionality to your users.
Start by [**signing up**](https://my.quo.com/signup) for a Quo account for a free 7-day trial. When you're ready, submit the form below to request access to a free sandbox account for development and testing.
[Request demo account](https://openphone.typeform.com/to/Mdiga17a)
Questions? Email our Partnerships team at [partners@quo.com](mailto:partners@quo.com).
---
# Source: https://www.quo.com/docs/mdx/pricing-support/terms-of-service.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Terms of Service
> Developer API Terms of Service
Please read these Developer API Terms of Service (the “Agreement”) carefully before using the API and Service (each as defined below) offered by OpenPhone Technologies, Inc. (“OpenPhone”). By clicking on the “Accept” or “Submit” button, you or the entity or company that you represent (“You,” “Your,” “Yours” or “Developer”) are unconditionally consenting to be bound by and are becoming a party to this Agreement. Your use of any portion of the API or Service, as well as your submission of any registration form or similar document that references this Agreement shall also constitute assent to this Agreement. If you do not unconditionally agree to all of the terms of this Agreement, click the “Decline” button and you shall have no right to use the API or Service. If you are entering into this Agreement on behalf of an entity, then you represent and warrant that you are authorized to bind such entity to the terms of this Agreement. If the terms of this Agreement are considered an offer, acceptance is expressly limited to such terms.
WHEREAS, OpenPhone owns and operates a business phone, texting, and collaborative workspace system and application (the “Service”);
WHEREAS, Developer desires to acquire from OpenPhone, and OpenPhone desires to provide to Developer, the right and license to access and use certain technologies and develop integrations to the Services as more fully described herein;
NOW THEREFORE, the parties hereto, in consideration of the foregoing and other good and valuable consideration recognized by the parties, hereby agree as follows:
1. Definitions
The following terms shall have the following meanings for the purpose of this Agreement:
1.1 “Acceptable Use Policy” means OpenPhone’s acceptable use policy for Developers creating Integrations, available at [https://www.openphone.com/terms](https://www.openphone.com/terms), which may be updated by OpenPhone from time to time.
1.2 “API” means OpenPhone’s application programming interfaces and specifications thereto, as it is provided by OpenPhone to Developer, to enable Developer and End Users to interface with the Service.
1.3 “Documentation” means documentation and information regarding the API and Service that are delivered by OpenPhone to Developer in any form (including the documentation set forth at [https://www.openphone.com/docs](https://www.openphone.com/docs), including any updates to such documentation provided by OpenPhone from time to time.
1.4 “End User” means a user that accesses the API or the Service through the Integration for such user’s own benefit.
1.5 “End User Content” means any information, data, text, content or other materials that Developer or End Users upload, submit, transmit, display, post, store, or otherwise make available through the Service, including through the API or the Integration.
1.6 “Integration” means a software application or process that utilizes the API to make the Services compatible and/or interoperable with another software application or platform.
1.7 “OpenPhone Data” means any information, data, text or other content provided by or on behalf of OpenPhone to Developer about an individual End User.
1.8 “OpenPhone Terms of Service” means OpenPhone’s standard terms of service, available at [https://www.openphone.com/terms](https://www.openphone.com/terms), which may be updated by OpenPhone from time to time.
2\. API, Service and OpenPhone Data License; Restrictions
2.1 License. Subject to the terms and conditions of this Agreement, OpenPhone hereby grants Developer a non-exclusive, non-transferable, non-sublicensable, revocable, and limited right and license during the Term to access and use the Service, API and OpenPhone Data (a) to build one or more Integrations that connect to the Service, and (b) to permit End Users who have agreed to the OpenPhone Terms of Service to access the Service via such Integrations, in each case, in accordance with the Documentation, Acceptable Use Policy, and the OpenPhone Terms of Service. For the avoidance of doubt, Developer may not make any Integration or provide access to the Service to any End User or any other person or entity who has not agreed to the OpenPhone Terms of Service.
2.2 Registration; Monetization. Prior to accessing the API or developing an Integration, Developer shall complete OpenPhone’s standard registration process and provide all requested information, including, without limitation, (i) contact information for Developer, (ii) the purpose, features, and functionality of the Integration, and (iii) whether Developer intends to charge End Users for or otherwise monetize the Integration. Developer may not charge End Users for access to the Services via the Integration or otherwise monetize the Integration without OpenPhone’s prior written approval.
2.3 Responsibilities. Developer is solely responsible for the acts or omissions of Developer and each End User in connection with their use of the API and Service in connection with the Integration. Developer’s agreements with End Users must: (i) be no less protective of OpenPhone’s rights and ownership than this Agreement and the OpenPhone Terms of Service; (ii) not grant greater use or access rights to the Service or API than those rights, licenses and permissions described in OpenPhone Terms of Service; (iii) include substantially and materially similar restrictions to those set forth in Section 2.5 with respect to the Service and API to the extent applicable; and (iv) require, as a condition of accessing the Services via the Integration, that End Users have agreed to the OpenPhone Terms of Service. Developer shall prohibit unauthorized access to or use of the API and to promptly notify OpenPhone of any such unauthorized access or use. Developer accepts and assumes all responsibility for complying with all applicable laws and regulations in connection with all of Developer’s and End Users’ activities involving the API, the Service, End User Content and OpenPhone Data.
2.4 Updates and Modifications. Developer understands and agrees that the specifications for the API and the Service shall be defined by OpenPhone in its sole discretion, and Developer is responsible for its development and other costs associated with Developer’s use of the API or Integration. OpenPhone reserves the right to modify, change, update and/or enhance the API and/or the Service (each a “Modification”) at any time in OpenPhone’s sole and exclusive discretion. Developer acknowledges and agrees that such Modifications may affect Developer’s and End Users’ ability to access the Service and may require Developer to make changes to the Integration. OpenPhone shall not be liable for any costs incurred by Developer arising out of or in connection with any Modification.
2.5 License Restrictions.
2.5.1 Except as expressly permitted hereunder, Developer shall not, and shall require that End Users do not (i) use any method to access or use the Service other than as permitted through the API, (ii) provide the API or access to the Service to any third parties other than End Users, (iii) permit or enable third parties to copy or obtain the API or access to the Service in any manner not expressly authorized in this Agreement, (iv) use the API or Service, in any manner that violates applicable laws, (v) license, sell, re-sell, rent, lease, transfer, assign, reproduce, distribute, or alter the API, Service or any portion of the API or Service, or permit or enable any third parties to do so; (vi) use the Service, the API, or any documentation or other materials received from OpenPhone in connection with this Agreement, to develop a product or service that competes with the Service; (vii) modify, translate, adapt, merge, make derivative works of, disassemble, decompile, reverse compile or reverse engineer, or otherwise attempt to discover the source code or underlying algorithms of any part of the Service or API except to the extent the foregoing restrictions are expressly prohibited by applicable law; (viii) remove or destroy any copyright notices or other proprietary markings contained on or in the Service or API; (ix) access or use the API or Service in any manner that could disable, overburden, damage, disrupt or impair the API or Service or interfere with any other party’s access to or use of the API or Service or use any device, software or routine that causes the same; (x) attempt to gain unauthorized access to, interfere with, damage or disrupt the API or Service, accounts registered to other users, or the computer systems or networks connected to the API or Service; (xi) circumvent, remove, alter, deactivate, degrade or thwart any technological measure or content protections of the API or Service; (xii) use any robot, spider, crawlers, scraper, or other automatic device, process, software or queries that intercepts, “mines,” scrapes, extracts, or otherwise accesses the API or Service to monitor, extract, copy or collect information or data from or through the API or Service; or (xiii) introduce any viruses, trojan horses, worms, logic bombs or other materials that are malicious or technologically harmful into OpenPhone’s systems.
2.6 Public Announcement. The timing and content of any advertisements, announcements, press releases or other promotional activity relating to this Agreement, and the use of one party’s name or trademarks by the other party shall be subject to the prior approval of both parties. Notwithstanding the foregoing, OpenPhone may reference Developer as a Developer in advertisements, press releases, or other marketing or promotional activities regarding OpenPhone’s products or services.
3\. Ownership; Licenses; Third-Party Materials
3.1 OpenPhone Ownership. As between OpenPhone and Developer, OpenPhone retains all rights, title and interest in and to all intellectual property rights embodied in or pertaining to the API, Service, OpenPhone Data, and OpenPhone Marks (as defined in Section 3.3), and all improvements, modifications, enhancements, and derivative works of any of the foregoing. There are no implied licenses under this Agreement, and any rights not expressly granted to Developer hereunder are reserved by OpenPhone or its licensors. Developer shall not take any action inconsistent with OpenPhone’s ownership of the API, Service, OpenPhone Data, or OpenPhone Marks.
3.2 Integration; End User Content. As between OpenPhone and Developer, to the extent permitted by applicable law, Developer retains ownership of the Integration, subject to the license granted to OpenPhone in the following sentence. Developer grants OpenPhone a perpetual, non-exclusive, sublicensable (through multiple tiers of sublicensees) royalty-free, fully paid right and license to use, copy, host, store, transfer, display, perform, reproduce, modify for the purpose of formatting for display, and distribute the Integration and End User Content, in whole or in part, in any and all media or distribution methods (now known or later developed) for the purposes of operating and providing the Service to Developer and End Users, and any for any other lawful business purpose, including to improve the usability, functionality, and accuracy of the Service.
3.3 Trademark License. Developer will prominently include the words \[“Powered by OpenPhone”] wherever it makes the Service available to End Users (including in the end-user facing interface of the Integration) and in all marketing and promotional materials that reference the functionality provided by the Service or Integration. OpenPhone hereby grants Developer a limited, non-exclusive, non-transferable, non-sublicensable, royalty-free license to use OpenPhone’s trademarks, service marks, and logos (collectively “OpenPhone Marks”) during the Term on Developer’s websites or promotional materials solely to (i) attribute OpenPhone as the provider of the Service and (ii) otherwise advertise and promote the availability of access to the Service in the Integration. Developer agrees to use the OpenPhone Marks only in a form identified by OpenPhone in writing for use hereunder and such quality standards as may be reasonably established by OpenPhone and communicated to Developer from time to time in writing. Developer shall obtain OpenPhone’s prior written approval of any material change in the style and manner in which any of the OpenPhone Marks are proposed to be used. Developer shall not use the OpenPhone Marks in a manner that disparages OpenPhone or its products or services, portrays OpenPhone in a false, competitively adverse or poor light, or dilutes the OpenPhone Marks. Except as expressly provided for in this Section 3.3, OpenPhone reserves all right, title, and interest in and to the OpenPhone Marks. All goodwill arising from Developer’s use of the OpenPhone Marks shall inure to the benefit of OpenPhone. Developer hereby grants OpenPhone a limited, non-exclusive, non-transferable, non-sublicensable, royalty-free license to use Developer’s trademarks, service marks, and logos (collectively “Developer Marks”) on OpenPhone’s websites or promotional materials solely to advertise and promote the availability of access to the Service in the Integration and in accordance with Section 2.6. OpenPhone shall obtain Developer’s prior written approval of any material change in the style and manner in which any of the Developer Marks are proposed to be used. Developer shall not use the Developer Marks in a manner that disparages Developer or its products or services, portrays Developer in a false, competitively adverse or poor light, or dilutes the Developer Marks. Developer reserves all right, title, and interest in and to the Developer Marks. All goodwill arising from OpenPhone’s use of the Developer Marks shall inure to the benefit of Developer.
3.4 Feedback. Developer agrees that submission of any ideas, suggestions, documents, proposals or other feedback provided to OpenPhone (“Feedback”) is at Developer’s own risk and that OpenPhone has no obligations (including obligations of confidentiality) with respect to such Feedback. Developer represents and warrants that it has all rights necessary to submit the Feedback. Developer hereby grants to OpenPhone a fully paid, royalty-free, perpetual, irrevocable, worldwide, non-exclusive, transferrable, and fully sublicensable right and license to use, reproduce, perform, display, distribute, adapt, modify, re-format, create derivative works of, and otherwise exploit in any manner, any and all Feedback without restriction of compensation.
3.5 Content and Data.
3.5.1 End User Content. Developer represents and warrants that (i) before any End User may engage with the Integration or Service, Developer shall ensure that it provides all notices and obtains all consents required under applicable law to enable OpenPhone to process End User Content in accordance with OpenPhone’s privacy policy (currently available at [https://www.openphone.com/privacy](https://www.openphone.com/privacy)); (ii) it has sufficient rights, consents, and permissions to grant the licenses to OpenPhone set forth in Section 3.2 and to input the End User Content into the Service and (iii) the End User Content does not infringe, misappropriate, or otherwise violate any third party’s intellectual property rights, privacy rights, rights of publicity, moral rights, or other proprietary rights. Developer shall not (i) make representations or other statements with respect to End User Content that are contrary to or otherwise inconsistent with OpenPhone’s privacy policy or (ii) interfere with any independent efforts by OpenPhone to provide End User notice or obtain End User consent.
3.5.2 OpenPhone Data. OpenPhone Data shall only be used for the purpose of making the Service available to End Users in accordance with the OpenPhone Terms of Service and Developer shall delete all OpenPhone Data in accordance with the Documentation. Developer shall be responsible for obtaining consent directly from End Users for any other use of the End User’s information or data. To the extent that End User submits any information or data directly to Developer, Developer shall be solely responsible for ensuring that Developer’s use of that data is in compliance with any applicable laws and Developer’s own stated privacy policy.
3.5.3 DMCA. OpenPhone complies with the Digital Millennium Copyright Act (the “DMCA”) with regard to End User Content and all other content uploaded, submitted, transmitted, displayed, posted, stored, or otherwise made available on the Service that allegedly violates a third party’s copyright. OpenPhone reserves the right to delete or disable any content alleged to be infringing, and to terminate access to the Services for repeat alleged infringers. OpenPhone’s complete Copyright Dispute Policy is available at \[insert link].
3.6 Third Party Services. Developer acknowledges and agrees that: (i) the Service may incorporate certain information, data, and materials from third party providers (collectively, “Third Party Services”), including without limitation through integrations or connectors to such Third Party Services that are provided by OpenPhone; (ii) Third Party Services may only be used in conjunction with the Service; and (iii) Developer’s use of the Third Party Services hereunder shall be subject to (and Developer agrees it is bound by) the third party terms and conditions referenced at Third Party Terms [https://www.openphone.com/terms](https://www.openphone.com/terms) (the “Third Party Terms Site”), as they may be modified from time to time by OpenPhone and/or its third party licensors or suppliers at any time in accordance with this Section 3.6 (collectively, the “Third Party Terms”), and which are incorporated into this Agreement by reference. In the event that OpenPhone makes any update to the Third Party Terms, OpenPhone shall use reasonable efforts to notify Developer of such update (email to suffice) at least 2 weeks in advance, which notice shall describe the applicable update, as well as the effective date of such update (which shall be at least 2 weeks after the date of such notice). Provided that OpenPhone has followed the foregoing procedure, any use by Developer of the Service following the effective date of an update to the Third Party Terms shall constitute acceptance of such update. OpenPhone does not make any representations or warranties with respect to Third Party Services or any third party providers. OpenPhone cannot and does not guarantee that the Service shall incorporate (or continue to incorporate) any particular Third Party Services.
4\. Term and Termination
4.1 Term. This Agreement shall commence upon Developer’s first use of the API and/or Service and shall continue until terminated in accordance herewith.
4.2 Termination. OpenPhone may terminate this Agreement at any time for any reason or no reason at all upon ten (10) days’ written notice. Developer may terminate this Agreement at any time for any reason or no reason at all upon thirty (30) days’ written notice. Either party may terminate this Agreement immediately upon written notice to the other party (a) if the other party breaches any warranty, representation, covenant or obligation under this Agreement (or, in the case of Developer, the OpenPhone Terms of Service) and, if such breach is curable, fails to cure such breach within ten (10) days after receiving written notice of the breach from the non-breaching party; or (b) if the other party is subject to a dissolution, receivership, liquidation, insolvency, conservatorship, consolidation, reorganization, sale of substantially all of its assets, cessation of business, voluntary or involuntary bankruptcy. OpenPhone immediately may suspend Developer’s or any End User’s access to the API or Service or terminate this Agreement (i) if Developer monetizes the Integration without OpenPhone’s prior approval, (ii) if required to do so by law, or (iii) if OpenPhone determines such action is necessary to prevent a security risk or other creditable risk of harm or liability to OpenPhone, the Service, the API, or any third parties.
4.3 Effect of Termination; Survival\*\*.\*\* The provisions of Sections 1, 2.5, 3, 4.3, 5, 6.2, 7, 8 and 9 shall survive any expiration or termination of this Agreement. All other rights and obligations of the parties shall cease upon expiration or termination of this Agreement, and Developer shall cease use of the API, Service and OpenPhone Data as of the effective date of termination.
5\. Confidential Information
5.1 Confidential Information. Each party and their respective affiliates, directors, officers, employees, authorized representatives, agents and advisors (including attorneys, accountants, consultants, bankers and financial advisors) shall keep confidential all proprietary information concerning the other party’s business procedures, present and future products, services, operations, marketing materials, fees, technology, policies or plans of the other party that is received or obtained during the negotiation or performance of the Agreement, whether such information is oral or written, and whether or not labeled as confidential by such party (collectively “Confidential Information”).
5.2 Use of Confidential Information. For as long as Confidential Information of the disclosing party is in possession of the receiving party, the receiving party shall take reasonable steps, at least substantially equivalent to the steps it takes to protect its own proprietary information, to prevent the use, duplication or disclosure of Confidential Information other than in accordance with this Agreement. Each party may disclose Confidential Information of the other party to its employees or agents who are directly involved in negotiating or performing this Agreement and who are apprised of their obligations under this Section and directed by the receiving party to treat such information confidentially, or as required by law or by a supervising regulatory agency of a receiving party. Neither party shall disclose, share, rent, sell or transfer to any third party any Confidential Information of the other party except as expressly permitted by this Agreement. The receiving party shall use Confidential Information of the other party only as necessary to perform this Agreement.
5.3 Exceptions. Notwithstanding anything to the contrary, the obligations of the receiving party set forth in this Section 5 shall not apply to any information of the disclosing party that: (a) is or becomes a part of the public domain through no wrongful act of the receiving party; (b) was in the receiving party’s possession free of any obligation of confidentiality at the time of the disclosing party’s communication thereof to the receiving party; (c) is developed by the receiving party completely independent from the Confidential Information of the disclosing party; or (d) is required by law or regulation to be disclosed, but only to the extent and for the purpose of such required disclosure after providing the disclosing party with advance written notice if reasonably possible such that the disclosing party is afforded an opportunity to contest the disclosure or seek an appropriate protective order.
5.4 Remedies. Upon the request of the disclosing party following the termination of this Agreement, the other party shall promptly return all Confidential Information of the disclosing party in its possession, and shall promptly destroy such materials containing such information (and any copies, extracts, and summaries thereof) and shall further provide the other party with written confirmation of such return or destruction upon written request. In the event a party discovers that Confidential Information of the other party has been used in an unauthorized manner or disclosed in violation of this Section 5, the party discovering the unauthorized use or disclosure shall promptly notify the other party of such event. In addition, the non-disclosing party shall be entitled to all other remedies available at law or equity, including injunctive relief.
6\. Limited Representations and Warranties
6.1 General. Each party represents and warrants that (i) it is a duly incorporated or organized entity in its state of incorporation or organization and that it has the full power and authority to enter into and perform its obligations under this Agreement; (ii) the execution and performance by it of its obligations under this Agreement do not constitute a breach of or conflict with any other agreement or arrangement by which it is bound; (iii) this Agreement is a legal, valid and binding obligation of the party executing this Agreement; (iv) no consent or approval of any other party is required in connection with the execution, delivery, performance, or enforceability of this Agreement; and (v) it shall comply with all applicable laws, rules, and regulations in connection with performance of such party’s obligations under this Agreement.
6.2 Warranty Disclaimer. EXCEPT FOR THE REPRESENTATIONS AND WARRANTIES EXPRESSLY SET FORTH IN THIS SECTION 6, THE API, SERVICE, AND OPENPHONE DATA ARE EACH PROVIDED “AS IS” AND OPENPHONE AND ITS LICENSORS EXPRESSLY DISCLAIM ALL WARRANTIES AND CONDITIONS, EXPRESS, IMPLIED OR STATUTORY, INCLUDING THE IMPLIED WARRANTIES FOR TITLE, NON-INFRINGEMENT, MERCHANTABILITY, QUIET ENJOYMENT, FITNESS FOR A PARTICULAR PURPOSE, AND ANY WARRANTIES ARISING OUT OF COURSE OF DEALING OR TRADE USAGE. OPENPHONE DOES NOT REPRESENT OR WARRANT THAT (I) THE API, OR THE SERVICE SHALL MEET DEVELOPER’S REQUIREMENTS (SUCH AS THE QUALITY, EFFECTIVENESS, REPUTATION AND OTHER CHARACTERISTICS OF THE API AND SERVICE); (II) DEVELOPER’S OR ITS USERS’ USE OF THE API AND SERVICE SHALL BE UNINTERRUPTED, TIMELY, SECURE OR ERROR-FREE; OR (III) THE ADVICE, RESULTS, OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED FROM USE OF THE SERVICE OR API SHALL BE ACCURATE OR RELIABLE. DEVELOPER ACKNOWLEDGES THAT THE SERVICE MAY INCLUDE THIRD PARTY SERVICES AND THAT OPENPHONE IS NOT LIABLE, AND DEVELOPER AGREES NOT TO SEEK TO HOLD OPENPHONE LIABLE, FOR ANY THIRD PARTY SERVICES, AND THAT THE RISK OF INJURY FROM SUCH THIRD PARTY SERVICES RESTS ENTIRELY WITH DEVELOPER.
7\. Indemnification
Developer agrees to indemnify, defend and hold harmless OpenPhone, and parents, subsidiaries, affiliates, officers, employees, agents, partners, suppliers, and licensors, from and against any and all third-party losses, costs, liabilities, and claims (including reasonable attorneys’ fees) relating to or arising out of (a) Developer’s use or misuse of the API, Service, OpenPhone Data or intentional misconduct; (b) Developer’s violation of this Agreement; (c) Developer’s violation of any applicable law, rule or regulation; and (d) Developer’s violation of any other party’s right, including without limitation any right of privacy or intellectual property rights. Developer may not enter into any settlement or compromise of any such claim without prior written consent of OpenPhone. OpenPhone reserves the right, at its own cost, to assume the exclusive defense and control of any matter otherwise subject to indemnification by Developer, in which event Developer shall fully cooperate with OpenPhone in asserting any available defenses.
8\. Limitation of Liability
TO THE FULLEST EXTENT PROVIDED BY LAW, IN NO EVENT SHALL OPENPHONE BE LIABLE FOR ANY LOSS OF PROFITS, REVENUE OR DATA, INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES, OR DAMAGES OR COSTS DUE TO BUSINESS INTERRUPTION, IN EACH CASE WHETHER OR NOT OPENPHONE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, ARISING OUT OF OR IN CONNECTION WITH THIS AGREEMENT, THE SERVICE, THE API, OPENPHONE DATA OR ANY COMMUNICATIONS, INTERACTIONS OR MEETINGS WITH OTHER USERS OF THE SERVICE OR THIRD PARTIES, ON ANY THEORY OF LIABILITY, INCLUDING TO THE EXTENT RESULTING FROM: (I) THE USE OR INABILITY TO USE THE SERVICE OR API; (II) ANY OTHER MATTER RELATED TO THE SERVICE OR API OR OPENPHONE DATA, WHETHER BASED ON WARRANTY, COPYRIGHT, CONTRACT, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY OR ANY OTHER LEGAL THEORY, OR (III) FOR ANY AMOUNT EXCEEDING THE GREATER OF (X) THE AMOUNT OF FEES PAID TO OPENPHONE DURING THE TWELVE MONTHS IMMEDIATELY PRECEDING THE CLAIM OR (Y) \$100 (ONE HUNDRED DOLLARS). NOTWITHSTANDING THE FOREGOING, THE LIMITATIONS SET FORTH IN THIS SECTION 8 SHALL NOT LIMIT A PARTY’S LIABILITY UNDER SECTION 5 (CONFIDENTIALITY) OR SECTION 7 (INDEMNIFICATION). OPENPHONE ASSUMES NO RESPONSIBILITY FOR THE TIMELINESS, DELETION, MIS-DELIVERY OR FAILURE TO STORE ANY END USER CONTENT.
9\. Miscellaneous
9.1 Assignment. Developer may not assign this Agreement without the prior written consent of OpenPhone. Subject to the foregoing limitation, this Agreement is binding upon and inures to the benefit of the successors and assigns of the respective parties hereto.
9.2 Independent Contractors. The relationship of the parties hereto is that of independent contractors. The parties hereto are not deemed to be agents, partners or joint ventures of the others for any purpose as a result of this Agreement or the transactions contemplated thereby. Nothing herein shall be deemed or construed as granting to either party or any right or authority to assume or to create any obligation or responsibility, express or implied, for, on behalf of, or in the name of the other party. All financial and other obligations associated with each party’s business are the sole responsibility of such party.
9.3 Third Party Beneficiaries. This Agreement is not intended and shall not be construed to create any rights or benefits upon any person not a party to this Agreement.
9.4 Force Majeure. Neither party shall be liable to the other in any way whatsoever for any failure or delay in performance of any of the obligations under this Agreement (other than obligations to make payment), arising out of any event or circumstance beyond the reasonable control of such party (including war, rebellion, civil commotion, terror, strikes, lock-outs or industrial disputes; fire, explosion, earthquake, acts of God, flood, drought or bad weather; acts of terror; epidemics, pandemics, or quarantine restrictions; or order by any government department, council or other constituted body).
9.5 Costs and Expenses. Unless specifically provided for elsewhere in this Agreement, each party shall bear its own costs and expenses, including legal fees, accounting fees and taxes incurred in connection with the negotiation and performance of this Agreement.
9.6 Compliance with Law. Developer shall at all times comply with all applicable international, federal, state and local laws and shall not engage in any illegal or unethical practices. Without limiting any of the foregoing, Developer agrees that it shall not permit the use of the Service or API or OpenPhone Data, export, or re-export the Service or API or OpenPhone Data, (a) into, or to or for the benefit of a national or resident of, any country to which the United States has embargoed goods, or (b) to anyone on the United States Treasury Department’s list of Specially Designated Nationals or the U.S. Commerce Department’s Table of Denial Orders, or license or otherwise permit use of the Service or API or OpenPhone Data for any activities involving nuclear materials or weapons, missile or rocket technologies, proliferation of chemical or biological weapons, or any other purpose prohibited by applicable law or in any jurisdiction where the Service is prohibited.
9.7 Notices. Except as otherwise provided, all notices under this Agreement shall be delivered by email, or physical mail to the other party at the address or number set forth in this Agreement. Notices to OpenPhone sent by physical mail shall also be sent via email to [support+developers@openphone.com](mailto:support+developers@openphone.com). Notices shall be deemed to have been given (i) at the time of delivery when delivered by email, (ii) at the time of delivery when delivered personally, or (iii) three (3) business days after having been sent by physical mail.
9.8 Entire Agreement; Modification. This Agreement, including any exhibits or other documents attached hereto or referenced herein, each of which is hereby incorporated into this Agreement and made an integral part hereof, constitutes the entire agreement between the parties relating to the subject matter hereof and there are no representations, warranties or commitments except as set forth herein. This Agreement supersedes all prior understandings, negotiations and discussions, written or oral, of the parties relating to the transactions contemplated by this Agreement. This Agreement may not be changed orally but only by an agreement in writing, signed by the party against whom enforcement of any waiver, change, modification, or discharge is sought.
9.9 Headings; Construction. The headings to the clauses, sub-clause and parts of this Agreement are inserted for convenience of reference only and are not intended to be part of or to affect the meaning or interpretation of this Agreement. The terms “this Agreement,” “hereof,” “hereunder” and any similar expressions refer to this Agreement and not to any particular Section or other portion of this Agreement. As used in this Agreement, the words “include” and “including,” and variations thereof, shall be deemed to be followed by the words “without limitation” and the word “discretion” means sole discretion.
9.10 Governing Law. This Agreement shall be governed by and construed in accordance with the laws of the State of California without giving effect to any conflict of law principles. The Federal and State courts located in San Francisco County, California shall be the exclusive venue for any disputes under this Agreement, and the parties hereby consent to the personal jurisdiction of those courts for such purposes.
9.11 Provisions Severable. If any provision of this Agreement shall be or become wholly or partially invalid, illegal or unenforceable, such provision shall be enforced to the extent that it is legal and valid and the validity, legality and enforceability of the remaining provisions shall in no way be affected or impaired. This Agreement shall be binding upon and inure to the benefit of the parties hereto and their respective successors, legal representatives and permitted assigns.
9.12 Waivers; Cumulative Remedies. No failure or delay by a party to insist upon the strict performance of any term or condition under this Agreement or to exercise any right or remedy available under this Agreement at law or in equity, shall imply or otherwise constitute a waiver of such right or remedy, and no single or partial exercise of any right or remedy by any party shall preclude exercise of any other right or remedy. All rights and remedies provided in this Agreement are cumulative and not alternative; and are in addition to all other available remedies at law or in equity.
9.13 Counterparts. This Agreement may be executed in two or more counterparts, each of which together shall be deemed an original, but all of which shall constitute one and the same instrument.
---
# Source: https://www.quo.com/docs/mdx/api-reference/contacts/update-a-contact-by-id.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Update a contact by ID
> Modify an existing contact in your OpenPhone workspace using the contact's unique identifier.
## OpenAPI
````yaml https://openphone-public-api-prod.s3.us-west-2.amazonaws.com/public/openphone-public-api-v1-prod.json patch /v1/contacts/{id}
openapi: 3.1.0
info:
title: OpenPhone Public API
version: 1.0.0
description: API for connecting with OpenPhone.
contact:
name: OpenPhone Support
email: support@openphone.com
url: https://support.openphone.com/hc/en-us
termsOfService: https://www.openphone.com/terms
servers:
- description: Production server
url: https://api.openphone.com
security:
- apiKey: []
tags:
- description: Operations related to calls
name: Calls
- description: >-
Operations related to call summaries, including AI-generated summaries and
Sona voice assistant summaries
name: Call Summaries
- description: >-
Operations related to call transcripts, including AI-generated transcripts
and Sona voice assistant transcripts
name: Call Transcripts
- description: Operations related to contacts
name: Contacts
- description: Operations related to conversations
name: Conversations
- description: Operations related to text messages
name: Messages
- description: Operations related to phone numbers
name: Phone Numbers
- description: Operations related to users
name: Users
- description: Operations related to webhooks
name: Webhooks
paths:
/v1/contacts/{id}:
patch:
tags:
- Contacts
summary: Update a contact by ID
description: >-
Modify an existing contact in your OpenPhone workspace using the
contact's unique identifier.
operationId: updateContactById_v1
parameters:
- in: path
name: id
required: true
schema:
description: The unique identifier of the contact.
examples:
- 66d0d87e8dc1211467372303
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
externalId:
anyOf:
- description: >-
A unique identifier from an external system that can
optionally be supplied when creating a contact. This ID
is used to associate the contact with records in other
systems and is required for retrieving the contact later
via the "List Contacts" endpoint. Ensure the
`externalId` is unique and consistent across systems for
accurate cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- type: 'null'
source:
anyOf:
- description: >-
Indicates how the contact was created or where it
originated from.
examples:
- public-api
minLength: 1
maxLength: 75
type: string
- type: 'null'
sourceUrl:
anyOf:
- description: A link to the contact in the source system.
format: uri
examples:
- https://openphone.co/contacts/664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 200
type: string
- type: 'null'
defaultFields:
type: object
properties:
company:
anyOf:
- description: The contact's company name.
examples:
- OpenPhone
type: string
- type: 'null'
emails:
type: array
items:
type: object
properties:
name:
description: The name for the contact's email address.
examples:
- company email
type: string
value:
anyOf:
- description: >-
The contact's email address. If set to null
during a patch operation, it will remove the
email item from the contact.
examples:
- info@openphone.com
type: string
- type: 'null'
id:
description: The unique identifier for the contact email field.
examples:
- acb123
type: string
required:
- name
- value
firstName:
anyOf:
- description: The contact's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The contact's last name.
examples:
- Doe
type: string
- type: 'null'
phoneNumbers:
type: array
items:
type: object
properties:
name:
description: The name of the contact's phone number.
examples:
- company phone
type: string
value:
anyOf:
- description: >-
The contact's phone number. If set to null
during a patch operation, it will remove the
phone number item from the contact.
examples:
- '+15555555555'
type: string
- type: 'null'
id:
description: >-
The unique identifier of the contact phone number
field.
examples:
- acb123
type: string
required:
- name
- value
role:
anyOf:
- description: The contact's role.
examples:
- Sales
type: string
- type: 'null'
customFields:
type: array
items:
allOf:
- type: object
properties:
key:
description: The identifying key for contact custom field.
examples:
- inbound-lead
type: string
id:
description: >-
The unique identifier for the contact custom
field.
examples:
- 66d0d87d534de8fd1c433cec3
type: string
- anyOf:
- type: object
properties:
value:
anyOf:
- type: array
items:
type: string
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- type: string
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- type: boolean
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- value
- type: object
properties:
value:
anyOf:
- type: number
- type: 'null'
required:
- value
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
id:
description: The unique identifier of the contact.
examples:
- 664d0db69fcac7cf2e6ec
type: string
externalId:
anyOf:
- description: >-
A unique identifier from an external system that
can optionally be supplied when creating a
contact. This ID is used to associate the contact
with records in other systems and is required for
retrieving the contact later via the "List
Contacts" endpoint. Ensure the `externalId` is
unique and consistent across systems for accurate
cross-referencing.
examples:
- 664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 75
type: string
- type: 'null'
source:
anyOf:
- description: >-
Indicates how the contact was created or where it
originated from.
examples:
- public-api
minLength: 1
maxLength: 75
type: string
- type: 'null'
sourceUrl:
anyOf:
- description: A link to the contact in the source system.
format: uri
examples:
- >-
https://openphone.co/contacts/664d0db69fcac7cf2e6ec
minLength: 1
maxLength: 200
type: string
- type: 'null'
defaultFields:
type: object
properties:
company:
anyOf:
- description: The contact's company name.
examples:
- OpenPhone
type: string
- type: 'null'
emails:
type: array
items:
type: object
properties:
name:
description: The name for the contact's email address.
examples:
- company email
type: string
value:
anyOf:
- description: The contact's email address.
examples:
- abc@example.com
type: string
- type: 'null'
id:
description: >-
The unique identifier for the contact email
field.
examples:
- acb123
type: string
required:
- name
- value
firstName:
anyOf:
- description: The contact's first name.
examples:
- John
type: string
- type: 'null'
lastName:
anyOf:
- description: The contact's last name.
examples:
- Doe
type: string
- type: 'null'
phoneNumbers:
type: array
items:
type: object
properties:
name:
description: The name of the contact's phone number.
examples:
- company phone
type: string
value:
anyOf:
- description: The contact's phone number.
examples:
- '+12345678901'
type: string
- type: 'null'
id:
description: >-
The unique identifier of the contact phone
number field.
examples:
- acb123
type: string
required:
- name
- value
role:
anyOf:
- description: The contact's role.
examples:
- Sales
type: string
- type: 'null'
required:
- company
- emails
- firstName
- lastName
- phoneNumbers
- role
customFields:
type: array
items:
allOf:
- type: object
properties:
name:
description: >-
The name of the custom contact field. This
name is set by users in the OpenPhone
interface when the custom field is created.
examples:
- Inbound Lead
type: string
key:
description: >-
The identifying key for contact custom
field.
examples:
- inbound-lead
type: string
required:
- name
- anyOf:
- type: object
properties:
type:
type: string
enum:
- multi-select
value:
anyOf:
- type: array
items:
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- address
- string
- url
value:
anyOf:
- type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- boolean
value:
anyOf:
- type: boolean
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- date
value:
anyOf:
- format: date-time
type: string
- type: 'null'
required:
- type
- value
- type: object
properties:
type:
type: string
enum:
- number
value:
anyOf:
- type: number
- type: 'null'
required:
- type
- value
createdAt:
description: Timestamp of contact creation in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
updatedAt:
description: Timestamp of last contact update in ISO 8601 format.
examples:
- '2022-01-01T00:00:00Z'
format: date-time
type: string
createdByUserId:
description: >-
The unique identifier of the user who created the
contact.
examples:
- US123abc
pattern: ^US(.*)$
type: string
required:
- id
- externalId
- source
- sourceUrl
- defaultFields
- customFields
- createdAt
- updatedAt
- createdByUserId
required:
- data
'400':
description: Invalid Custom Field Item
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801400'
type: string
status:
const: 400
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Invalid Custom Field Item
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Invalid Custom Field Item
type: string
required:
- message
- code
- status
- docs
- title
- description
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800401'
type: string
status:
const: 401
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unauthorized
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'403':
description: Not Phone Number User
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801403'
type: string
status:
const: 403
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Phone Number User
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
description:
const: Not Phone Number User
type: string
required:
- message
- code
- status
- docs
- title
- description
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800404'
type: string
status:
const: 404
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Not Found
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'409':
description: Conflict
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0800409'
type: string
status:
const: 409
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Conflict
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
'500':
description: Unknown Error
content:
application/json:
schema:
type: object
properties:
message:
type: string
code:
const: '0801500'
type: string
status:
const: 500
type: number
docs:
const: https://openphone.com/docs
type: string
title:
const: Unknown
type: string
trace:
type: string
errors:
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
value: {}
schema:
type: object
properties:
type:
type: string
required:
- type
required:
- path
- message
- schema
required:
- message
- code
- status
- docs
- title
security:
- apiKey: []
components:
securitySchemes:
apiKey:
in: header
name: Authorization
type: apiKey
````
---
# Source: https://www.quo.com/docs/mdx/guides/webhooks.md
> ## Documentation Index
> Fetch the complete documentation index at: https://www.quo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.
# Webhooks
> A reference for API-generated webhook payloads.
## Overview
Quo API webhooks allow developers to receive real-time notifications for various events, such as calls, messages, and transcripts. By integrating webhooks into your workflows, you can automate processes, enhance user experiences, and seamlessly connect Quo with other systems.
**Important note:** Webhooks created in the Quo app are not compatible with those created via the API. You cannot access or modify app webhooks through the API, or API webhooks in the app.
## Webhooks payload sample data models
Each webhook event provides a structured payload with specific data. We've provided sample payloads below for the most common webhook events.
### Calls
These webhooks are triggered in response in response to call-related events: `call.ringing`, `call.completed`, and `call.recording.completed`. The following is an example of the payload for a `call.ringing` event.
```json theme={null}
{
"id": "EV0ea54cadfbf342e6ac4ca1f22ed1700c",
"object": "event",
"apiVersion": "v4",
"createdAt": "2022-06-24T19:35:46.825Z",
"type": "call.ringing",
"data": {
"object": {
"id": "ACsXlF0",
"object": "call",
"answeredAt": "2022-01-01T00:00:00Z",
"answeredBy": "USlHhXmRMz",
"initiatedBy": "USlHhXmRMz",
"direction": "outgoing",
"status": "ringing",
"completedAt": "2022-01-01T00:10:00Z",
"createdAt": "2022-01-01T00:00:00Z",
"duration": 60,
"forwardedFrom": "UShYmRNzlm",
"forwardedTo": "UShXmRMzln",
"phoneNumberId": "PN1ZmRMzlx",
"participants": [
"+15555555555"
],
"updatedAt": "2022-01-01T00:00:00Z",
"userId": "USlHhXmRMz",
"contactIds": [
"6824dfb69aee85c132b7dg65"
]
}
}
}
```
### Call Summaries
This webhook is triggered in response to a `call.summary.completed` event.
```json theme={null}
{
"id": "EV0ea54cadfbf342e6ac4ca1f22ed1700c",
"object": "event",
"apiVersion": "v4",
"createdAt": "2022-06-24T19:35:46.825Z",
"type": "callSummary",
"data": {
"object": {
"callId":"AC16558bc5f73445598a2627f5a94fe014",
"object": "callSummary",
"status": "completed",
"summary": [
"You talked about the weather."
],
"nextSteps": [
"Bring an umbrella."
],
"contactIds": [
"6824dfb69aee85c132b7dg65"
]
}
}
}
```
### Call Transcripts
This webhook is triggered in response to a `call.transcript.completed` event.
```json theme={null}
{
"id": "EV0ea54cadfbf342e6ac4ca1f22ed1700c",
"object": "event",
"apiVersion": "v4",
"createdAt": "2022-06-24T19:35:46.825Z",
"type": "callTranscript",
"data": {
"object": {
"callId": "AC16558bc5f73445598a2627f5a94fe014",
"object": "callTranscript",
"createdAt": "2022-06-24T19:34:50.279Z",
"dialogue": [
{
"content": "Hello, world!",
"start": 5.123456,
"end": 10.123456,
"identifier": "+19876543210",
"userId": "USlHhXmRMz"
}
],
"duration": 5,
"status": "completed",
"contactIds": [
"6824dfb69aee85c132b7dg65"
]
}
}
}
```
### Messages
This webhook is triggered in response to message events such as `message.received` and `message.delivered`. Below is a sample payload for a `message.received` event.
```json theme={null}
{
"id": "EVc67ec998b35c41d388af50799aeeba3e",
"object": "event",
"apiVersion": "v4",
"createdAt": "2022-01-23T16:55:52.557Z",
"type": "message.received",
"data": {
"object": {
"id": "AC24a8b8321c4f4cf2be110f4250793d51",
"object": "message",
"from": "+19876543210",
"to": ["+15555555555"],
"direction": "incoming",
"text": "Hello, world!",
"status": "delivered",
"createdAt": "2022-01-23T16:55:52.420Z",
"userId": "USu5AsEHuQ",
"phoneNumberId": "PNtoDbDhuz",
"contactIds": [
"6824dfb69aee85c132b7dg65"
]
}
}
}
```