Skip to main content

Endpoints

MethodPathDescription
GET/api/contacts/List contacts
POST/api/contacts/Create a contact
GET/api/contacts/{id}/Get a contact
PATCH/api/contacts/{id}/Update a contact
DELETE/api/contacts/{id}/Delete a contact

List Contacts

GET /api/contacts/
Authorization: Bearer <token>
Query Parameters:
ParameterTypeDescription
pageintegerPage number (default: 1)
limitintegerResults per page (default: 20, max: 100)
stagestringFilter by stage (e.g., engaged, customer)
assignedTostringFilter by assigned user ID
searchstringSearch by name, email, or phone
createdAfterISO8601Filter contacts created after this date
createdBeforeISO8601Filter contacts created before this date
tagsstringComma-separated tag names to filter by
Response:
{
  "count": 52,
  "next": "https://api.parsalink.io/api/contacts/?page=2",
  "previous": null,
  "results": [
    {
      "id": "cnt_01HX...",
      "firstName": "John",
      "lastName": "Smith",
      "email": "[email protected]",
      "phone": "+15551234567",
      "title": "VP of Sales",
      "stage": "engaged",
      "accountId": "acc_01HX...",
      "accountName": "Acme Corp",
      "assignedTo": "usr_01HX...",
      "tags": ["enterprise", "warm"],
      "createdAt": "2025-01-15T10:30:00Z",
      "updatedAt": "2025-03-20T14:22:00Z"
    }
  ]
}

Create a Contact

POST /api/contacts/
Authorization: Bearer <token>
Content-Type: application/json
Request body:
{
  "firstName": "Sarah",
  "lastName": "Kim",
  "email": "[email protected]",
  "phone": "+15559876543",
  "title": "Engineering Manager",
  "stage": "new",
  "accountId": "acc_01HX...",
  "assignedTo": "usr_01HX...",
  "tags": ["saas", "inbound"],
  "notes": "Met at SaaStr conference"
}
Required fields: firstName or lastName (at least one), email Response: 201 Created with the full contact object.

Get a Contact

GET /api/contacts/{id}/
Authorization: Bearer <token>
Response:
{
  "id": "cnt_01HX...",
  "firstName": "Sarah",
  "lastName": "Kim",
  "email": "[email protected]",
  "phone": "+15559876543",
  "title": "Engineering Manager",
  "stage": "new",
  "accountId": "acc_01HX...",
  "accountName": "TechCorp",
  "assignedTo": "usr_01HX...",
  "assignedToName": "Alex Johnson",
  "tags": ["saas", "inbound"],
  "emailOptOut": false,
  "emailBounced": false,
  "notes": "Met at SaaStr conference",
  "createdAt": "2025-03-01T09:00:00Z",
  "updatedAt": "2025-03-01T09:00:00Z"
}

Update a Contact

Use PATCH to update specific fields without affecting the rest.
PATCH /api/contacts/{id}/
Authorization: Bearer <token>
Content-Type: application/json
Request body (any subset of writable fields):
{
  "stage": "engaged",
  "assignedTo": "usr_02HX...",
  "tags": ["saas", "inbound", "qualified"]
}
Response: 200 OK with the updated contact object.

Delete a Contact

DELETE /api/contacts/{id}/
Authorization: Bearer <token>
Response: 204 No Content Deleting a contact removes the record and all associated notes and tasks. Activities logged on the contact’s timeline are retained in the audit log but no longer accessible through the contact record.

Contact Stage Values

ValueLabel
newNew
contactedContacted
engagedEngaged
proposal_sentProposal Sent
negotiationNegotiation
customerCustomer
inactiveInactive