---
title: Bland API Integration on Truto
slug: bland
category: Voice
canonical: "https://truto.one/integrations/detail/bland/"
---

# Bland API Integration on Truto



**Category:** Voice  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 133 tools for Bland that AI agents can call directly.

- **bland_calls_send_simple_pathway** — Send a call using a conversational pathway in Bland AI. The phone number is dialed and the specified pathway guides the conversation. Returns: status, call_id. Required: phone_number, pathway_id. Country code defaults to +1 if not specified; use E.164 format for best results.
- **bland_calls_analyze** — Analyze a completed call with AI in Bland AI using a goal and a set of questions. Returns: status, message, answers, credits_used, metadata. Required: call_id, goal, questions. Each question is an array of [question_text, expected_answer_type]; unanswerable questions default to null.
- **bland_calls_stop** — Stop an active call in Bland AI by call_id. Returns: status, message. Required: call_id.
- **bland_calls_listen** — Start a live listen session for an active call in Bland AI, returning a WebSocket URL for real-time audio streaming. Returns: status, data, errors. Required: call_id. Live listen must be enabled in organization preferences and the call must be in active status.
- **bland_calls_stop_all_active** — Stop all active calls in Bland AI for the authenticated organization. Returns: status, message, num_calls. The operation is asynchronous and may take some time to complete.
- **bland_calls_transfer_active** — Transfer an active Bland call to a different phone number while the call is in progress. Returns: data, errors. Required: call_id, transfer_number. Only calls in queue_status "started" are eligible.
- **list_all_bland_calls** — List Bland calls with optional filtering by date range, phone number, status, batch, and campaign. Returns: call_id, created_at, call_length, to, from, completed, queue_status, error_message, answered_by, batch_id.
- **bland_calls_list_active** — List all currently active (queued and in-progress) Bland calls. Returns: call_id, user_id, from, to, objective, pathway_id, start_time, international, status, timestamp.
- **get_single_bland_call_by_id** — Get detailed information, metadata, and transcripts for a specific Bland call by id. Returns the full call object including call_id, to, from, status, transcripts, summary, created_at, and price. Required: id.
- **bland_calls_get_event_stream** — Get the stream of events that occurred during a specific Bland call. Returns: level, message, category, call_id, timestamp. Required: call_id.
- **bland_calls_get_recording** — Retrieve the audio recording stream for a Bland call by call_id. Returns: status, message. The audio format defaults to WAV. Required: call_id.
- **bland_calls_get_corrected_transcript** — Get the corrected transcript from a Bland call's recording with enhanced speaker diarization, speaker labels, and confidence scores. Returns: corrected, status, message, aligned, original. Required: call_id. The aligned field is deprecated; use corrected instead.
- **bland_calls_get_transcript_stream_token** — Generate a short-lived WebSocket URL for streaming a Bland call's post-transfer transcript. Returns: data, errors. Required: call_id. The call must have been created with include_post_transfer_transcript set to true. The URL credential expires in 5 minutes.
- **list_all_bland_postcall_webhooks** — List post call webhooks in Bland. Returns: call_id, payload, url, user_id, created_at, metadata.
- **create_a_bland_postcall_webhook** — Create and send post call webhooks for one or more calls in Bland. Returns: metadata. Required: call_ids, webhook_url. Webhooks are sent immediately; returns an error if a call already has a webhook configured.
- **bland_postcall_webhooks_resend** — Resend post call webhooks for one or more calls in Bland. Returns: metadata. Required: call_ids. Can only resend webhooks that were previously sent when calls completed; webhooks are re-sent to the same URL.
- **bland_account_get_details** — Get the authenticated account's details in Bland, including account status, billing balance, and total call count. Returns: status, billing, total_calls.
- **list_all_bland_voices** — List all voices available to your Bland account, including curated defaults, cloned voices, and library additions. Returns: id, name, description, public, tags, user_id, voice_id, service, finetuned, is_creator_voice, ratings, total_ratings, average_rating, my_rating, creator_display_name.
- **get_single_bland_voice_by_id** — Get a single Bland voice by id (accepts UUID or curated voice name). Returns: id, status, message. Required: id.
- **bland_voices_get_settings** — Get synthesis defaults and valid tuning ranges for a Bland voice you own. Returns: consistency, expressiveness, service, limits, boost_language_consistency. Required: voice_id.
- **bland_voices_update_settings** — Update synthesis defaults on a Bland voice you own — set consistency, expressiveness, or boost_language_consistency. Returns: consistency, expressiveness, service, boost_language_consistency. Required: voice_id. At least one body field must be provided.
- **bland_voices_rename** — Rename a voice clone in your Bland library. Returns: name, voice_id. Required: voice_id, name. Only org-owned voices can be renamed; default and shared voices return 403. Name must be 1-30 characters and unique within your library.
- **bland_voices_rate** — Rate a voice in the Bland library with a 1-5 star rating. Returns: status, total_ratings, average_rating. Required: voice_id, rating. Each caller can have at most one active rating per voice; sending a new rating overwrites the previous one.
- **delete_a_bland_voice_by_id** — Soft-delete a voice from your Bland library. Returns: status, message. Required: id. Only org-owned voices can be deleted; default, unadded public-library, and other-org voices return 400.
- **bland_voices_check_name_availability** — Check whether a proposed voice name is available in your Bland org's library before cloning. Returns: status, result, message. Required: name. Names are scoped per org and case-insensitive.
- **bland_voices_list_shared** — List publicly-shared voices in the Bland library catalog for discovery and voice-picker UIs. Returns: id, name, description, service, is_creator_voice, ratings, rating_count, rating_avg, trending_score, tags, created_at, public, creator_display_name, creator_fee_cents_per_1k, creator_fee_cents_per_10k.
- **bland_voices_add_library** — Add a shared library voice from the Bland voice library to your org. Returns: status, message, voice. Required: add_id. Throttled to 30 add operations per minute per org.
- **bland_voices_clone** — Clone a voice in Bland from one or more audio samples using the BTTS V3 (default) or V2 engine. Returns: voice_id, name. Required: name, audio_samples. Each engine requires exactly 1 audio file (~10 seconds, max 10 MB). gender accepts male or female.
- **bland_voices_bulk_update** — Update default consistency, expressiveness, or boost config on a Bland voice clone. Returns: status, message, voice. Required: voice_id.
- **bland_tts_speak** — Synthesize text into a WAV audio file using a Bland TTS voice in Bland. Deprecated — new integrations should use Synthesize Speech (v2). Set stream: true to receive audio as a chunked response. Returns binary WAV audio (Content-Type: audio/x-wav) with x-latency and x-cost headers. Required: text, voice_id.
- **bland_tts_stream** — Stream synthesized speech audio to the client as it is generated using Transfer-Encoding: chunked in Bland. Deprecated — new integrations should use Synthesize Speech (v2). Optimized for low time-to-first-byte (live previews, voice assistants, IVRs). Returns chunked binary WAV audio (Content-Type: audio/x-wav) with a placeholder WAV header followed by PCM16 data. Required: text, voice_id.
- **bland_tts_mint_stream_token** — Mint a short-lived JWT scoped to your Bland account for browser clients to open the Stream Speech WebSocket without exposing the long-lived API key. Deprecated — new integrations should use Synthesize Speech (v2). Returns: data, errors. Tokens are valid for 5 minutes.
- **list_all_bland_tts_generations** — List TTS generations in Bland. Returns: id, org_id, user_id, text, voice_id, output_format, latency_ms, cost, created_at. Optional filter: voice_id.
- **get_single_bland_tts_generation_by_id** — Get a single TTS generation in Bland by id. Returns: id, org_id, user_id, text, voice_id, output_format, audio_data, latency_ms, cost, created_at. Required: id. Pass format=audio to receive raw WAV binary instead of metadata JSON.
- **list_all_bland_tts_models** — List Bland TTS models available for synthesis and voice cloning. Returns: model_id, display_name, description, sample_rates, max_characters, can_clone, languages, is_recommended. Results are cached for up to 5 minutes.
- **list_all_bland_voice_samples** — List training samples attached to a Bland voice clone. Returns: id, voice_id, transcription, duration_seconds, audio_data, created_at. Required: voice_id. Only org-owned voices return samples; default voices return an error and V2/V3 voices return an empty array.
- **bland_voice_samples_add** — Append audio training samples to a Bland voice clone, retraining the voice on the expanded sample set. Returns: status, samples. Required: voice_id, audio_samples. Only BTTS V1 voices accept additional samples (max 5 total); V2 and V3 voices do not.
- **get_single_bland_voice_sample_by_id** — Get a single training sample for a Bland voice clone as raw WAV audio by default, or JSON metadata with base64 audio when format is json. Returns: id, voice_id, transcription, duration_seconds, audio_data, created_at. Required: voice_id, id.
- **bland_voice_samples_bulk_update** — Update transcribed text for one or more training samples on a Bland voice clone. Returns: samples. Required: voice_id, samples.
- **bland_voice_samples_bulk_delete** — Remove training samples from a Bland voice clone and retrain against the remaining samples. Returns: status, samples. Required: id, sample_ids. Removing all samples makes the voice unusable for synthesis.
- **list_all_bland_pathways** — List all conversational pathways in Bland. Returns: name, description, nodes, edges.
- **get_single_bland_pathway_by_id** — Get a single conversational pathway in Bland by id. Returns: name, description, nodes, edges. Required: id.
- **bland_pathways_get_session_token** — Get a pathway session token in Bland for pathway chat access. The token expires after 1 hour. Returns: token, expires_at.
- **create_a_bland_pathway** — Create a new conversational pathway in Bland. Returns: status, pathway_id. Required: name.
- **update_a_bland_pathway_by_id** — Update a conversational pathway's fields in Bland by id, including name, description, nodes, and edges. Returns: status, message, pathway_data. Required: id.
- **delete_a_bland_pathway_by_id** — Delete a Bland pathway by id. Returns: status, message. Required: id.
- **bland_pathways_generate** — Generate a Bland pathway from a prompt. Queues generation asynchronously and returns a jobId for polling via the generation status endpoint. Returns: jobId. Required: input_prompt. Prompt must be at least 100 characters and 8000 or fewer for non-enterprise organizations.
- **bland_pathways_get_generation_status** — Get the status of a Bland pathway generation job. Returns: ready, pathway_id, error. Required: statu_id. Poll until ready is true; pathway_id is present on success, error is present on failure.
- **create_a_bland_pathway_chat** — Create a new pathway chat instance in Bland for sending and receiving messages. Returns: chat_id, message, variables. Required: pathway_id.
- **bland_pathway_chat_send_message** — Send a message to an existing pathway chat in Bland. Returns: chat_id, assistant_responses, current_node_id, current_node_name, chat_history, pathway_id, pathway_version, use_candidate_model, variables, completed. Required: chat_id.
- **bland_pathway_chat_get_history** — Get the conversation history for a pathway chat in Bland. Returns an array of message objects, each containing role and content. Required: chat_id.
- **list_all_bland_pathway_versions** — List all versions of a specific Bland pathway. Returns: id, version_number, created_at, name, is_latest. Required: pathway_id.
- **get_single_bland_pathway_version_by_id** — Get a specific Bland pathway version by id. Returns: id, created_at, name, nodes, edges, version_number, is_latest. Required: pathway_id, id. Use 0 for id to retrieve the live pathway.
- **bland_pathway_versions_promote** — Promote a Bland pathway version to staging or production. Returns: message. Required: pathway_id, version_id. Environment defaults to production.
- **create_a_bland_pathway_version** — Create a new version of a Bland pathway with a name, nodes, and edges. Returns: created_at, id, name, version_number. Required: pathway_id, name, nodes, edges.
- **update_a_bland_pathway_version_by_id** — Update a specific Bland pathway version's name, nodes, and edges. Returns: status, message. Required: pathway_id, id, name, nodes, edges.
- **delete_a_bland_pathway_version_by_id** — Delete a specific version of a Bland pathway. Returns: status, message. Required: pathway_id, id.
- **list_all_bland_pathway_folders** — List all pathway folders in Bland. Returns: id, name, parent_folder_id. Folders can be nested via parent_folder_id.
- **bland_pathway_folders_list_pathways** — List pathways within a specific pathway folder in Bland. Returns: id, name, description, created_at. Required: folder_id.
- **create_a_bland_pathway_folder** — Create a new pathway folder in Bland. Returns: folder_id, name, parent_folder_id. Required: name.
- **delete_a_bland_pathway_folder_by_id** — Delete a pathway folder in Bland by id. Returns: folder_id. Required: id.
- **update_a_bland_pathway_folder_by_id** — Update a pathway folder in Bland by id. Returns: folder_id, name, parent_folder_id. Required: id, name.
- **bland_pathway_folders_move_pathway** — Move a pathway to a different folder or to the root level in Bland. Returns: pathway_id, old_folder_id, new_folder_id. Required: pathway_id.
- **bland_knowledge_bases_upload_file** — Upload a file to create a knowledge base in Bland for providing contextual information to AI agents. Returns: id, name, description, status, type, created_at, updated_at, file. Required: type, file. Supported formats include PDF, Word documents, and text files.
- **list_all_bland_knowledge_bases** — List all knowledge bases in your Bland organization with pagination support. Returns: id, name, description, status, type, created_at, updated_at, file. Max 100 items per page.
- **get_single_bland_knowledge_base_by_id** — Get detailed information about a specific Bland knowledge base by id, including its current status, metadata, and file information. Returns: id, name, description, status, type, created_at, updated_at, file. Required: id.
- **update_a_bland_knowledge_base_by_id** — Update the name and/or description of an existing Bland knowledge base. Only metadata is modified, not the knowledge base content. Returns: id, name, description, status, type, created_at, updated_at, file. Required: id.
- **delete_a_bland_knowledge_base_by_id** — Soft delete a Bland knowledge base by id, marking its status as DELETED. The data is retained but becomes inaccessible. Returns: success, message, knowledge_base_id. Required: id.
- **bland_knowledge_bases_discover_sitemap_urls** — Discover available URLs from a website's sitemap in Bland. Useful for finding all pages before creating a web scraping knowledge base. Returns: urls, sitemap_url. Required: url.
- **bland_knowledge_bases_chat** — Query a Bland knowledge base using natural language with conversational message history. Returns: response, context, sources. Required: messages, knowledge_base_id.
- **bland_numbers_purchase** — Purchase a new inbound phone number in Bland ($15/mo). Returns the created number object including phone_number, created_at, prompt, webhook, voice_id, max_duration, record, and reduce_latency. Provide either area_code with optional country_code, or an exact phone_number to override area_code.
- **update_a_bland_number_by_id** — Update an inbound number's agent settings and prompt in Bland. Returns: created_at, phone_number, prompt, webhook, voice_id, dynamic_data, max_duration, interruption_threshold, first_sentence, reduce_latency, transfer_phone_number, voice_settings, record, id, blocked_number, is_global, inbound_number, org_id, reason, is_active, updated_at. Required: phone_number, prompt. Setting pathway_id…
- **bland_numbers_update_label** — Update the label for an inbound phone number in Bland. Returns: message, phone_number, label. Required: phone_number, newLabel. Max label length is 150 characters; set to an empty string to clear the label.
- **list_all_bland_numbers** — List all inbound phone numbers configured for your Bland account. Returns: created_at, phone_number, prompt, webhook, voice_id, dynamic_data, max_duration, interruption_threshold, first_sentence, reduce_latency, transfer_phone_number, voice_settings, record, id, blocked_number, is_global, inbound_number, org_id, reason, is_active, updated_at.
- **get_single_bland_number_by_id** — Get settings for a specific inbound phone number in Bland. Returns: created_at, phone_number, prompt, webhook, voice_id, dynamic_data, max_duration, interruption_threshold, first_sentence, reduce_latency, transfer_phone_number, voice_settings, record. Required: phone_number.
- **bland_numbers_create_session** — Create an inbound session token in Bland AI that can be used to pass variables to inbound calls via the x-bland-session-id SIP header. Returns: token, expires_at. Required: phone_number.
- **bland_blocked_numbers_create_rules** — Create block rules in Bland to prevent specific phone numbers from reaching your inbound numbers. Returns: created_count, blocks. Required: numbers, is_global. Maximum 10 numbers per request; is_global and inbound_number are mutually exclusive.
- **bland_blocked_numbers_list_rules** — List block rules in Bland, optionally filtered by inbound number or active status. Returns: blocks, total_count, filters. If inbound_number is omitted, only global block rules are returned. active_only defaults to true.
- **bland_blocked_numbers_get_rule** — Get a single block rule in Bland by its ID. Returns: id, blocked_number, is_global, inbound_number, org_id, reason, is_active, created_at, updated_at. Required: blocked_number_id.
- **bland_blocked_numbers_delete_rule** — Delete a block rule in Bland by its ID. Returns: message, deleted_block_id. Required: blocked_number_id.
- **bland_blocked_numbers_edit_rule** — Update an existing block rule in Bland, modifying its reason or active status. Returns: id, blocked_number, is_global, inbound_number, org_id, reason, is_active, created_at, updated_at. Required: blocked_number_id. Only reason and is_active can be updated; phone number and scope are immutable after creation.
- **create_a_bland_widget** — Create a new chat/voice widget in Bland. Returns the created widget including id, pathway_id, agent_id, allowed_domains, messages_per_minute, config, webhook_url, created_at, and updated_at. Required: allowed_domains, messages_per_minute, config. Either pathway_id or agent_prompt must be provided.
- **list_all_bland_widgets** — List all widgets associated with your Bland account. Returns each widget's id, pathway_id, agent_id, agent_prompt, allowed_domains, messages_per_minute, config, webhook_url, created_at, and updated_at.
- **get_single_bland_widget_by_id** — Get a single Bland widget by id. Returns the widget object including id, pathway_id, agent_id, agent_prompt, allowed_domains, messages_per_minute, config, webhook_url, created_at, and updated_at. Required: id.
- **update_a_bland_widget_by_id** — Update an existing Bland widget by id. Returns: id, pathway_id, agent_id, allowed_domains, messages_per_minute, config, webhook_url, created_at, updated_at. Required: id. pathway_id must be defined if agent_prompt is null and vice versa.
- **bland_widgets_list_threads** — List conversation threads for a Bland widget. Returns: id, created_at, ended_at, live_agent_handoff_at, visitor_id, messages, pathway_id, agent_id, allowed_domains, messages_per_minute, config, updated_at. Required: widget_id.
- **bland_widgets_send_live_agent_message** — Send a live agent message or end a conversation in a Bland widget thread. For MESSAGE requests, returns the created message (id, content, sender_type, created_at). For END_CONVERSATION requests, returns the updated thread (id, ended_at, live_agent_handoff_at, visitor_id, language). Required: widget_id, thread_id, type.
- **list_all_bland_contacts** — List Bland contacts with pagination. Returns: id, org_id, name, metadata, created_at, updated_at, identifiers, memories, contact, created. Max 200 per page.
- **bland_contacts_find** — Find a Bland contact by phone_number, email, or external_id. Returns: id, org_id, name, metadata, created_at, updated_at, identifiers, memories, contact, created. At least one of phone_number, email, or external_id must be provided.
- **get_single_bland_contact_by_id** — Get a single Bland contact by id. Returns: id, org_id, name, metadata, created_at, updated_at, identifiers, memories. Required: id.
- **bland_contacts_resolve** — Find or create a Bland contact by identifiers, optionally scoping memory to a persona or agent. Returns: contact, created. At least one of phone_number, email, or external_id must be provided.
- **update_a_bland_contact_by_id** — Update a Bland contact's name, email, external_id, or metadata by id. Returns: id, org_id, name, metadata, created_at, updated_at. Required: id.
- **bland_contacts_merge** — Merge a duplicate contact into a primary contact in Bland, transferring all calls, SMS conversations, and memory data from the duplicate to the primary. Returns: id, org_id, name, metadata, created_at, updated_at. Required: primary_contact_id, duplicate_contact_id. Cannot merge a contact with itself or contacts from different organizations.
- **bland_memory_create_contact_memory** — Create or retrieve a contact memory in Bland AI — if a memory already exists for the contact, the existing record is returned instead. Returns the memory object (id, org_id, contact_id, summary, facts, recent_messages, open_items, memory_history, created_at, updated_at) and a created flag. Required: contact_id. Either persona_id or agent_number must be provided.
- **bland_memory_get_contact_memory** — Get a contact memory in Bland AI by contact_id. Returns: id, org_id, contact_id, persona_id, agent_number, summary, facts, recent_messages, open_items, memory_history, created_at, updated_at, memory, created. Required: contact_id.
- **bland_memory_list_messages** — List recent messages for a contact memory in Bland AI. Returns: memory, created. Required: contact_id.
- **bland_memory_update_facts** — Update structured facts for a contact memory in Bland AI. New keys are added and existing keys are updated. Returns: id, org_id, contact_id, persona_id, agent_number, summary, facts, recent_messages, open_items, memory_history, created_at, updated_at, memory, created. Required: contact_id, facts.
- **bland_memory_get_context** — Get the memory context for a contact in Bland, including recent cross-channel messages, a rolling summary, contact facts, extracted entities, and open items. Returns: contact_id, recentMessages, summary, contactFacts, entities, openItems. Required: contact_id. Either persona_id or agent_number must also be provided.
- **bland_memory_get_changes** — Get memory change history for a call or SMS conversation in Bland, showing the initial memory state, changes made during the interaction, and a historical record of updates. Returns: initial_memory, changes, memory_history, memory, created. Required: one of call_id or conversation_id.
- **bland_memory_reset** — Permanently reset all memory data (recent messages, summary, facts, entities) for a contact/persona pair in Bland. This action is irreversible. Returns: success. Required: contact_id. Either persona_id or agent_number must also be provided.
- **bland_memory_enable** — Enable or disable memory for a pathway or persona in Bland, automatically refreshing entity schemas when enabled. Returns: message. Required: memory_enabled. Exactly one of pathway_id (with version_number) or persona_id (with version_id) must be provided.
- **bland_memory_bulk_update** — Update the conversation summary for a contact memory in Bland AI. The new summary replaces the existing one. Returns: id, org_id, contact_id, persona_id, agent_number, summary, summary_updated_at, facts, recent_messages, open_items, memory_history, created_at, updated_at, memory, created. Required: contact_id, summary.
- **list_all_bland_tools** — List custom tools in Bland. Returns each tool with tool_id, label, tool (configuration object with name, description, url, method, body, input_schema, response, timeout), and a public flag.
- **get_single_bland_tool_by_id** — Get a single custom tool by id in Bland. Returns: tool_id, label, tool, public. Required: id.
- **create_a_bland_tool** — Create a custom tool in Bland. Returns: status, tool_id. Required: name, description, url.
- **update_a_bland_tool_by_id** — Update an existing custom tool by id in Bland. Returns: status, tool_id. Required: id.
- **delete_a_bland_tool_by_id** — Delete a custom tool by id in Bland. Returns: status, message. Required: id.
- **list_all_bland_widget_custom_components** — List Bland widget custom components. Returns: id, org_id, widget_id, pathway_id, pathway_node, width, height, variables, iframe_url, created_at, updated_at.
- **create_a_bland_widget_custom_component** — Create a Bland widget custom component. Returns: id, created_at, updated_at. Required: widget_id, pathway_id, pathway_node, width, height, variables, iframe_url.
- **update_a_bland_widget_custom_component_by_id** — Update a Bland widget custom component by id. Returns: id, org_id, widget_id, pathway_id, pathway_node, width, height, variables, iframe_url, created_at, updated_at. Required: id.
- **delete_a_bland_widget_custom_component_by_id** — Delete a Bland widget custom component by id. Returns an empty 204 response on success. Required: id.
- **bland_accounts_create_encrypted_key** — Create an encrypted key in Bland for BYOT (Bring Your Own Twilio) integration. The generated key can be passed as the `encrypted_key` header on call endpoints to send calls from your own Twilio account. Returns the created encrypted key object.
- **list_all_bland_personas** — List all personas in your Bland organization. Returns: id, name, role, description, tags, image_url, created_at, updated_at, deleted_at, user_id, current_production_version_id, current_draft_version_id, inbound_numbers, current_production_version, current_draft_version. Max 100 per page.
- **get_single_bland_persona_by_id** — Get a single Bland persona by id. Returns: id, created_at, updated_at, deleted_at, success, message. Required: id.
- **create_a_bland_persona** — Create a new persona in Bland with optional call configuration, prompts, tools, pathway conditions, and knowledge base attachments. Returns: id, name, role, description, tags, image_url, created_at, updated_at, deleted_at, user_id, current_production_version_id, current_draft_version_id, current_production_version, current_draft_version. Required: name.
- **delete_a_bland_persona_by_id** — Delete a Bland persona by id. Returns: success, message. Required: id. A persona currently in use by phone numbers cannot be deleted until it is removed from those numbers.
- **list_all_bland_persona_versions** — List all versions of a Bland AI persona, ordered by version number (newest first). Returns: id, persona_id, version_type, version_number, orchestration_prompt, personality_prompt, pathway_conditions, kb_ids, call_config, default_tools, promoted_from_version_id, promoted_at, promoted_by, created_at, updated_at. Required: persona_id.
- **get_single_bland_persona_version_by_id** — Get a specific version of a Bland AI persona by id. Returns: id, persona_id, version_type, version_number, orchestration_prompt, personality_prompt, pathway_conditions, kb_ids, call_config, default_tools, promoted_from_version_id, promoted_at, promoted_by, created_at, updated_at. Required: persona_id, id.
- **list_all_bland_prompts** — List all prompts in Bland. Returns: id, prompt, name, last_updated.
- **get_single_bland_prompt_by_id** — Get a single prompt by id in Bland. Returns: id, prompt, name, last_updated. Required: id.
- **create_a_bland_prompt** — Create a new prompt in Bland. Returns: id, prompt, name. Required: prompt.
- **list_all_bland_sms_numbers** — List all SMS-enabled phone numbers and their inbound SMS configurations in Bland. Returns: phone_number, sms_config, conversation_count. SMS is only available on Enterprise plans.
- **list_all_bland_sms_conversations** — List SMS conversations in Bland with optional sorting and filtering. Returns: id, created_at, updated_at, message.
- **get_single_bland_sms_conversation_by_id** — Get a single SMS conversation by id in Bland, including full message history and disposition logs. Returns: id, created_at, updated_at, message. Required: id.
- **bland_sms_conversations_delete_messages** — Delete specific messages from an SMS conversation in Bland by message ID. Returns: message, deleted_count. Required: id, message_ids.
- **bland_sms_conversations_get_webhook** — Get the post-conversation webhook data for an SMS conversation in Bland. Returns: conversation_id, url, payload, created_at, user_id, metadata. Required: conversation_id.
- **bland_sms_conversations_bulk_delete** — Delete an SMS conversation and all associated messages in Bland. Returns: message. Required: id.
- **bland_sip_get_config** — Get SIP trunk configuration for a phone number in Bland. Returns inbound and outbound configuration objects, each including number, id, org_id, direction, sip_endpoint, options, headers, created_at, and updated_at. Required: phone_number (E.164 format).
- **bland_sip_list_numbers** — List SIP-provisioned phone numbers in Bland. Returns: sip_endpoint, inbound, outbound.
- **bland_sip_get_calls** — Get SIP call logs for a phone number in Bland. Returns call records including call_id, direction, from, to, status, sip_code, duration_seconds, started_at, ended_at, and source_ip. Required: phone_number (E.164 format).
- **list_all_bland_audit_logs** — List audit log events for your Bland organization, ordered newest first. Returns: id, org_id, actor_id, event_type, resource_type, resource_id, metadata, created_at. Audit logs are an enterprise feature not available on all accounts.
- **bland_organizations_list_members** — List members of an organization in Bland. Returns: org_id, user_id, permissions, is_owner, is_org_creator, joined_at, first_name, last_name, combo_id, org_slug, org_display_name, member_email, member_phone_number, id, org_plan, org_creation_date, kyc_level, placement_group, is_deleted, is_stripe_overdue, is_suspended, org_rate_limit, org_type, entitlements, preferences.
- **list_all_bland_organizations** — List the Bland organizations the authenticated user belongs to. Takes no parameters. Returns an array of Organization objects with: id, org_slug, org_display_name, org_image_url, org_plan, org_creation_date, kyc_level, placement_group, is_deleted, is_stripe_overdue, is_suspended, org_rate_limit, org_type, entitlements, preferences.

