Location Tasks Setup
Search and retrieve tasks across an entire GoHighLevel sub-account. Unlike contact-level task endpoints that show tasks for a single contact, this location-level endpoint returns all tasks across all contacts. Filter by status, assignee, and due date for team management and reporting. This quick-start covers authentication, querying tasks, and interpreting results.
Prerequisites
Before making your first Location Tasks call, confirm you have:
- A GoHighLevel sub-account with existing tasks assigned to contacts
- Access to Settings > Integrations > Private Integrations in your sub-account
- A REST client such as Postman, Insomnia, or
curlin your terminal - Your sub-account’s
locationId(found in Settings > Business Profile)
If you do not have tasks yet, create a few through the GHL dashboard by opening a contact record and clicking Tasks > Add Task.
Set Up Authentication
The Location Tasks endpoint requires a Private Integration Token (PIT) with the locations scope.
Navigate to Settings > Integrations > Private Integrations. Click Create New Integration, name it “Location Tasks API,” and enable the locations scope. Click Save and copy the generated token.
Pass this token in the Authorization header as a Bearer token. Set your base URL to https://services.leadconnectorhq.com. Include the Version: 2021-07-28 header.
Make Your First Call
Retrieve tasks for your entire location using GET /locations/{locationId}/tasks:
GET /locations/{locationId}/tasks?status=open&limit=20&offset=0
Authorization: Bearer {your-pit-token}
Supported query parameters:
status— filter by"open","completed", or"overdue"assignedTo— filter by user ID to see tasks for a specific team memberdueDate— filter tasks due before a specific date (ISO 8601 format)limit— number of results per page (default 20)offset— pagination offset
Combine filters to create focused views. For example, status=overdue&assignedTo=user-123 shows overdue tasks for a specific person. This is useful for manager dashboards and accountability reporting.
Handle the Response
A successful call returns a 200 status with task data:
{
"tasks": [
{
"id": "task-001",
"title": "Follow up on proposal",
"description": "Send revised pricing by Friday",
"status": "open",
"dueDate": "2026-03-10T17:00:00Z",
"assignedTo": "user-123",
"contactId": "contact-456",
"createdAt": "2026-03-05T09:00:00Z"
}
],
"total": 34,
"limit": 20,
"offset": 0
}
Each task includes the contactId so you can link back to the associated contact record. The assignedTo field identifies the team member responsible. Use total, limit, and offset for pagination.
Common errors: 401 means your token is invalid. 400 means a filter parameter is malformed. An empty tasks array means no tasks match your filters. If you expect results but get none, try removing filters to see all tasks first.
Test Your Setup
Run through this checklist to confirm everything works:
- List all tasks with
GET /locations/{locationId}/tasks(no filters) and verify results - Filter by status — add
status=openand confirm only open tasks return - Filter by assignee — add
assignedTo={userId}to see one person’s tasks - Test pagination — set
limit=5and incrementoffsetto page through results - Cross-reference results with the task view in the GHL dashboard
If tasks are not appearing, ensure they exist in the GHL dashboard and that your locationId is correct. Tasks created via workflows should also appear through this endpoint.
Next Steps
Read the full Location Tasks Guide for team management dashboards and task automation patterns. From here, explore Contact CRUD for accessing individual contact records and Location Custom Fields for extending task-related data.