Clio Contacts API

All clients, prospective clients, companies, and external co-counsels can be viewed as Contacts under the Contacts tab in Clio Manage. [Support Link](https://help.clio.com/hc/en-us/articles/9290486281627-Clio-Manage-Contacts-Overview) ## Contact Name When creating a contact of type "Person" you must provide at least a first name or a last name. This can be done in one of two ways: 1. Providing the name components explicitly (preferred): Using the `first_name` and `last_name` parameters. 2. Providing the full name (discouraged): Using the `name` parameter, you can provide the person's full name (e.g. "John Smith") and Clio will attempt to infer the individual components of the name. If it is unable to do so, you will receive a "422 Unprocessable Entity: At least one of first name or last name must be provided" Error. **We recommend using the individual name fields when possible to avoid any ambiguities.** ## Associations A Contact can be persisted with its associations in a single request. The followings detail the nested attributes to persist the associations. ### Addresses Checkout the sample request to update the Addresses of a Contact: ```json Request PATCH /api/v4/contacts/1.json { data: { addresses: [ // update { id: 1, name: "Work", country: "Canada" }, // create { name: "Home", street: "1234 Main Street", city: "Burnaby", province: "BC", country: "Canada", postal_code: "V1A 1A1" }, // destroy { id: 2, _destroy: true } ] } ``` ### Custom Field Values A CustomFieldValue contains the value of a CustomField for a Contact. Below are some examples of how to create, read, update, and destroy the CustomFieldValues of a Contact: #### Create Note: The value of `id` used here is the value of the `id` parameter in the response received when [creating a new CustomField](https://docs.developers.clio.com/clio-manage/api-reference/#tag/Custom-Fields/operation/CustomField#create) or one returned in a [query of an existing CustomField](https://docs.developers.clio.com/clio-manage/api-reference/#tag/Custom-Fields/operation/CustomField#show). ```json Request PATCH /api/v4/contacts/1.json { data: { custom_field_values: [ { custom_field: { id: 2 }, value: "Initial value" } ] } } ``` #### Read Note: The `id` of the CustomFieldValue is a composite value including the custom field type. Use this `id` to update and destroy the CustomFieldValue. The `id` of the associated Custom Field can be found by querying the `custom_field` for all CustomFieldValues related to the Contact, e.g.: `/api/v4/contacts/1?fields=id,display_number,custom_field_values{id,value,custom_field}` Note: The `id` may be `NULL` when the CustomField is displayed by default but has not yet been given a value. ```json Request GET /api/v4/contacts/1.json?fields=custom_field_values{id,value,custom_field} { data: { custom_field_values: [ { id: "text_line-1", value: "Current value", custom_field: { id: 2 } } ] } } ``` #### Update Note: The value of the CustomFieldValue `id` used here is a composite value and can be found by querying for all CustomFieldValues related to the Contact, e.g.: `/api/v4/contacts/1?fields=id,name,custom_field_values{id,value,custom_field}` Note: If the `id` is `NULL`, you must provide `custom_field{id}` to create the CustomFieldValue and assign a value (see **Create**). ```json Request PATCH /api/v4/contacts/1.json { data: { custom_field_values: [ { id: "text_line-1", value: "Updated value" } ] } } ``` #### Destroy Note: The value of the CustomFieldValue `id` used here is a composite value and can be found by querying for all CustomFieldValues related to the Contact, e.g.: `/api/v4/contacts/1?fields=id,name,custom_field_values{id,value}` ```json Request PATCH /api/v4/contacts/1.json { data: { custom_field_values: [ { id: "picklist-2", _destroy: true } ] } } ``` ### Email Addresses Checkout the sample request to update the Email Addresses of a Contact: ```json Request PATCH /api/v4/contacts/1.json { data: { email_addresses: [ // update { id: 1, name: "Work", address: "demo@clio.com" }, // create { name: "Home", address: "home@clio.com" }, // destroy { id: 2, _destroy: true } ] } ``` ### Instant Messengers Checkout the sample request to update the Instant Messengers of a Contact: ```json Request PATCH /api/v4/contacts/1.json { data: { instant_messengers: [ // update { id: 1, name: "Work", address: "https://twitter.com/goclio" }, // create { name: "Other", address: "https://www.facebook.com/GoClio/" }, // destroy { id: 2, _destroy: true } ] } ``` ### Phone Numbers Checkout the sample request to update the Phone Numbers of a Contact: ```json Request PATCH /api/v4/contacts/1.json { data: { phone_numbers: [ // update { id: 1, name: "Work", number: "123-456-7890" }, // create { name: "Other", number: "000-000-0000" }, // destroy { id: 2, _destroy: true } ] } ``` ### Web Site Checkout the sample request to update the Web Site of a Contact: ```json Request PATCH /api/v4/contacts/1.json { data: { web_sites: [ // update { id: 1, name: "Work", address: "https://help.clio.com/" }, // create { name: "Other", address: "https://www.clio.com/about/careers/" }, // destroy { id: 2, _destroy: true } ] } ```

Business capability
Customer Data Management BC-420.10

Operations 5

GET /contacts.json Return the data for all Contacts #
POST /contacts.json Create a new Contact #
GET /contacts/{id}.json Return the data for a single Contact #
PATCH /contacts/{id}.json Update a single Contact #
DELETE /contacts/{id}.json Delete a single Contact #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clio:clio-contacts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clio-contacts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clio API Documentation Contacts API
  contact:
    name: Clio API Support
    email: api@clio.com
  description: '# Developer Support and Feedback

    * Clio takes the availability and stability of our API seriously; please report any **degradations** or **breakages** to Clio''s API Support team at api@clio.com.

    * For business and partnership inquiries, contact our API Partnerships team at api.partnerships@clio.com.

    * For best practices and tips from the Clio development community, join the conversation in the Clio Developer Slack Channel.


    A community-driven Clio Developers Stack Overflow Group also exists where you can connect and ask questions from other Clio API users.

    # Getting Started

    > **Note:** The API is available in four distinct data regions: Australia (au.app.clio.com), Canada (ca.app.clio.com), EU (eu.app.clio.com) and US (app.clio.com).

    >

    > Likewise, the developer portal is available at region-specific links for the Australia, Canada, EU, and US regions.

    >

    > This document assumes the US region is being used (app.clio.com). If you''re building in one of the other regions, you should adapt the links and examples as necessary.


    To start building on the Clio API, you’ll need a Clio account – you can review our Developer Handbook and follow the steps to sign up for an account.


    Once you have an account, you can create a developer application from the Developer Portal and start building!

    # Authorization with OAuth 2.0

    See our Authorization documentation →

    # Permissions

    See our Permissions documentation →

    # Fields

    See our Fields documentation →

    # Rate Limiting

    See our Rate Limits documentation →

    # Paging

    See our Pagination documentation →

    # ETags

    See our ETags documentation →

    # Minor Versions

    API v4 supports multiple minor versions. Versions are of the form ''4.X.Y''. To request a specific version, you can use an `X-API-VERSION` header in your request, with the header value set to the API version you''re requesting. If this header is omitted, it will be treated as a request for the default API version. If the header is present but invalid, it will return a `410 Gone` response. If the header is present and valid, but it is no longer supported, it will return a `410 Gone` response.


    An `X-API-VERSION` will be included in all successful responses, with the value being set to the API version used.


    You can find our API Versioning Policy and Guidelines in our documentation hub.


    The API Changelog explains each version''s changes in further detail.

    ### 4.0.4


    * Update `quantity` field to return values in seconds rather than hours for Activities


    ### 4.0.5


    * Remove `matter_balances` field from Bills

    * Standardize status/state enum values

    * Add a Document association to completed DocumentAutomations

    * Add rate visibility handling for Activity''s price and total


    ### 4.0.6


    * Remove `document_versions` collection field from Documents


    ### 4.0.7


    * Change secure link format


    ### 4.0.8


    * `Activity` hours are redacted in the response based on the activity hours visibility setting for the user

    * Add `quantity_redacted` field to activities


    ### 4.0.9


    * Contacts are filtered and redacted in the response based on the new ''Contacts Visibility'' user permission setting.


    ### 4.0.10


    * Fixed validation of `type` query parameter when querying Notes


    ### 4.0.12


    * Restrict fields for CalendarEntry that should only be visible to event owners, editors, and viewers


    ### 4.0.13


    **This is the default version**


    * Add association limits to Contacts

    * Returns 422 Unprocessable Entity when association limits are exceeded'
  version: v4
  x-logo:
    url: https://www.clio.com/wp-content/uploads/2015/05/Container-5-Logo.png
servers:
- url: https://app.clio.com/api/v4
  description: US region Production Server
- url: https://eu.app.clio.com/api/v4
  description: Europe region Production Server
- url: https://ca.app.clio.com/api/v4
  description: Canada region Production Server
- url: https://au.app.clio.com/api/v4
  description: Australia region Production Server
tags:


# --- truncated at 32 KB (142 KB total) ---
# Full source: https://artifacts.apis.io/clio/openapi/clio-contacts-api-openapi.yml