## How it works

1. **Link your customer's Bland account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Bland.** The Proxy API is a 1-to-1 mapping of the Bland API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Speed-to-lead outbound dialing for vertical CRMs** — Let your CRM customers auto-dial new inbound leads within seconds using Bland's AI voice agents. Trigger calls on lead creation, pass dynamic variables into a pathway, and sync qualification data back to the record.
- **AI receptionist for clinic and field-service platforms** — Give your SMB customers a 24/7 inbound voice agent that books, cancels, and reschedules appointments against your platform's calendar. Purchase numbers, attach personas, and wire custom tools to your own APIs.
- **Automated post-call CRM data entry** — Turn every call into structured records by running Bland's call analysis against completed conversations and mapping typed answers to your platform's custom fields. Eliminate manual note-taking for sales and support teams.
- **Voice channel for helpdesk and ticketing SaaS** — Add a Tier 1 voice triage layer that resolves common issues using a knowledge base synced from your help center, then hands off to a human agent with full transcript context when needed.
- **White-labeled voice agents for agency platforms** — Let agencies and multi-tenant SaaS provision branded personas and cloned voices per end-customer, so each workspace gets a differentiated AI caller identity managed from your product.

## What you can build

- **One-click Bland account connect** — Let your users connect their Bland workspace through Truto's managed auth so your app can dispatch calls and read call data on their behalf.
- **Event-driven outbound call dispatcher** — Fire calls from any workflow trigger by sending a phone number and dynamic pathway variables to Bland's simple pathway endpoint.
- **Structured call outcome sync** — Run question-and-answer analysis against completed calls and write typed results, corrected transcripts, and recordings into your contact or deal timeline.
- **Post-call webhook pipeline** — Register post-call webhooks per customer, ingest completion events into your platform, and replay missed deliveries when your endpoint recovers.
- **Live call monitoring and transfer** — Ship a supervisor view that lists active calls, streams live audio via a mint stream token, and lets managers transfer the AI call to a human rep mid-conversation.
- **Contact memory hydration from your database** — Resolve callers to Bland contacts and push structured facts (tier, open tickets, deal stage) so the AI has full CRM context before it speaks.

