Skip to content
Menu

Search the site

Type to search guides, blog, API and product.

↑ ↓ to move · Enter to open · Esc to close

API Reference

API

Contacts

Retrieve and update contact information

View as Markdown

Contacts represent the people who interact with your agent across channels such as WhatsApp, Instagram, and email. Each contact has a profile with name, channel identifiers, and optional metadata.

MethodPathDescription
GET/v1/contactsList contacts
GET/v1/contacts/:idGet contact detail
POST/v1/contactsCreate a new contact
PATCH/v1/contacts/:idUpdate contact

The list endpoint supports the following query parameters:

ParameterTypeDescription
limitnumberResults per page (default: 20, max: 100)
offsetnumberNumber of results to skip (default: 0)

List Contacts

GET/v1/contacts
curl "https://rest-api.tbit.app/v1/contacts?limit=20&offset=0" \
  -H "X-API-Key: $TBIT_API_KEY"
const response = await fetch('https://rest-api.tbit.app/v1/contacts?limit=20&offset=0', {
  headers: {
    'X-API-Key': process.env.TBIT_API_KEY,
  },
});
const data = await response.json();
import axios from 'axios';

const { data } = await axios.get(
  'https://rest-api.tbit.app/v1/contacts?limit=20&offset=0',
  {
    headers: {
      'X-API-Key': process.env.TBIT_API_KEY,
    },
  },
);
import os
import requests

response = requests.get(
    'https://rest-api.tbit.app/v1/contacts?limit=20&offset=0',
    headers={'X-API-Key': os.environ['TBIT_API_KEY']},
)
data = response.json()
<?php
$ch = curl_init('https://rest-api.tbit.app/v1/contacts?limit=20&offset=0');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: ' . getenv('TBIT_API_KEY'),
    ],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

Get Contact Detail

GET/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1
curl "https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1" \
  -H "X-API-Key: $TBIT_API_KEY"
const response = await fetch('https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1', {
  headers: {
    'X-API-Key': process.env.TBIT_API_KEY,
  },
});
const data = await response.json();
import axios from 'axios';

const { data } = await axios.get(
  'https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1',
  {
    headers: {
      'X-API-Key': process.env.TBIT_API_KEY,
    },
  },
);
import os
import requests

response = requests.get(
    'https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1',
    headers={'X-API-Key': os.environ['TBIT_API_KEY']},
)
data = response.json()
<?php
$ch = curl_init('https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: ' . getenv('TBIT_API_KEY'),
    ],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

Update Contact

PATCH/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1
curl -X PATCH "https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1" \
  -H "X-API-Key: $TBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "profile_name": "Jane Doe",
    "email": "[email protected]",
    "notes": "Preferred language: English"
  }'
const response = await fetch('https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1', {
  method: 'PATCH',
  headers: {
    'X-API-Key': process.env.TBIT_API_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    profile_name: 'Jane Doe',
    email: '[email protected]',
    notes: 'Preferred language: English',
  }),
});
const data = await response.json();
import axios from 'axios';

const { data } = await axios.patch(
  'https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1',
  {
    profile_name: 'Jane Doe',
    email: '[email protected]',
    notes: 'Preferred language: English',
  },
  {
    headers: {
      'X-API-Key': process.env.TBIT_API_KEY,
    },
  },
);
import os
import requests

response = requests.patch(
    'https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1',
    headers={'X-API-Key': os.environ['TBIT_API_KEY']},
    json={
        'profile_name': 'Jane Doe',
        'email': '[email protected]',
        'notes': 'Preferred language: English',
    },
)
data = response.json()
<?php
$ch = curl_init('https://rest-api.tbit.app/v1/contacts/64f1a2b3c4d5e6f7a8b9c0d1');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: ' . getenv('TBIT_API_KEY'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'profile_name' => 'Jane Doe',
        'email' => '[email protected]',
        'notes' => 'Preferred language: English',
    ]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

Create Contact

POST/v1/contacts
curl -X POST "https://rest-api.tbit.app/v1/contacts" \
  -H "X-API-Key: $TBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channel_id": "573009876543",
    "channel_type": "whatsapp",
    "profile_name": "Jane Doe",
    "custom_attributes": {
      "city": "Bogota",
      "plan": "premium"
    }
  }'
const response = await fetch('https://rest-api.tbit.app/v1/contacts', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.TBIT_API_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    channel_id: '573009876543',
    channel_type: 'whatsapp',
    profile_name: 'Jane Doe',
    custom_attributes: {
      city: 'Bogota',
      plan: 'premium',
    },
  }),
});
const data = await response.json();
import axios from 'axios';

const { data } = await axios.post(
  'https://rest-api.tbit.app/v1/contacts',
  {
    channel_id: '573009876543',
    channel_type: 'whatsapp',
    profile_name: 'Jane Doe',
    custom_attributes: {
      city: 'Bogota',
      plan: 'premium',
    },
  },
  {
    headers: {
      'X-API-Key': process.env.TBIT_API_KEY,
    },
  },
);
import os
import requests

response = requests.post(
    'https://rest-api.tbit.app/v1/contacts',
    headers={'X-API-Key': os.environ['TBIT_API_KEY']},
    json={
        'channel_id': '573009876543',
        'channel_type': 'whatsapp',
        'profile_name': 'Jane Doe',
        'custom_attributes': {
            'city': 'Bogota',
            'plan': 'premium',
        },
    },
)
data = response.json()
<?php
$ch = curl_init('https://rest-api.tbit.app/v1/contacts');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: ' . getenv('TBIT_API_KEY'),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'channel_id' => '573009876543',
        'channel_type' => 'whatsapp',
        'profile_name' => 'Jane Doe',
        'custom_attributes' => [
            'city' => 'Bogota',
            'plan' => 'premium',
        ],
    ]),
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);

List endpoints return paginated results:

json
{
  "data": [
    {
      "id": "64f1a2b3c4d5e6f7a8b9c0d1",
      "profile_name": "Jane Doe",
      "email": "[email protected]",
      "notes": "Preferred language: English",
      "channels": [
        {
          "channel_id": "573001234567",
          "channel_type": "whatsapp"
        }
      ],
      "custom_attributes": {
        "city": "Bogota",
        "plan": "premium"
      },
      "created_at": "2024-09-01T12:00:00Z",
      "updated_at": "2024-09-01T14:30:00Z"
    }
  ],
  "pagination": {
    "total": 50,
    "limit": 20,
    "offset": 0,
    "has_more": true
  }
}