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:outbound,inboundorconfirmation;outreachandappointmentare accepted as older spellings.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: the starting capability sets for a type, fixed peragentType.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),beginMessage(the opening line),startingSpeaker(agentgreets first,userwaits for the person) andbeginAfterUserSilenceMs(how long a waiting agent gives the person before it speaks).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;agentcopies only the agent, onto a brand-new campaign of the type you name.- 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. - Catalog: everything an agent could carry, from List available tools. Items have
type,name,description,repeatableandfields; what is installed is read on the campaign. - Digest: one line per skill, from List agent skills with
viewset tosummary. - 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 entry: on a GoHighLevel sub-account, a contact joins when it gets an entry tag (
activeTags) and leaves on an exit tag (inactiveTags). On a sub-account that keeps its contacts here, a contact joins when it arrives, and existing ones are added with Put contacts into a campaign. - Campaign name:
namefollows the agent’s name. A different name is set back to the agent’s, 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,tz: 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,leadGeneratedAtInCrm,leadGeneratedAtInCrmPrecision(time,day),leadReceivedByTfuAi,callCount,disposition,nextScheduledCall(nextCallTime,cadenceStep),isInternal. - Outcome type on a contact:
appointment,appointmentConfirmed,appointmentRescheduled,appointmentCancelled,callBack,askedForInfo,whatsAppFollowUp,humanNeeded,liveTransfer,failedTransfer,killSwitch,disqualified,tagged,spamDetected. 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, answered 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. - Lead age: how long after the CRM created a lead it was sent here. Segments
fresh,warm,dbr,unknown;unknownReasons:noLeadRecord,noCreationDate,noReceiptDate,straddlesBoundary,createdAfterReceipt.
Billing
Explained in Balances, spend and sub-account wallets.- Summary sections:
balance,autoRecharge,subscription,pendingPurchase,spendThisMonth,subAccounts,pendingCredits,chatPrice.unavailablenames any that could not load. chatPrice: what one AI message costs, as a share of a minute at the payer’s rate per minute.multiplier(0.01 to 1.00, 0.25 by default),secondsPerMessage,source(DEFAULT,AGENCY,SUB_ACCOUNT). The agency’s is on the summary; a sub-account’s is on Get sub-account wallet,nullwhen it cannot be read right now.attention:code,severity,message. Severities:ACTION_REQUIRED,WARNING,INFO.- Transaction types:
PURCHASE,REFUND(a verified refund of a payment, removing its wallet credit),CHARGEBACK(a lost payment dispute, removing its wallet credit),BONUS,SUB_ACCOUNT_TOP_UP,MINUTES_RETURNED,CALL_USAGE,PHONE_NUMBER,CO_AUTHOR,VOICE_SESSION. 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(AI builder replies, each at the chat price),voiceSessionsUSD(Tars Home conversations, builder voice sessions, roleplays, test calls and campaign test runs, at your per-minute call rate;voiceSessionsByKindsplits them bykind:tars_home,builder_voice,role_play,builder_test_call,campaign_test_run),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. creditBatches: what a sub-account’s balance came from, oldest first. Batches with what is left of each, or, on a wallet kept as one balance, purchase records (minutesRemaining0) and one last row withidbalanceholding the whole balance at the current rate.- 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:BRONZE,SILVER,GOLD,DIAMOND. - Auto-recharge mode: stored for each agency and set by our team. Automatic mode charges the card, at most 5 times in any 24 hours; approval mode raises a request our team approves before anything is charged. It applies only to automatic recharges: a purchase is always charged at once.
- Purchase
status:PAID,CREDIT_PENDINGwhen the card was charged and the minutes are being added, orPROCESSINGwhile Stripe finishes. 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. Idempotency-Key: a finished request (a success or a refusal) replays its first answer withidempotentReplay: true; after a503that changed nothing the same key runs again; after a500on Buy a plan the same key answersIDEMPOTENCY_OUTCOME_UNKNOWN, so read the wallet back and use a new key.- Change errors:
STRIPE_NOT_CONNECTED,PROJECT_WALLET_NOT_AVAILABLE_ON_PLAN(sub-account wallets are on the Business plan or for a managed agency only),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,FREE_PLAN_BRONZE_ONLYandFREE_PLAN_BRONZE_COOLDOWN(the Free plan buys the Bronze pack once every 30 days),ACCOUNT_STATE_UNAVAILABLE(your account’s state could not be read; nothing was charged or changed: contact support),AUTO_RECHARGE_PACK_REQUIRED(choose Silver, Gold or Diamond before switching auto-recharge on),PAYMENT_METHOD_PROVIDER_UNAVAILABLE(Stripe could not confirm the card; nothing was changed). - Read errors:
503withCANONICAL_BILLING_READ_UNAVAILABLEorCANONICAL_BILLING_CUTOVER_UNAVAILABLEwhen billing information is temporarily unavailable, orREAD_BUDGET_EXCEEDEDwhen the answer would read more billing history than one request may. Nothing was changed; try again shortly.
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: on a GoHighLevel sub-account,
typeofsms,email,add-tagormove-stage, withbodyorsnippetId,subject,tags,pipelineId,stageId. On a sub-account that keeps its contacts here,typeofapi-event(Send webhook), withurl,eventNameanddata. All of them takedelaySecondsandjitterSeconds. - Update guards:
deletions[]with astrategyofadvanceorremove,stepOrder,confirmReorder,allowEmpty. - Queue: where every lead is waiting. Each lead has
queueId,cadenceStep,callStatus,nextCallTime,live,callbackandpipeline, which names the queue holding the lead:v2the current queue,v1older rows. Act on leads byqueueId. - 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 client sub-account, keeping its contacts in a GoHighLevel location or here.
id(record id),locationId,companyId,projectName,businessName,businessNameOverridden,timezone,crm(ghlwhen a GoHighLevel location is connected,nativewhen the sub-account keeps its contacts on the platform). status:live,stopped,disconnected.active:falseparks the project and frees a plan slot.installed,uninstalledAt.planLocked: on the Free plan, a project past its 3 oldest active ones. It places no new calls and refuses changes withPLAN_SUBACCOUNT_LIMITuntil you upgrade. Activating a fourth on the Free plan returnsSubAccountCapReached.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.tz: the time zone a plain-date filter is read in. Without it, a plain date is a UTC day.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.