## FAQs

### How do end users authenticate their Bland account?

Bland uses API key authentication. Through Truto, your users paste their Bland API key once during connection setup; Truto securely stores and injects the credential on every request so you never handle raw keys.

### Can I initiate outbound calls with dynamic per-call variables?

Yes. Use the send-simple-pathway operation to trigger a call with the destination phone number plus any variables your pathway expects (names, addresses, order IDs). Bland interpolates them into the agent's script at runtime.

### How do I get structured data out of a call for CRM sync?

After a call completes, invoke the call analyze operation with an array of questions and expected answer types. Bland returns typed JSON you can map directly to custom fields, plus you can fetch the corrected transcript and recording for attachment.

### How do I know when a call ends?

Register a post-call webhook per Bland account so completion events are pushed to your endpoint. Truto also lets you list existing webhooks and resend missed deliveries if your receiver was down.

### Can I let the AI agent read and write data in my SaaS during a call?

Yes. Provision custom tools in the user's Bland account that point to your platform's REST endpoints. The agent can invoke them mid-call to check availability, create bookings, or update records in real time.

### Can I white-label the voice and persona per customer?

Yes. You can create personas, clone voices, upload voice samples, and manage voice settings per Bland account, so each of your tenants can ship a branded AI agent with its own identity.

### Does the integration support inbound numbers and SIP handoff?

Yes. You can purchase and label numbers, list SIP configuration and numbers, and transfer active calls to a human agent's SIP endpoint when the AI detects a handoff condition.

## Related reading

- [Connect Bland to Claude: Sync Voice Workflows and Agent Memories](https://truto.one/blog/connect-bland-to-claude-sync-voice-workflows-and-agent-memories/) — Learn how to connect Bland to claude using Truto. Step-by-step guide to tool calling, API quirks, and autonomous workflows.
- [Connect Bland to ChatGPT: Orchestrate AI Phone Calls and Pathways via MCP](https://truto.one/blog/connect-bland-to-chatgpt-orchestrate-ai-phone-calls-and-pathways/) — Learn how to securely connect Bland AI to ChatGPT using a managed MCP server. Automate outbound calls, analyze conversational pathways, and execute voice workflows.
- [Connect Bland to AI Agents: Unified Phone, SMS & Voice Tools](https://truto.one/blog/connect-bland-to-ai-agents-unified-phone-sms-and-voice-tools/) — Learn how to connect Bland to AI agents using Truto's unified tools. Build autonomous workflows that execute calls, clone voices, and manage SMS without custom API code.
