@eldritchlogic/bland-ai-sdk
@eldritchlogic/bland-ai-sdk
Unofficial TypeScript SDK for the Bland AI API with full coverage of every documented endpoint — all 329 routes across calls, conversational pathways, voices, TTS, SMS, knowledge bases, evals, agent testing, memory, SIP/BYOT trunking, triage, organizations, the v2 batches/tools APIs, and more.
- Complete: every route on docs.bland.ai has a typed method (enforced by an automated coverage test).
- Typed: request params and responses are typed from the official docs, with JSDoc on every method and field.
- Zero dependencies: built on the global
fetch; works in Node ≥ 18.17, Bun, Deno, and modern browsers. - Dual module: ESM and CJS builds with full
.d.tsdeclarations.
Install
npm install @eldritchlogic/bland-ai-sdk
Quickstart
import BlandAI from "@eldritchlogic/bland-ai-sdk";
const bland = new BlandAI({ apiKey: process.env.BLAND_API_KEY });
// Send a phone call
const { call_id } = await bland.calls.send({
phone_number: "+15555555555",
task: "Call the customer, confirm their appointment for tomorrow at 10am.",
voice: "maya",
});
// Fetch its details + transcript later
const call = await bland.calls.get(call_id);
console.log(call.concatenated_transcript);
Configuration
const bland = new BlandAI({
apiKey: "sk-...", // or set BLAND_API_KEY in the environment
baseUrl: "https://api.bland.ai", // or https://us.api.bland.ai / https://eu.api.bland.ai
encryptedKey: "...", // BYOT (Bring Your Own Twilio) key, sent on every request
orgId: "...", // sent as x-bland-org-id on every request
timeoutMs: 60_000, // per-request timeout (default 60s)
maxRetries: 2, // GET-only retries on 408/429/5xx (default 2)
fetch: customFetch, // bring your own fetch implementation
defaultHeaders: { ... }, // merged into every request
});
Every method also accepts a final options argument for per-request control:
await bland.calls.list({ limit: 10 }, {
signal: abortController.signal,
timeoutMs: 10_000,
headers: { "x-custom": "1" },
encryptedKey: "per-request-byot-key",
});
Error handling
import { BlandAPIError, BlandTimeoutError, BlandConnectionError } from "@eldritchlogic/bland-ai-sdk";
try {
await bland.calls.send({ phone_number: "+1555", task: "..." });
} catch (err) {
if (err instanceof BlandAPIError) {
console.error(err.status, err.code, err.message, err.body);
} else if (err instanceof BlandTimeoutError) {
// request exceeded timeoutMs
} else if (err instanceof BlandConnectionError) {
// network failure (DNS, reset, ...)
}
}
Resources
| Client property | Area |
|---|---|
bland.calls |
Send/list/stop calls, analysis, recordings, live transcript streams |
bland.pathways |
Conversational pathways: CRUD, versions, folders, chat, AI generation |
bland.evals |
Evals platform: agents, runs, workbench, templates, status |
bland.agentTesting |
Test scenarios, runs, batches, simulation sets, tornado |
bland.voices |
Voice presets, cloning, samples, settings, ratings |
bland.speak |
Text-to-speech generation and streaming, TTS models |
bland.sms |
SMS conversations, sending, batches, numbers, webhooks |
bland.inboundNumbers |
Inbound number purchase and configuration |
bland.knowledge |
Knowledge bases: learn from text/files/web, crawl, chat |
bland.vectors |
Legacy vector knowledge bases, media/text upload |
bland.memory |
Persistent agent memory stores and users |
bland.sip |
SIP / BYOT trunking, discovery, porting, test calls |
bland.triage |
Issue triage: issues, flags, relations, comments, categories |
bland.personas |
Personas, versions, inbound phone attachment |
bland.widgets |
Web call widgets, threads, custom components |
bland.organizations |
Org management, members, permissions, billing, versions |
bland.account |
Account details, audit logs, encrypted (BYOT) keys |
bland.tools |
Custom tools agents can call mid-conversation |
bland.webAgents |
Web agents |
bland.contacts |
Contacts CRUD, find, merge, resolve |
bland.alarms |
Monitoring alarms and history |
bland.guardRails |
Agent guard rails |
bland.citationSchemas |
Post-call citation schemas |
bland.blockedNumbers |
Blocked numbers |
bland.customDialingPools |
Custom outbound dialing pools |
bland.translationSessions |
Live translation sessions |
bland.postcallWebhooks |
Post-call webhooks |
bland.prompts |
Saved prompts |
bland.v2 |
API v2: call batches (v2.batches) and integration tools (v2.tools) |
Undocumented or brand-new endpoint? Use the escape hatch:
await bland.request({ method: "POST", path: "/v1/some/new/endpoint", body: { ... } });
WebSocket streams
Two Bland features are WebSocket-based. The SDK ships the message types and the token/URL plumbing; bring your own WebSocket (native in browsers, Node ≥ 21, Bun, or the ws package):
// Live post-transfer transcript
const { data } = await bland.calls.getTranscriptStreamUrl(callId);
const ws = new WebSocket(data.url);
// Bidirectional streaming TTS
const wsUrl = bland.speak.streamInputUrl(); // wss://api.bland.ai/v1/speak/stream-input
Full API coverage
Every documented Bland AI endpoint and the SDK method that calls it. Generated from source by scripts/gen-api-table.mjs; a test suite asserts the mapping stays complete.
Show all endpoints
| SDK method | Endpoint |
|---|---|
Account.listAuditLogs() |
GET /v1/audit/logs |
Account.get() |
GET /v1/me |
Account.createEncryptedKey() |
POST /v1/accounts |
Account.deleteEncryptedKey() |
POST /v1/accounts/delete |
AgentTesting.deleteScenario() |
DELETE /v1/agent-testing/scenarios/{id} |
AgentTesting.getAnalytics() |
GET /v1/agent-testing/analytics/{pathwayId} |
AgentTesting.getEnhancedAnalytics() |
GET /v1/agent-testing/analytics/{pathwayId}/enhanced |
AgentTesting.getBatch() |
GET /v1/agent-testing/batches/{id} |
AgentTesting.listRuns() |
GET /v1/agent-testing/runs |
AgentTesting.getRun() |
GET /v1/agent-testing/runs/{id} |
AgentTesting.listScenarios() |
GET /v1/agent-testing/scenarios |
AgentTesting.getScenario() |
GET /v1/agent-testing/scenarios/{id} |
AgentTesting.getSimulationSet() |
GET /v1/agent-testing/simulation-sets/{id} |
AgentTesting.listTemplates() |
GET /v1/agent-testing/templates |
AgentTesting.getTornadoStatus() |
GET /v1/agent-testing/tornado/{id}/status |
AgentTesting.getActiveTornado() |
GET /v1/agent-testing/tornado/active |
AgentTesting.batchRun() |
POST /v1/agent-testing/batch-run |
AgentTesting.analyzeRun() |
POST /v1/agent-testing/runs/{id}/analyze |
AgentTesting.createScenario() |
POST /v1/agent-testing/scenarios |
AgentTesting.runScenario() |
POST /v1/agent-testing/scenarios/{id}/run |
AgentTesting.generateScenarioFromCall() |
POST /v1/agent-testing/scenarios/generate-from-call |
AgentTesting.createSimulationSet() |
POST /v1/agent-testing/simulation-sets |
AgentTesting.cloneTemplate() |
POST /v1/agent-testing/templates/{id}/clone |
AgentTesting.cancelTornado() |
POST /v1/agent-testing/tornado/{id}/cancel |
AgentTesting.startTornado() |
POST /v1/agent-testing/tornado/start |
AgentTesting.updateScenario() |
PUT /v1/agent-testing/scenarios/{id} |
Alarms.delete() |
DELETE /v1/alarms/{id} |
Alarms.list() |
GET /v1/alarms |
Alarms.get() |
GET /v1/alarms/{id} |
Alarms.listEvents() |
GET /v1/alarms/history |
Alarms.update() |
PATCH /v1/alarms/{id} |
Alarms.create() |
POST /v1/alarms |
Alarms.notify() |
POST /v1/alarms/{id}/notify |
Alarms.toggle() |
POST /v1/alarms/{id}/toggle |
Alarms.trigger() |
POST /v1/alarms/{id}/trigger |
BlockedNumbers.delete() |
DELETE /v1/blocked_numbers/{block_id} |
BlockedNumbers.list() |
GET /v1/blocked_numbers |
BlockedNumbers.get() |
GET /v1/blocked_numbers/{block_id} |
BlockedNumbers.create() |
POST /v1/blocked_numbers |
BlockedNumbers.edit() |
POST /v1/blocked_numbers/{block_id}/edit |
Calls.list() |
GET /v1/calls |
Calls.get() |
GET /v1/calls/{call_id} |
Calls.getCorrectedTranscript() |
GET /v1/calls/{call_id}/correct |
Calls.listActive() |
GET /v1/calls/active |
Calls.getEventStream() |
GET /v1/event_stream/{call_id} |
Calls.getRecording() |
GET /v1/recordings/{call_id} |
Calls.send() |
POST /v1/calls |
Calls.sendSimple() |
POST /v1/calls |
Calls.sendPathway() |
POST /v1/calls |
Calls.analyze() |
POST /v1/calls/{call_id}/analyze |
Calls.listen() |
POST /v1/calls/{call_id}/listen |
Calls.stop() |
POST /v1/calls/{call_id}/stop |
Calls.getTranscriptStreamUrl() |
POST /v1/calls/{call_id}/transcript-stream/token |
Calls.stopAll() |
POST /v1/calls/active/stop |
Calls.transfer() |
POST /v1/calls/active/transfer |
CitationSchemas.get() |
GET /v1/citation_schemas/ |
CitationSchemas.backfillStatus() |
GET /v1/citation_schemas/backfill/status/{workflow_id} |
CitationSchemas.list() |
GET /v1/citation_schemas/list |
CitationSchemas.update() |
PATCH /v1/citation_schemas/ |
CitationSchemas.create() |
POST /v1/citation_schemas/ |
CitationSchemas.backfill() |
POST /v1/citation_schemas/backfill |
Contacts.list() |
GET /v1/contacts |
Contacts.get() |
GET /v1/contacts/{contact_id} |
Contacts.update() |
PATCH /v1/contacts/{contact_id} |
Contacts.find() |
POST /v1/contacts/find |
Contacts.merge() |
POST /v1/contacts/merge |
Contacts.resolve() |
POST /v1/contacts/resolve |
CustomDialingPools.list() |
GET /v1/custom-dialing-pools |
CustomDialingPools.get() |
GET /v1/custom-dialing-pools/{pool_id} |
CustomDialingPools.create() |
POST /v1/custom-dialing-pools |
CustomDialingPools.update() |
POST /v1/custom-dialing-pools/{pool_id}/update |
Evals.status() |
GET /v1/evals/status |
EvalsAgents.delete() |
DELETE /v1/evals/agents/{eval_agent_id} |
EvalsAgents.list() |
GET /v1/evals/agents |
EvalsAgents.get() |
GET /v1/evals/agents/{eval_agent_id} |
EvalsAgents.listVersions() |
GET /v1/evals/agents/{eval_agent_id}/versions |
EvalsAgents.getVersion() |
GET /v1/evals/agents/{eval_agent_id}/versions/{version_id} |
EvalsAgents.update() |
PATCH /v1/evals/agents/{eval_agent_id} |
EvalsAgents.updateVersion() |
PATCH /v1/evals/agents/{eval_agent_id}/versions/{version_id} |
EvalsAgents.create() |
POST /v1/evals/agents |
EvalsAgents.publish() |
POST /v1/evals/agents/{eval_agent_id}/publications |
EvalsAgents.createVersion() |
POST /v1/evals/agents/{eval_agent_id}/versions |
EvalsRuns.list() |
GET /v1/evals/runs |
EvalsRuns.get() |
GET /v1/evals/runs/{run_id} |
EvalsRuns.listAgentResults() |
GET /v1/evals/runs/{run_id}/agent-results |
EvalsRuns.listAgentSnapshots() |
GET /v1/evals/runs/{run_id}/agent-snapshots |
EvalsRuns.listCallResults() |
GET /v1/evals/runs/{run_id}/call-results |
EvalsRuns.create() |
POST /v1/evals/runs |
EvalsRuns.cancel() |
POST /v1/evals/runs/{run_id}/cancellations |
EvalsRuns.estimate() |
POST /v1/evals/runs/estimates |
EvalsTemplates.deleteUserTemplate() |
DELETE /v1/evals/user-templates/{id} |
EvalsTemplates.listAgentTemplates() |
GET /v1/evals/agent-templates |
EvalsTemplates.getAgentTemplate() |
GET /v1/evals/agent-templates/{template_key} |
EvalsTemplates.listUserTemplates() |
GET /v1/evals/user-templates |
EvalsTemplates.getUserTemplate() |
GET /v1/evals/user-templates/{id} |
EvalsTemplates.updateUserTemplate() |
PATCH /v1/evals/user-templates/{id} |
EvalsTemplates.createUserTemplate() |
POST /v1/evals/user-templates |
EvalsWorkbench.delete() |
DELETE /v1/evals/workbench-setups/{setup_id} |
EvalsWorkbench.list() |
GET /v1/evals/workbench-setups |
EvalsWorkbench.get() |
GET /v1/evals/workbench-setups/{setup_id} |
EvalsWorkbench.listVersions() |
GET /v1/evals/workbench-setups/{setup_id}/versions |
EvalsWorkbench.getVersion() |
GET /v1/evals/workbench-setups/{setup_id}/versions/{version_id} |
EvalsWorkbench.update() |
PATCH /v1/evals/workbench-setups/{setup_id} |
EvalsWorkbench.updateVersion() |
PATCH /v1/evals/workbench-setups/{setup_id}/versions/{version_id} |
EvalsWorkbench.create() |
POST /v1/evals/workbench-setups |
EvalsWorkbench.publish() |
POST /v1/evals/workbench-setups/{setup_id}/publications |
EvalsWorkbench.createVersion() |
POST /v1/evals/workbench-setups/{setup_id}/versions |
GuardRails.delete() |
DELETE /v1/guard_rails/{guard_rail_id} |
GuardRails.list() |
GET /v1/guard_rails |
GuardRails.get() |
GET /v1/guard_rails/{guard_rail_id} |
GuardRails.update() |
PATCH /v1/guard_rails/{guard_rail_id} |
GuardRails.create() |
POST /v1/guard_rails |
InboundNumbers.list() |
GET /v1/inbound |
InboundNumbers.get() |
GET /v1/inbound/{phone_number} |
InboundNumbers.updateLabel() |
POST /inbound/update_label |
InboundNumbers.purchase() |
POST /numbers/purchase |
InboundNumbers.update() |
POST /v1/inbound/{phone_number} |
InboundNumbers.delete() |
POST /v1/inbound/{phone_number}/delete |
InboundNumbers.insert() |
POST /v1/inbound/insert |
InboundNumbers.createSession() |
POST /v1/inbound/session |
Knowledge.delete() |
DELETE /v1/knowledge/{knowledge_base_id} |
Knowledge.list() |
GET /v1/knowledge |
Knowledge.get() |
GET /v1/knowledge/{knowledge_base_id} |
Knowledge.chat() |
POST /v1/knowledge/chat |
Knowledge.crawl() |
POST /v1/knowledge/crawl |
Knowledge.learnText() |
POST /v1/knowledge/learn |
Knowledge.learnFile() |
POST /v1/knowledge/learn |
Knowledge.learnWeb() |
POST /v1/knowledge/learn |
Knowledge.update() |
PUT /v1/knowledge/{knowledge_base_id} |
Memory.list() |
GET /v1/memory |
Memory.get() |
GET /v1/memory/{memory_id} |
Memory.getChanges() |
GET /v1/memory/changes |
Memory.getContact() |
GET /v1/memory/contact/{memory_id} |
Memory.listContactMessages() |
GET /v1/memory/contact/{memory_id}/messages |
Memory.getContext() |
GET /v1/memory/context |
Memory.updateContactFacts() |
PATCH /v1/memory/contact/{memory_id}/facts |
Memory.updateContactSummary() |
PATCH /v1/memory/contact/{memory_id}/summary |
Memory.addCall() |
POST /v1/memory/{memory_id}/add-call |
Memory.addUser() |
POST /v1/memory/{memory_id}/add-user |
Memory.deleteCall() |
POST /v1/memory/{memory_id}/call/{call_id}/delete |
Memory.delete() |
POST /v1/memory/{memory_id}/delete |
Memory.update() |
POST /v1/memory/{memory_id}/update |
Memory.getUser() |
POST /v1/memory/{memory_id}/user |
Memory.deleteUser() |
POST /v1/memory/{memory_id}/user/delete |
Memory.searchUserCalls() |
POST /v1/memory/{memory_id}/user/search |
Memory.updateUser() |
POST /v1/memory/{memory_id}/user/update |
Memory.createContact() |
POST /v1/memory/contact |
Memory.create() |
POST /v1/memory/create |
Memory.setEnabled() |
POST /v1/memory/enable |
Memory.resetContact() |
POST /v1/memory/reset |
Organizations.delete() |
DELETE /v1/orgs/{org_id} |
Organizations.leave() |
DELETE /v1/orgs/self/leave |
Organizations.get() |
GET /v1/orgs/{org_id} |
Organizations.getBilling() |
GET /v1/orgs/{org_id}/billing |
Organizations.getBillingRefill() |
GET /v1/orgs/{org_id}/billing/refill |
Organizations.listMembers() |
GET /v1/orgs/{org_id}/members |
Organizations.getCurrentVersion() |
GET /v1/orgs/{org_id}/versions/{service}/current |
Organizations.listVersions() |
GET /v1/orgs/{org_id}/versions/{service}/list |
Organizations.listSelfMemberships() |
GET /v1/orgs/self/memberships |
Organizations.updateMembers() |
PATCH /v1/orgs/{org_id}/members |
Organizations.updateMemberPermissions() |
PATCH /v1/orgs/{org_id}/members/permissions |
Organizations.updateProperties() |
PATCH /v1/orgs/{org_id}/properties |
Organizations.updateVersion() |
PATCH /v1/orgs/{org_id}/versions/{service} |
Organizations.create() |
POST /v1/orgs/create |
Pathways.delete() |
DELETE /v1/pathway/{pathway_id} |
Pathways.deleteVersion() |
DELETE /v1/pathway/{pathway_id}/version/{version_id} |
Pathways.deleteFolder() |
DELETE /v1/pathway/folders/{folder_id} |
Pathways.getNodeTestRun() |
GET /v1/node_tests/run/:id |
Pathways.list() |
GET /v1/pathway |
Pathways.get() |
GET /v1/pathway/{pathway_id} |
Pathways.getVersion() |
GET /v1/pathway/{pathway_id}/version/{version_id} |
Pathways.listVersions() |
GET /v1/pathway/{pathway_id}/versions |
Pathways.getChat() |
GET /v1/pathway/chat/{id} |
Pathways.listFolders() |
GET /v1/pathway/folders |
Pathways.listFolderPathways() |
GET /v1/pathway/folders/{folder_id}/pathways |
Pathways.getGenerateStatus() |
GET /v1/pathway/generate/status/{job_id} |
Pathways.getSession() |
GET /v1/pathway/session |
Pathways.updateFolder() |
PATCH /v1/pathway/folders/{folder_id} |
Pathways.invokeNodeTest() |
POST /v1/node_tests/invoke |
Pathways.update() |
POST /v1/pathway/{pathway_id} |
Pathways.promote() |
POST /v1/pathway/{pathway_id}/publish |
Pathways.createVersion() |
POST /v1/pathway/{pathway_id}/version |
Pathways.updateVersion() |
POST /v1/pathway/{pathway_id}/version/{version_number} |
Pathways.sendChatMessage() |
POST /v1/pathway/chat/{id} |
Pathways.createChat() |
POST /v1/pathway/chat/create |
Pathways.create() |
POST /v1/pathway/create |
Pathways.createFolder() |
POST /v1/pathway/folders |
Pathways.moveToFolder() |
POST /v1/pathway/folders/move |
Pathways.generate() |
POST /v1/pathway/generate |
Personas.delete() |
DELETE /v1/personas/{persona_id} |
Personas.list() |
GET /v1/personas |
Personas.get() |
GET /v1/personas/{persona_id} |
Personas.listVersions() |
GET /v1/personas/{persona_id}/versions |
Personas.getVersion() |
GET /v1/personas/{persona_id}/versions/{version_id} |
Personas.update() |
PATCH /v1/personas/{persona_id} |
Personas.updateNumberSettings() |
PATCH /v1/personas/{persona_id}/inbound/{phone_number}/settings |
Personas.create() |
POST /v1/personas |
Personas.attachNumbers() |
POST /v1/personas/{persona_id}/inbound/attach |
Personas.detachNumbers() |
POST /v1/personas/{persona_id}/inbound/detach |
Personas.promoteVersion() |
POST /v1/personas/{persona_id}/versions/promote |
PostCallWebhooks.get() |
GET /v1/postcall/webhooks/{call_id} |
PostCallWebhooks.create() |
POST /v1/postcall/webhooks/create |
PostCallWebhooks.resend() |
POST /v1/postcall/webhooks/resend |
Prompts.list() |
GET /v1/prompts |
Prompts.get() |
GET /v1/prompts/{prompt_id} |
Prompts.create() |
POST /v1/prompts |
Sip.cancelPort() |
DELETE /v1/sip/port/{id} |
Sip.getConfig() |
GET /v1/sip |
Sip.getCallLogs() |
GET /v1/sip/calls |
Sip.getDiscoveryStatus() |
GET /v1/sip/discover/status |
Sip.getFirewallIps() |
GET /v1/sip/firewall-ips |
Sip.generatePassword() |
GET /v1/sip/generate-password |
Sip.listNumbers() |
GET /v1/sip/numbers |
Sip.getOutboundSetup() |
GET /v1/sip/outbound-setup |
Sip.listPortRequests() |
GET /v1/sip/port |
Sip.checkPortability() |
GET /v1/sip/port/check |
Sip.getTrunkHealth() |
GET /v1/sip/status |
Sip.getTestCallStatus() |
GET /v1/sip/test-call/status |
Sip.updateConfig() |
PATCH /v1/sip/config |
Sip.attach() |
POST /v1/sip/attach |
Sip.detach() |
POST /v1/sip/detach |
Sip.discover() |
POST /v1/sip/discover |
Sip.parseDestination() |
POST /v1/sip/parse-destination |
Sip.uploadPortDocument() |
POST /v1/sip/port/document |
Sip.initiatePort() |
POST /v1/sip/port/initiate |
Sip.sendTestCall() |
POST /v1/sip/test-call |
Sip.updateDirection() |
POST /v1/sip/update |
Sms.deleteConversation() |
DELETE /v1/sms/conversations/{id} |
Sms.deleteMessages() |
DELETE /v1/sms/conversations/{id}/messages |
Sms.listConversations() |
GET /v1/sms/conversations |
Sms.getConversationWebhook() |
GET /v1/sms/conversations/{conversationId}/webhook |
Sms.getConversation() |
GET /v1/sms/conversations/{id} |
Sms.listNumbers() |
GET /v1/sms/numbers |
Sms.updateConversation() |
PATCH /v1/sms/conversations/{conversation_id} |
Sms.analyze() |
POST /v1/sms/analyze |
Sms.sendBatch() |
POST /v1/sms/batch |
Sms.createConversation() |
POST /v1/sms/create |
Sms.updateNumber() |
POST /v1/sms/number/update |
Sms.send() |
POST /v1/sms/send |
Speak.listModels() |
GET /v1/models |
Speak.listGenerations() |
GET /v1/speak/samples |
Speak.getGeneration() |
GET /v1/speak/samples/{id} |
Speak.generate() |
POST /v1/speak |
Speak.stream() |
POST /v1/speak/stream |
Speak.mintStreamInputToken() |
POST /v1/speak/stream-input/token |
Speak.streamInputUrl() |
WS wss://api.bland.ai/v1/speak/stream-input |
Tools.delete() |
DELETE /v1/tools/{tool_id} |
Tools.list() |
GET /v1/tools |
Tools.get() |
GET /v1/tools/{tool_id} |
Tools.create() |
POST /v1/tools |
Tools.update() |
POST /v1/tools/{tool_id} |
TranslationSessions.end() |
DELETE /v1/translation/sessions/{session_id} |
TranslationSessions.get() |
GET /v1/translation/sessions/{session_id} |
TranslationSessions.create() |
POST /v1/translation/sessions |
Triage.deleteIssue() |
DELETE /v1/triage/issues/{id} |
Triage.detachCall() |
DELETE /v1/triage/issues/{id}/calls/{call_id} |
Triage.removeFlag() |
DELETE /v1/triage/issues/{id}/flags/{flag_id} |
Triage.removeRelation() |
DELETE /v1/triage/issues/{id}/relations/{relation_id} |
Triage.removeResource() |
DELETE /v1/triage/issues/{id}/resources/{resource_link_id} |
Triage.listAgents() |
GET /v1/triage/agents |
Triage.listCategories() |
GET /v1/triage/categories |
Triage.listFlagTypes() |
GET /v1/triage/flag-types |
Triage.listIssues() |
GET /v1/triage/issues |
Triage.getIssue() |
GET /v1/triage/issues/{id} |
Triage.listActivity() |
GET /v1/triage/issues/{id}/activity |
Triage.getAffectedContext() |
GET /v1/triage/issues/{id}/affected |
Triage.listFlags() |
GET /v1/triage/issues/{id}/flags |
Triage.listRelations() |
GET /v1/triage/issues/{id}/relations |
Triage.listResources() |
GET /v1/triage/issues/{id}/resources |
Triage.updateIssue() |
PATCH /v1/triage/issues/{id} |
Triage.createCategory() |
POST /v1/triage/categories |
Triage.createIssue() |
POST /v1/triage/issues |
Triage.createAgentSession() |
POST /v1/triage/issues/{id}/agent-sessions |
Triage.promptNorm() |
POST /v1/triage/issues/{id}/agent-sessions/{session_id}/prompts |
Triage.addComment() |
POST /v1/triage/issues/{id}/comments |
Triage.addFlag() |
POST /v1/triage/issues/{id}/flags |
Triage.linkRelatedIssue() |
POST /v1/triage/issues/{id}/relations |
Triage.attachResource() |
POST /v1/triage/issues/{id}/resources |
Triage.attachCall() |
PUT /v1/triage/issues/{id}/calls/{call_id} |
Triage.markViewed() |
PUT /v1/triage/issues/{id}/view |
V2Batches.get() |
GET /v2/batches/{batch_id} |
V2Batches.logs() |
GET /v2/batches/{batch_id}/logs |
V2Batches.list() |
GET /v2/batches/list |
V2Batches.stop() |
POST /v2/batches/{batch_id}/stop |
V2Batches.create() |
POST /v2/batches/create |
V2Tools.list() |
GET /v2/tools |
V2Tools.logs() |
GET /v2/tools/logs |
V2Tools.logStats() |
GET /v2/tools/logs/stats |
V2Tools.create() |
POST /v2/tools |
V2Tools.update() |
POST /v2/tools/{tool_id} |
Vectors.delete() |
DELETE /v1/knowledgebases/{vector_id} |
Vectors.list() |
GET /v1/knowledgebases |
Vectors.get() |
GET /v1/knowledgebases/{vector_id} |
Vectors.update() |
PATCH /v1/knowledgebases/{vector_id} |
Vectors.create() |
POST /v1/knowledgebases |
Vectors.uploadText() |
POST /v1/knowledgebases/upload |
Vectors.uploadMedia() |
POST /v1/knowledgebases/upload-media |
Voices.delete() |
DELETE /v1/voices/{id} |
Voices.deleteRating() |
DELETE /v1/voices/{id}/rate |
Voices.deleteSamples() |
DELETE /v1/voices/{id}/samples |
Voices.list() |
GET /v1/voices |
Voices.get() |
GET /v1/voices/{id} |
Voices.listSamples() |
GET /v1/voices/{id}/samples |
Voices.getSample() |
GET /v1/voices/{id}/samples/{sample_id} |
Voices.getSettings() |
GET /v1/voices/{id}/settings |
Voices.listShared() |
GET /v1/voices/shared |
Voices.updateConfig() |
PATCH /v1/voices/{id}/config |
Voices.rename() |
PATCH /v1/voices/{id}/rename |
Voices.updateSampleTranscriptions() |
PATCH /v1/voices/{id}/samples |
Voices.rate() |
POST /v1/voices/{id}/rate |
Voices.updateSettings() |
POST /v1/voices/{id}/settings |
Voices.checkNameAvailability() |
POST /v1/voices/check_name_availability |
Voices.clone() |
POST /v1/voices/clone |
Voices.addLibraryVoice() |
POST /v1/voices/library/add/{id} |
Voices.addSamples() |
POST /v1/voices/samples |
WebAgents.list() |
GET /v1/agents |
WebAgents.create() |
POST /v1/agents |
WebAgents.update() |
POST /v1/agents/{agent_id} |
WebAgents.authorize() |
POST /v1/agents/{agent_id}/authorize |
WebAgents.delete() |
POST /v1/agents/{agent_id}/delete |
Widgets.deleteCustomComponent() |
DELETE /v1/widget/custom_components/{id} |
Widgets.get() |
GET /v1/widget/{id} |
Widgets.getThreads() |
GET /v1/widget/{id}/threads |
Widgets.listCustomComponents() |
GET /v1/widget/custom_components |
Widgets.list() |
GET /v1/widgets |
Widgets.update() |
PATCH /v1/widget/{id} |
Widgets.updateCustomComponent() |
PATCH /v1/widget/custom_components/{id} |
Widgets.create() |
POST /v1/widget |
Widgets.sendLiveAgentMessage() |
POST /v1/widget/{id}/threads/{thread_id}/webhook |
Widgets.createCustomComponent() |
POST /v1/widget/custom_components |
License
MIT