Agents
Explained in What an agent is and Campaign types and capabilities.- Agent: the voice that takes the calls. Prompt, voice, skills, and what it records.
id,agentId: the agent id. The same value under two names.agentType: the campaign type the agent was created as:outreach(Outbound),inbound(Inbound) orappointment(Reminder).nullwhen none can be resolved.capabilityIds,capabilities: what the agent may do on a call:appointment_booking,live_transfer,add_tag. Sent on create, read on the campaign.templateId,templates: on List agent types, the starting capability sets for a type.isActive,active: the agent’s live state. Get agent spells itisActive, List agentsactive.hasCustomPrompt: whether the agent has its own prompt rather than the one it was created with.platformFieldNames: post-call fields the platform manages. Always kept on update.partialFailures: downstream syncs that did not apply after an otherwise successful update.config.llm:generalPrompt(the instructions) andbeginMessage(the opening line).config.voice:voiceId,speed,temperature,ambientSound(coffee-shop,convention-hall,summer-outdoor,mountain-outdoor,static-noise,call-center),ambientSoundVolume.config.language:language, anddenoisingMode(no-denoise,noise-cancellation,noise-and-background-speech-cancellation).config.interaction:enableBackchannel,backchannelFrequency,backchannelWords,fillerWords,responsiveness.config.callScreening.callPurpose: the reason the agent gives a call-screening assistant.config.analysis: the outcomes and fields the agent records. See Outcomes.sorton List agents:updatedAt.descorcreatedAt.desc.cascade: on Delete agent, must beagent_and_campaign.modeon Clone agent:campaigncopies the campaign and workflow onto the same agent;everythingalso clones the agent.- Test call: a real call from the campaign’s number to
toNumber, fromfromNumber. ReturnscallIdandcallStatus. - Web test session: a browser conversation. Returns
accessToken,callId,agentName. - Campaign test run: one contact pushed through the real campaign entry. Tracked by intent id with
consumed,events,triggerKind,placementFailure.
Outcomes
Explained in What your agent records.- Outcome, disposition: what a call ended with. Workflow constants:
SUCCESS(BOOKED),CONFIRMED,RESCHEDULE,TRANSFER,FAILED_TRANSFER,TAG_APPLIED,CALLBACK,INFO_ONLY(FOLLOWUP_REQUESTED),HUMAN_NEEDED,KILL_SWITCH,VOICEMAIL(NO_ACTION). analysis.outcomes: your wording for the four describable outcomes, keyedopt_out,callback,human_needed,asked_for_info.- Outcome prompts: the same four, read and edited one at a time, with
currentbeside the default. - AI-generated field: a fact the agent extracts.
analysis.fields[]withkey,type(text,choice,number,boolean),prompt,options,examples,extractWhen,required. - Signal: a
booleanfield a workflow can branch on. analysis.locked: fields owned by an installed capability. Reword, never delete.dispositionon a call or contact:type,label,color,tag.- Automatic tags:
tfu_ai_booked,tfu_ai_cancelled,tfu_ai_live_transfer,tfu_ai_standby,tfu_ai_human_needed,tfu_ai_kill_switch,tfu_ai_failed_transfer.
Skills and tools
Explained in Skills and tools and The tool library.- Skill: a rule the agent reaches for at one moment.
type: instructions,name(up to 120 characters),whenToUse(up to 300),instructions,enabled. - Tool: an ability that runs real code. Types
smart_service_area(zips,outOfAreaResponse),live_transfer,add_tag,check_tag(one tag,checkingMessage),appointment_booking. - Library: everything an agent could carry. Items have
kind(skill,tool),status(available,added_as_skill,installed_tool),canAdd, andfieldswhosetypeisstringorboolean. - Digest: one line per skill.
- Tools inventory: installed tools with
freshness(live,cached) and aneditableDescription. version,expectedVersion: the concurrency token on the skill set.
Campaigns
Explained in What a campaign is, Who gets called, Speed to lead and power dialer, Calling window and Contact timezone.- Campaign: who the agent calls, when, how, from which number. One per agent.
campaignId,name,description,locationId,projectName.active: live or paused. AliasisActive.activeTags: entry tags. A contact who gets one joins the campaign.inactiveTags: exit tags. A contact who gets one leaves it.callIfDnd: dial contacts whose GoHighLevel record has Do Not Disturb on.agentTypeon a campaign or project: the legacy template id, one ofappointment_confirmation,appointment_booking,live_transfer,live_transfer_and_tag,live_transfer_and_booking,add_tag,inbound_receptionist. Alsosystem: provenance, not behaviour.dialing: the dispatch mode,s2l(speed to lead),pd(power dialer) ors2l_pd(both). Retired, read-only:reactivation,confirmation. Aliastype.- Speed to lead: call the moment the entry tag lands. Power dialer: work the lead through a cadence.
callingWindow:days(ISO weekdays, Monday1to Sunday7),start,end(HH:MM),tz. An array for split days.useWindowTimezone: read the window in its owntzrather than the sub-account’s.multipleTimezoneCheck: judge the window, the agent’s sense of time and bookings in each contact’s own timezone. On the campaign or as a project default.dropOutsideWindow: drop a lead that arrives outside the window instead of parking it.- Parked lead: a lead held until the window opens.
- AI After Hours: the AI calls only in the gaps around your human team’s hours. Dashboard only.
fromNumbers: the caller IDs the campaign dials from.masterCampaignEnabled,master: see Master agent.firstLiveAt,firstLiveAtSource: when the campaign first went live, byactivationorfirst_dial.config.calendarId,config.collectAddress: booking settings.config.transferNumber,config.transferToAssignedUser,config.advancedRouting,config.transferRoutes(id,number,condition),config.transferMessage: transfer settings.config.s2lDelaySeconds,config.s2lDelayHaltOnReply,config.s2lDoubleDial,config.callNowSkipTags: speed-to-lead settings.config.s2lDelayMinutesis the superseded whole-minute form.config.cadenceId: the cadence a power-dialer campaign uses.config.callbackDoubleDial: double dial on the agent’s return call.config.voicemail,config.voicemailMessage,config.voicemailDetectionPrompt: leave one voicemail per cadence touch, on its last dial. Callbacks and inbound calls never leave one, and a step’s owncall.voicemailreplaces the message on that step.- Campaign name:
namefollows the agent’s name. A different name is set back to the agent’s within about 15 minutes, unless the campaign is running an active split test or another campaign in the project already has that name. config.appliedTag,config.confirmedTag,config.fallbackTag: tags the agent applies for its capabilities.config.testFormFields: stand-in lead fields a test call uses.- Backfill: enrol contacts already carrying the entry tag.
dryRun,limit; returnsmatched,truncated,preview,skipped(noPhone,existingQueue),enrolled,statuses.
Campaign workflows
Explained in Campaign workflows.- Workflow: the graph that runs after each call.
nodeskeyed by id,edges(source,target,sourceHandle),dispositionEntrieskeyed by outcome,campaignConfig,advisories,version. - Node types:
if,switch,add-tag,remove-tag,set-field,move-stage,add-note,send-sms,send-email,book-appointment,trigger. - Exits:
thenandelseonif; case ids anddefaultonswitch. - Condition operators:
is_true,is_false,is_set,is_empty,equals,not_equals,contains,starts_with,in,gt,gte,lt,lte. - Advisories:
node_incomplete,unsafe_context,unreachable,unknown_outcome. campaignConfig:callbackMode(ai,human),humanCallbackCalendarId,aiNotes,noteLanguage,convertedTag.expectedVersion,allowRemovals: the write guards.
Calls
Explained in Call records.- Call record: one call.
id(record id),callId(voice platform id),date,dateTime,leadName,phoneNumber,direction(inbound,outbound),status,duration,agent,callSummary,disposition,recordingUrl,cost,agentType,campaignId,campaignName,projectName,locationId. - Detail: adds
transcript,segments(each with aspeakerofagentorlead),fields, andtranscriptSource(stored,live,unavailable). sort:dateTime.desc,dateTime.asc,status.desc,status.asc,duration.desc,duration.asc,projectName.desc,projectName.asc.excludeReviewed,durationMin,durationMax,dateFromUTC,dateToUTC: filters.pagination:page,limit,total,totalPages.
Contacts
Explained in Contacts and leads.- Contact: one person, by phone number, with their calling history.
id,contactId,phoneNumber,leadName,projectName,locationId,dateAdded,callCount,disposition,nextScheduledCall(nextCallTime,cadenceStep),isInternal. - Outcome type on a contact:
appointment,callBack,liveTransfer,failedTransfer,killSwitch,tagged. dispositionSummary: counts of each outcome type for one contact.- Do-not-call flag: your project-wide “never call this person”.
- Internal contact: your own test lead, excluded from performance figures.
internalfilter:all,only,exclude. sortBy:leadName,phoneNumber,projectName,dateAdded,callCount.sortOrder:asc,desc.search,locationIds,projects,masterCampaignId,agentVariantId: filters.
Analytics
Explained in Metrics and how they are calculated.- Lead rates divide by
totalLeads. Conversion rates divide by conversations, calls over 30 seconds. - Counts:
totalLeads,totalCalls,totalAppointments,totalCallbacks,totalTransfers,totalFailedTransfers,attemptedTransfers,killSwitch,avgCallDuration,callsPerLead. - Rates:
pickupRate,conversationRate,conversationToPickupRate,bookingRate,transferRate,transferSuccessRate,appointmentConversionRate,transferConversionRate,combinedConversionRate. window: the inclusive calendar days actually used.cached,queryTime,generatedAt: server metadata. Do not build on them.- Per-project rows:
project,leads,appointments,bookingRate,transfers,transferRate, filtered byagency,projects,excludeProjects.
Billing
Explained in Balances, spend and sub-account wallets.- Summary sections:
balance,autoRecharge,subscription,pendingPurchase,spendThisMonth,subAccounts,pendingCredits.unavailablenames any that could not load. attention:code,severity,message. Severities:ACTION_REQUIRED,WARNING,INFO.- Transaction types:
PURCHASE,BONUS,SUB_ACCOUNT_TOP_UP,MINUTES_RETURNED,CALL_USAGE,PHONE_NUMBER,CO_AUTHOR. walletEffect:ADD,DEDUCT,NONE.cashFlow:PAID_BY_YOU,PAID_TO_YOU,NONE.- Usage:
callCostUSD(what calls cost you),billedToClientsUSD(what rebilled sub-accounts were charged),phoneNumbersUSD,coAuthorUSD,totalCostUSD.groupBy:sub_account,day. - Sub-account wallet
status:ACTIVE,LOW_BALANCE,IN_DEBT,DEPLETED.visibility:ENABLED,DISABLED. - Sub-account auto-recharge:
thresholdUSD,rechargeAmountUSD, both in dollars. - Documents:
scope(platform,sub_accounts),kind(INVOICE,RECEIPT),truncated. window:from,to,days, whole UTC days.- Changing billing:
billing:writefor settings,billing:chargeto charge a card (needsIdempotency-Key, not over MCP). Plans:SILVER,GOLD,DIAMOND. - Purchase
status:PAID,PROCESSING,PENDING_APPROVAL. Chargestatus:SUCCEEDED, orCREDIT_PENDINGwhen the card was charged and the minutes have not landed yet.rebillingLeftOn: the charge’s outcome is unknown, so rebilling stayed on. - Change errors:
STRIPE_NOT_CONNECTED,CAPABILITY_NOT_AVAILABLE,REBILLING_OFF,NO_USABLE_CARD,PAYMENT_METHOD_SELECTION_REQUIRED,USABLE_DEFAULT_PAYMENT_METHOD_REQUIRED,PROJECT_RATE_NEEDS_CONFIRMATION,PENDING_CREDITS_EXIST,SUB_ACCOUNT_WALLET_REQUIRED,THRESHOLD_FIXED_FOR_SELF_SERVE,SUB_ACCOUNT_CHANGED_DURING_WRITE,CREDIT_GUARD_PARTIALLY_APPLIED,IDEMPOTENCY_KEY_REQUIRED,IDEMPOTENCY_KEY_INVALID,IDEMPOTENCY_KEY_REUSED,IDEMPOTENCY_IN_PROGRESS,IDEMPOTENCY_OUTCOME_UNKNOWN,PAYMENT_RECONCILIATION_REQUIRED.
Power dialer
Explained in Cadences, steps and the queue.- Cadence: the follow-up schedule.
cadenceName,isDefault,locationIds,campaignIds,activeDays,active,stepCount,schedule[],mode(appointment_reminderfor appointment campaigns). - Step: one entry in
schedule[]. Shapes: wait (offsetMinutes), clock time (day,hour,minute,periodAMorPM), reminder (minutesBeforeAppt). Pluslabel,doubleDial,call(enabled,openingMessage,screeningPurpose,voicemail,voicemailMessage),additionalActions[]. - Additional action:
type(sms,email,add-tag,move-stage),bodyorsnippetId,subject,tags,pipelineId,stageId,delaySeconds,jitterSeconds. - Update guards:
deletions[]with astrategyofadvanceorremove,stepOrder,confirmReorder,allowEmpty. - Queue: where every lead is waiting. Each lead has
queueId,cadenceStep,callStatus,nextCallTime,live,callback,pipeline(v1,v2). - Run now, move (
targetStep, zero-based), remove: act on waiting leads byqueueIdorselectAll. Skips come back inskippedwith a reason. - Callback leads, parked speed-to-lead leads: two views of the queue.
Phone numbers
Explained in Phone numbers and caller ID.- Pool: every number the agency owns. Each has
phoneNumber,pretty,source(customer-twilioandcustomare yours; anything else was bought here),monthlyChargeUSD,campaigns[]. - Search:
place,areaCode,countryCode(US,CA),contains,tollFree. Matches carry acountry. Unavailablereason:unknown_place,no_inventory,out_of_coverage. - Buy, attach, assign, unassign, move, release (
released,releaseFailed). - Caller ID: the number the lead sees. Local numbers get answered more.
- Bring your own carrier: numbers imported from your Twilio account. See Connect your own Twilio numbers.
Voices
Explained in Voices.- Voice list: every voice an agent can speak with. Each has
voiceId,voiceName,gender(male,female, or empty),accent,age,previewAudioUrl, and asource:own(your agency added it),shared(another agency added it) orcurated(the catalogue). - Voice detail: adds
regionandisCustom(truefor a voice outside the curated catalogue). degraded: on Get voice, the provider could not describe a voice from your list.- Voice library: the voices your agency added. Each has
providerVoiceId,displayName(your label),addedAtandvoiceIds(the ids that select it on an agent). used,limit,remaining: your plan’s voice allowance.limitandremainingare empty when there is no limit.- Voice search: a
query; each hit hasproviderVoiceId,name,description. - Removing a voice: the preview returns
agentCount,agentNames,fallbackVoiceId. The removal returnsreassignedAgents(agents moved to the default voice) andincompleteAgents(agents that could not be moved). references.voiceId: sent withVOICE_ALREADY_SHARED, the voice to select instead of adding it.
Split testing
Explained in Agent split tests.- Split test: two to five variants of one agent in one campaign.
status(active,ended),revision,primaryAgentId,variants[],sync(statusofhealthyorerror, andfailedAt, when the failure was recorded). - Variant: one version of the agent.
agentId,name,sequence,weight(1 to 100 when live, totalling 100 across the live ones),status(active,removed),splitDraft,addedAt,removedAt(when it was removed, empty while active),isPrimary(truefor the campaign’s own agent). customName: a read-only flag,trueonce a variant has been given a name of its own through Rename split variant. The primary never gets it.- Draft variant: a member excluded from the cycle.
splitDraftistrueandweightis0, so it takes no calls while staying testable and in step with the campaign. A live variant covers calls to its leads until it is included again. Set a weight of0to exclude, any weight from 1 to include. - Primary variant: the original agent. Cannot be removed, and cannot be excluded.
agentVariantId: the filter that scopes analytics, calls and contacts to one variant, withcampaignId.idempotentReplay: set when anIdempotency-Keymatched an earlier add.
Master agent
Explained in Master Agent.- Master agent, master campaign: one campaign mirrored into a child campaign per linked project.
masterCampaignEnabled: the switch on the campaign.master:enabled,masterCampaignId,projects[],rescan(rescanned,failed,errors).- Linked project entry:
role(parent,child),status,syncVersion,syncedVersion,lastError,bindingScanStatus,bindingScanMatchedCount,bindingScanMissingCount,bindingScanError. - Binding: an asset resolved by name in a child sub-account, such as a calendar or pipeline stage.
masterCampaignId: the filter that reads across every child at once.
Projects
Explained in Agencies, projects and sub-accounts.- Agency: your account.
agencyName,agencyId,niche,agencyType. - Project, sub-account: one GoHighLevel location.
id(record id),locationId,companyId,projectName,businessName,businessNameOverridden,timezone,crm(ghl). status:live,stopped,disconnected.active:falseparks the project and frees a plan slot.installed,uninstalledAt.callbacksHandledByHuman,multipleTimezoneCheck,useWindowTimezone,callingWindowOverride,knowledgeBase,campaigns[],ghl(live location data).- System: a legacy template with
id,letter,name,description,promptVars,metadataVars,dynamicVars,postCallFields,dispositions,sideSignals. - Validation:
ok,error,system,agentName,missing,present,extra.
GoHighLevel
Explained in GoHighLevel resources.- Custom field:
id,name,fieldKey(such ascontact.what_service),placeholder,dataType. - Custom value:
id,name,fieldKey(the merge tag),placeholder,value. - Calendar:
id,name,calendarType,active. Tag:id,name. - Contact lookup: by phone,
contact: nullwhen none. - Connection errors:
GHL_NOT_CONNECTED,SUBACCOUNT_DISCONNECTED,REAUTH_REQUIRED.
Everywhere
Explained in Conventions. Every operation these terms appear in is listed in the API reference.locationId: the id to scope on.projectName: a label.Idempotency-Key: replay-safe header on four operations.version,expectedVersion,revision: concurrency tokens.RateLimit-Limit,RateLimit-Remaining,RateLimit-Reset: the headers to build on.- Error codes:
Unauthorized,InsufficientScope,Forbidden,FORBIDDEN,AccessDenied,VALIDATION,BadRequest,NotFound,NOT_FOUND,CONFLICT,IN_USE,SYNC_FAILED,VOICE_ALLOWANCE,VOICE_CAPACITY,VOICE_ALREADY_SHARED,VoiceProviderUnavailable,PROVIDER_UNAVAILABLE,TooManyRequests,RateLimited,InternalError.
