Skip to main content

Create Contact

Creates a new contact in the CRM for a specific funnel.

POST /v1/funnels/{funnelId}/contacts

Either email or phone must be provided. Each is optional on its own, but at least one of the two is required.

Authentication

Requires the x-perspective-api-key header. See Authentication for details.

Path parameters

NameTypeRequiredDescription
funnelIdstringYesThe ID of the funnel to create the contact in.

Request body

FieldTypeRequiredDescription
emailstringConditionalContact's email address. Required if phone is not provided.
phonestringConditionalContact's phone number. Required if email is not provided.
firstNamestringNoContact's given name.
lastNamestringNoContact's family name.
statusstringNoContact lifecycle status. Must be one of the statuses configured for the funnel.
websitestringNoContact's website URL.
birthdaystringNoContact's birthday (typically an ISO date string).
addressobjectNoStructured address object. All sub-fields are optional.
address.postalCodestringNoPostal / ZIP code.
address.citystringNoCity.
address.statestringNoState, province, or region.
address.countrystringNoCountry.
address.streetstringNoStreet line.
address.houseNumberstringNoHouse number.
skipAutomationTriggerbooleanNoWhen false (default), automation workflows configured for the contact's initial status execute on creation. Set to true to bypass automation triggers.

Read-only fields: meta, utmParams, and properties cannot be set via this endpoint. Use Update Contact Value to write custom properties entries.

Example request body

{
"email": "jane.doe@example.com",
"phone": "+49151234567890",
"firstName": "Jane",
"lastName": "Doe",
"website": "https://janedoe.com",
"birthday": "1990-06-15",
"address": {
"postalCode": "10115",
"city": "Berlin",
"state": "Berlin",
"country": "DE",
"street": "Unter den Linden",
"houseNumber": "1"
},
"skipAutomationTrigger": false
}

Example request

curl -X POST https://api.perspective.co/v1/funnels/fnl_abc123/contacts \
-H "x-perspective-api-key: $PERSPECTIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "jane.doe@example.com",
"firstName": "Jane",
"lastName": "Doe"
}'

Response

Returns 201 Created with { data: Contact }. See the Contact object for a full description of every field.

Example response

{
"data": {
"id": "cnt_newxyz",
"status": "lead",
"email": "jane.doe@example.com",
"firstName": "Jane",
"lastName": "Doe",
"name": "Jane Doe",
"meta": {
"ps_converted_at": "2025-06-02T10:00:00.000Z",
"ps_source": "external-api"
}
}
}

Errors

See Errors for the full list of status codes and handling guidance.

StatusMeaning
400Missing both email and phone, invalid email format, or other validation failure.
401Missing or invalid API key.
403Your API key does not have crm:write permission.
500Internal server error.