Thoughtly contact API

Contact management — create, retrieve, update, and call contacts.

Operations 5

GET /contact Get Contacts #
POST /contact/create Create Contact #
GET /contact/{id} Get Contact #
DELETE /contact/{id} Delete Contact #
POST /contact/call Call A Contact #

Documentation

Specifications

Schemas & Data

Other Resources

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/thoughtly-contact-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

thoughtly-contact-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Thoughtly agent Contact API
  version: 1.0.0
  description: 'The Thoughtly API lets you programmatically manage voice and chat AI agents,

    contacts, calls, webhooks, and automations. Voice Agents are referenced in

    the API as "interviews" for historical reasons. Authentication uses two

    headers: `x-api-token` and `team_id`, both available from the Developer

    Settings page of the Thoughtly dashboard.

    '
  contact:
    name: Thoughtly Support
    email: support@thoughtly.com
    url: https://thoughtly.com
  termsOfService: https://thoughtly.com/terms
  license:
    name: Proprietary
servers:
- url: https://api.thoughtly.com
  description: Production Server
security:
- ApiKeyAuth: []
  TeamIdAuth: []
tags:
- name: contact
  description: Contact management — create, retrieve, update, and call contacts.
paths:
  /contact:
    get:
      summary: Get Contacts
      description: Retrieves a list of Contacts. Supports filtering by tags, phone numbers, and search.
      operationId: getContacts
      tags:
      - contact
      parameters:
      - name: search
        in: query
        schema:
          type: string
      - name: phone_numbers_only
        in: query
        schema:
          type: boolean
      - name: tags
        in: query
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: excluded_tags
        in: query
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: sort
        in: query
        schema:
          type: string
      - name: sortDirection
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: page
        in: query
        schema:
          type: integer
          minimum: 0
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 50
          default: 20
      responses:
        '200':
          description: A list of Contacts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponse'
  /contact/create:
    post:
      summary: Create Contact
      description: Creates a new Contact (a person you can call or message).
      operationId: createContact
      tags:
      - contact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreateRequest'
      responses:
        '200':
          description: Contact created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponse'
  /contact/{id}:
    get:
      summary: Get Contact
      description: Retrieve a single Contact by ID.
      operationId: getContact
      tags:
      - contact
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: The Contact.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponse'
        '404':
          description: Contact not found.
    delete:
      summary: Delete Contact
      description: Permanently deletes a Contact by ID.
      operationId: deleteContact
      tags:
      - contact
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Contact deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponse'
  /contact/call:
    post:
      summary: Call A Contact
      description: Initiate a call with a Contact using a specific Agent (interview).
      operationId: callContact
      tags:
      - contact
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CallRequest'
      responses:
        '200':
          description: Call initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericResponse'
components:
  schemas:
    ContactCreateRequest:
      type: object
      required:
      - phone_number
      properties:
        phone_number:
          type: string
          description: E.164 phone number of the Contact (required).
        name:
          type: string
        email:
          type: string
          format: email
        country_code:
          type: string
        tags:
          type: array
          items:
            type: string
        attributes:
          type: object
          additionalProperties: true
          description: Custom key/value attributes referenceable from Agent scripts.
      additionalProperties: false
    GenericResponse:
      type: object
      required:
      - data
      properties:
        error:
          type:
          - object
          - 'null'
          description: Populated only when the request fails.
        data:
          type: object
          additionalProperties: true
          description: Endpoint-specific payload.
    CallRequest:
      type: object
      required:
      - contact_id
      - interview_id
      properties:
        contact_id:
          type: string
          description: ID of the Contact to call.
        interview_id:
          type: string
          description: ID of the Agent (interview) that will handle the call.
        metadata:
          type:
          - object
          - 'null'
          additionalProperties: true
          description: Arbitrary key/value pairs available to the Agent script as `{key}` placeholders.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-token
      description: API token from Thoughtly Developer Settings.
    TeamIdAuth:
      type: apiKey
      in: header
      name: team_id
      description: Team identifier from Thoughtly Developer Settings.