curl -X POST "https://api.pingr.ai/api/v1/contacts" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}'
import requests
url = "https://api.pingr.ai/api/v1/contacts"
payload = {
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.pingr.ai/api/v1/contacts", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
phone_number: "+14155550199",
name: "Jane Doe",
tags: ["vip", "enterprise"],
notes: "Met at SaaS Summit 2026",
custom_fields: {
company: "Acme Corp",
lead_score: 92
}
})
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.pingr.ai/api/v1/contacts"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}
"""))
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "7b8f9e2a-4c1d-48ef-9123-bcde456789ab",
"organization_id": "93f35dc2-5d46-4e58-a9ee-038c35d9bcf1",
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": [
"vip",
"enterprise"
],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
},
"created_at": "2026-09-07T11:00:00Z",
"updated_at": "2026-09-07T11:00:00Z"
}
{
"detail": "Invalid phone number format or length."
}
{
"detail": "Unauthorized"
}
Contacts
Create contact
Register a new contact in your organization’s address book
POST
/
api
/
v1
/
contacts
curl -X POST "https://api.pingr.ai/api/v1/contacts" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}'
import requests
url = "https://api.pingr.ai/api/v1/contacts"
payload = {
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.pingr.ai/api/v1/contacts", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
phone_number: "+14155550199",
name: "Jane Doe",
tags: ["vip", "enterprise"],
notes: "Met at SaaS Summit 2026",
custom_fields: {
company: "Acme Corp",
lead_score: 92
}
})
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.pingr.ai/api/v1/contacts"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}
"""))
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "7b8f9e2a-4c1d-48ef-9123-bcde456789ab",
"organization_id": "93f35dc2-5d46-4e58-a9ee-038c35d9bcf1",
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": [
"vip",
"enterprise"
],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
},
"created_at": "2026-09-07T11:00:00Z",
"updated_at": "2026-09-07T11:00:00Z"
}
{
"detail": "Invalid phone number format or length."
}
{
"detail": "Unauthorized"
}
Create a new contact record with phone number, name, optional categorization tags, notes, and custom metadata fields.
Authentication
This endpoint requires Bearer token authentication.Authorization: Bearer <token>
| Header | Type | Required | Description | Format |
|---|---|---|---|---|
Authorization | string | Yes | Scoped organization API key or Bearer JWT token | Bearer <token> |
Input parameters
The following parameters are accepted in the JSON request body.string
required
Bearer token for authentication. Format:
Bearer <token>.string
required
Destination phone number (maximum 50 characters). E.164 format is recommended (e.g.
+14155550199).string
required
Full name or display name of the contact (maximum 255 characters). Example:
Jane Doe.string[]
Array of classification tags for segmenting campaigns (e.g.
["lead", "vip", "retail"]). Defaults to [].string
Internal context, notes, or customer history notes.
object
Key-value dictionary containing arbitrary custom metadata (e.g.
{"account_id": "acc_123", "plan": "enterprise"}).Response Fields
string
Generated UUID identifier of the contact.
string
UUID of the owning organization.
string
Contact’s telephone number.
string
Contact’s full name.
string[]
Assigned segmentation tags.
string
Internal notes text or
null.object
Stored custom metadata object or
null.string
ISO 8601 creation timestamp.
string
ISO 8601 last modification timestamp.
curl -X POST "https://api.pingr.ai/api/v1/contacts" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}'
import requests
url = "https://api.pingr.ai/api/v1/contacts"
payload = {
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.pingr.ai/api/v1/contacts", {
method: "POST",
headers: {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
phone_number: "+14155550199",
name: "Jane Doe",
tags: ["vip", "enterprise"],
notes: "Met at SaaS Summit 2026",
custom_fields: {
company: "Acme Corp",
lead_score: 92
}
})
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.pingr.ai/api/v1/contacts"))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": ["vip", "enterprise"],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
}
}
"""))
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "7b8f9e2a-4c1d-48ef-9123-bcde456789ab",
"organization_id": "93f35dc2-5d46-4e58-a9ee-038c35d9bcf1",
"phone_number": "+14155550199",
"name": "Jane Doe",
"tags": [
"vip",
"enterprise"
],
"notes": "Met at SaaS Summit 2026",
"custom_fields": {
"company": "Acme Corp",
"lead_score": 92
},
"created_at": "2026-09-07T11:00:00Z",
"updated_at": "2026-09-07T11:00:00Z"
}
{
"detail": "Invalid phone number format or length."
}
{
"detail": "Unauthorized"
}
‹ PreviousNext ›
List contacts
GET /api/v1/contacts
Was this page helpful?