GoHighLevel Contacts API

Create Task

POST/contacts/:contactId/tasks

POST /contacts/:contactId/tasks Create a task against a contact, with a due date and an assignee, so follow-up work shows up in that user's task list. It takes 1 path parameter and 5 body fields, requires the contacts.write scope and authenticates with a sub-account (location) token.

Request and authentication

Method
POST
Full URL
https://services.leadconnectorhq.com/contacts/:contactId/tasks
Scopes
contacts.write
Token type
Sub-account (location) token
Accepted auth
OAuth Access Token, Private Integration Token
API version header
Version: 2021-07-28
Schema verified
22 June 2026

Path parameters

Substituted into the URL. Required by definition.

NameTypeDescription
contactIdrequiredstring

Example: sx6wyHhbFdRXh302LLNR

Request body

JSON body fields. Nested objects are shown indented under their parent.

NameTypeDescription
titlerequiredstring

Example: First Task

bodystring

Example: loram ipsum

dueDaterequiredstring

Example: 2020-10-25T11:00:00Z

completedrequiredboolean

Example: true

assignedTostring

Example: hxHGVRb1YJUscrCB8eXK

Response fields

Top-level fields returned on a successful call.

NameTypeDescription
taskobject
idstring

Example: lJpzYrWdpkC2hX6t2yue

titlestring

Example: test

bodystring

Example: testing

assignedTostring

Example: tesTUcmRxWrjqzJS8EjkxNKting

dueDatestring

Example: 2021-07-08T02:30:00.000Z

completedboolean

Example: true

contactIdstring

Example: lJpzYrWdpkC2hX6t2yue

Example request

Copy-paste ready. Swap YOUR_TOKEN for your access token or Private Integration Token, and the sample ID for your own.

curl -X POST 'https://services.leadconnectorhq.com/contacts/sx6wyHhbFdRXh302LLNR/tasks' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Version: 2021-07-28' \
  -H 'Content-Type: application/json' \
  -d '{
    "title": "First Task",
    "dueDate": "2020-10-25T11:00:00Z",
    "completed": true
  }'

Skip the schema lookup

Hylo gives your AI agent this schema — and the other 52 documented here — without you looking anything up. Ask in plain English; it picks the endpoint, fills the body, and can run the call against your own sub-account.

More contacts endpoints