Voice
Bland
API integration
Ship Voice features without building the integration. Full Bland API access via Proxy and 130+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with Bland
Common scenarios for SaaS companies building Bland integrations for their customers.
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
Ship these features with Truto + Bland
Concrete product features your team can ship faster by leveraging Truto’s Bland integration instead of building from scratch.
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.
SuperAI
Bland AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
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.
Why Truto
Why use Truto’s MCP server for Bland
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with Bland in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Bland account
Use Truto’s frontend SDK to connect your customer’s Bland account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Bland
Truto’s Proxy API is a 1-to-1 mapping of the Bland API. You call us, we call Bland, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Bland’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Bland on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
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.
From the Blog
Bland integration guides
Deep dives, architecture guides, and practical tutorials for building Bland integrations.
Bland
Get Bland integrated into your app
Our team understands what it takes to make a Bland integration successful. A short, crisp 30 minute call with folks who understand the problem.