HLAI Experts

Guide · AI agents API

HighLevel Conversation AI and Voice AI API: scopes and quirks

Voice AI in GoHighLevel (GHL) splits write access across two scopes: voice-ai-agents.write for agents and voice-ai-agent-goals.write for their actions. There is no single voice-ai.write. Most of the other failures on these endpoints come from carrying one product's parameters into the other's calls.

Rob EasonPublished

Voice AI and Conversation AI are separate products in HighLevel's API, each with its own scopes and its own request parameters. The errors below are the ones that come from treating them as one, plus the version header that decides which documentation page applies to your call.

Match each scope to the call

Request scopes by the call your integration actually makes. This is the map we work from.

  • Create a Voice AI agent: voice-ai-agents.write.
  • Create an action on a Voice AI agent: voice-ai-agent-goals.write.
  • List Voice AI agents: voice-ai-agents.readonly.
  • Read Voice AI call logs: voice-ai-dashboard.readonly. This one comes from our own build notes; HighLevel's scope table didn't load when we checked, so confirm it there.
  • Search Conversation AI agents: conversation-ai.readonly.
Ask for voice-ai-agents.write and voice-ai-agent-goals.write by name. voice-ai.write doesn't exist.

Listing Voice AI agents

The Voice AI list call has three rules, all in HighLevel's List Agents schema. It needs locationId. Its pageSize takes a value from 1 to 50. And its pages are numbered from 1, not 0.

Our notes from September 2026 filed the page-size limit under undocumented quirks, after the list returned a 422 above 50. The current schema states the limit, so treat it as a rule. To page through a large account, ask for 50 at a time and step the page number up from 1.

Searching Conversation AI agents

Conversation AI search is a different shape. HighLevel documents startAfter, limit and a query for the agent name, matched in lowercase, so lowercase the text before you send it.

Don't copy the Voice AI parameters across. In our builds in September 2026, adding locationId to this search returned a 422 saying the property locationId should not exist. We haven't reproduced that since, but locationId isn't among the documented search parameters either, so leave it out.

Which Version header to send

HighLevel's API docs come in versions, and the header follows the version you're reading. The current unversioned pages for Conversation AI search and the Voice AI list show Version: v3. Older pinned pages, and older notes of ours, use 2021-04-15.

Neither header fits every endpoint by default. Set the version per call in your code, match it to the documentation page you built that call from, and note which page that was. HighLevel has changed this before, so check the current page when a call that used to work starts failing.

Rather have it set up for you?

We'd build your chat and voice agents in HighLevel along with the API calls that manage them, starting with a 30-minute 1:1 with Rob.

Book a 1:1 with Rob

When a call fails, check in this order

Most errors on these endpoints trace back to one of four things.

  1. The scope. Is it the exact scope for this call, not a shorthand or a neighboring product's scope?
  2. The product. Are you sending Voice AI parameters to a Conversation AI endpoint, or the reverse?
  3. The limits. For the Voice AI list: locationId present, pageSize 50 or lower, page starting at 1.
  4. The version. Does the Version header match the doc page this call was written from?

Questions

AI agent API questions

Is there a voice-ai.write scope in HighLevel?
No. Creating a Voice AI agent uses voice-ai-agents.write, and creating an action on it uses voice-ai-agent-goals.write. Request both by name if your app does both.
Why does the Voice AI agent list return a 422?
Check pageSize first: HighLevel's schema accepts 1 to 50. Then confirm locationId is in the request, because the list requires it.
Should I pass locationId to Conversation AI agent search?
No. It isn't one of the documented search parameters, and in our builds sending it returned a 422. Use startAfter, limit and a lowercase name query.
Which Version header do these endpoints need?
The one shown on the documentation version you're following. The current unversioned docs show v3 for Conversation AI search and the Voice AI list, while older pinned pages use 2021-04-15.
Does the Voice AI agent list start at page 0 or page 1?
Page 1. HighLevel's List Agents schema numbers pages from 1, and pageSize, the number of agents per page, takes a value from 1 to 50.
Which scope reads Voice AI call logs?
Our build notes record voice-ai-dashboard.readonly for call-log reads. HighLevel's scope table didn't load when we last checked, so confirm the name there before you ship.
Rob Eason

Who you talk to

Rob Eason

Rob runs HLAI Experts and takes the 1:1 calls himself.

He is a HighLevel Certified Admin with the second-most reviews in HighLevel's Certified Admin Directory worldwide, all of them 5 out of 5.

He won HighLevel's Top New Subaccounts via AI Employee award in its 2025 Summer of AI Awards and taught HighLevel's official masterclass on its AI Employee.

Before HighLevel, he co-owned a 60-employee financial services firm and sold his share.

On the call he looks at your account, not a script.

5/5 across 83 reviews in HighLevel's Certified Admin Directory