# Mihu API Documentation ## Docs - [Assign a Facebook page (Messenger) to an agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/assign-a-facebook-page-messenger-to-an-agent.md): Assigns a connected Facebook page to the agent for Messenger conversations. Use this before routing Messenger messages to the agent. The page must already be connected to your account. - [Assign a WhatsApp Calling number to an agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/assign-a-whatsapp-calling-number-to-an-agent.md): Assigns a WhatsApp Business number to the agent for WhatsApp Calling. Use this when the agent should place or receive WhatsApp voice calls through an already connected number. Calling must be enabled on the number, and the agent is also assigned for WhatsApp messaging. - [Assign a WhatsApp number to an agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/assign-a-whatsapp-number-to-an-agent.md): Assigns a connected WhatsApp Business number to the agent for WhatsApp messaging. Use this before sending WhatsApp template tasks or letting the agent answer WhatsApp conversations. The WhatsApp number must already be connected to your account. - [Assign an Instagram account to an agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/assign-an-instagram-account-to-an-agent.md): Assigns a connected Instagram business account to the agent. Use this before routing Instagram direct messages to the agent. The Instagram account must already be connected to your account. - [Assign an SMS phone number to an agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/assign-an-sms-phone-number-to-an-agent.md): Assigns one owned phone number to the agent for SMS conversations. Use this after purchasing or importing an SMS-capable number and before sending SMS tasks or receiving SMS replies with this agent. Any existing SMS assignment for the agent is replaced. - [Unbind the Instagram channel from this agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/unbind-the-instagram-channel-from-this-agent.md): Removes the agent's Instagram binding. Use this when Instagram messages should stop routing to this agent. The Instagram account stays connected to your account and can be assigned again later. - [Unbind the Messenger channel from this agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/unbind-the-messenger-channel-from-this-agent.md): Removes the agent's Messenger binding. Use this when Facebook page messages should stop routing to this agent. The page stays connected to your account and can be assigned again later. - [Unbind the SMS channel from this agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/unbind-the-sms-channel-from-this-agent.md): Removes the agent's SMS channel binding. Use this when the agent should stop handling SMS on its current number. The phone number stays in your account and can be assigned to another agent later. - [Unbind the WhatsApp channel from this agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/unbind-the-whatsapp-channel-from-this-agent.md): Removes the agent's WhatsApp messaging binding. Use this when the agent should no longer answer or send WhatsApp messages through that number. The WhatsApp number stays connected to your account. - [Unbind WhatsApp Calling from this agent](https://developers.mihu.ai/api-reference/agent-channel-bindings/unbind-whatsapp-calling-from-this-agent.md): Removes the agent's WhatsApp Calling binding while keeping WhatsApp messaging unchanged. Use this when the number should still send and receive WhatsApp messages but should no longer route WhatsApp voice calls to this agent. - [Add a single guideline](https://developers.mihu.ai/api-reference/agents/add-a-single-guideline.md): Adds one guideline to the agent without changing existing guidelines. Use guidelines for concise behavior rules such as tone, compliance boundaries, or things the agent should always or never do. - [Add a single note](https://developers.mihu.ai/api-reference/agents/add-a-single-note.md): Adds one note to the agent without changing existing notes. Use notes for factual reference material the agent should remember during conversations, such as policy snippets, product facts, or business context. - [Add a single procedure (with optional steps)](https://developers.mihu.ai/api-reference/agents/add-a-single-procedure-with-optional-steps.md): Adds one procedure to the agent without replacing existing procedures. Use procedures for ordered workflows the agent should follow, such as qualification, troubleshooting, or booking flows. Include steps when the procedure needs explicit sequence. - [Add a single training data row](https://developers.mihu.ai/api-reference/agents/add-a-single-training-data-row.md): Adds one training row to the agent without changing existing training. Use training rows to provide examples, expected responses, or intent-specific reference material that improves runtime answers. - [Add a webhook to this agent](https://developers.mihu.ai/api-reference/agents/add-a-webhook-to-this-agent.md): Creates a webhook subscription for an agent. Use this to receive event notifications such as conversation updates, evaluations, or intent calls. Provide the destination URL and event list. Returns 409 webhook_limit_reached if the agent already has 5 webhooks. - [Channels and phone numbers for an agent](https://developers.mihu.ai/api-reference/agents/channels-and-phone-numbers-for-an-agent.md): Lists every phone number this agent answers on, with the channels (call, SMS, WhatsApp) the agent serves on each number. The outer `channels` array is the union across all of the agent's numbers — handy for showing badges in a list view. - [Create an agent](https://developers.mihu.ai/api-reference/agents/create-an-agent.md): Creates a new AI agent. Provide as much of the structured shape as you can in one call — a fully-formed agent at creation time has dramatically better runtime behavior than a thin agent that gets configured incrementally. A high-quality agent typically includes: (1) identity (name, company_name, rol… - [Create an intent](https://developers.mihu.ai/api-reference/agents/create-an-intent.md): Creates a custom intent for an agent. Use intents when the agent should recognize a user goal and optionally collect parameters or call a webhook. Provide a clear description of when the intent should trigger and define parameters for any values the agent must collect. - [Delete a single guideline](https://developers.mihu.ai/api-reference/agents/delete-a-single-guideline.md): Deletes one guideline from the agent. Use this when a behavior rule no longer applies. Other guidelines are not changed. - [Delete a single note](https://developers.mihu.ai/api-reference/agents/delete-a-single-note.md): Deletes one note from the agent. Use this when a reference fact is outdated or should no longer be available to the agent. Other notes are not changed. - [Delete a single procedure (and its steps)](https://developers.mihu.ai/api-reference/agents/delete-a-single-procedure-and-its-steps.md): Deletes one procedure and its steps from the agent. Use this when the workflow is obsolete or should no longer guide conversations. Other procedures remain unchanged. - [Delete a single training row](https://developers.mihu.ai/api-reference/agents/delete-a-single-training-row.md): Deletes one training row from the agent. Use this when an example or response is outdated, wrong, or no longer relevant. Other training rows are not changed. - [Delete a webhook](https://developers.mihu.ai/api-reference/agents/delete-a-webhook.md): Deletes one webhook from the agent. Use this to stop sending event notifications to that destination. Other webhooks on the same agent are not changed. - [Delete an intent](https://developers.mihu.ai/api-reference/agents/delete-an-intent.md): Deletes a custom intent and its parameters. Use this when an action or integration should no longer be available to the agent. System intents cannot be deleted. - [Get all voice settings](https://developers.mihu.ai/api-reference/agents/get-all-voice-settings.md): Returns the agent's full voice settings block: interaction messages, interruption tuning, voice profile, voice advanced tuning, call behavior, compliance, and phone normalizers. Identical to the `settings.voice` object inside GET /api/v1/agents/{uuid}. - [Get call behavior](https://developers.mihu.ai/api-reference/agents/get-call-behavior.md): Returns recording, background sound (on/off + ambience + volume), noise cancellation, silence timeout, and max call duration settings. - [Get compliance settings](https://developers.mihu.ai/api-reference/agents/get-compliance-settings.md): Returns the EU GDPR and HIPAA compliance flags for the voice agent. - [Get interaction settings](https://developers.mihu.ai/api-reference/agents/get-interaction-settings.md): Returns the conversation opening/closing messages and silence prompts used by the voice agent. - [Get interruption settings](https://developers.mihu.ai/api-reference/agents/get-interruption-settings.md): Returns the interruption mode and the advance-mode overrides (endpointing delays, interruption windows, false-interruption handling). The advanced block is always populated, normalized to the active mode. - [Get one agent](https://developers.mihu.ai/api-reference/agents/get-one-agent.md): Returns the full API representation of one agent, including profile fields, voice/text settings, guidelines, notes, procedures, training, schedules, routing rules, guard rules, intents, webhooks, and channel bindings. Use this before updating the agent or before wiring the agent into a campaign or c… - [Get one intent](https://developers.mihu.ai/api-reference/agents/get-one-intent.md): Returns one intent with its trigger description, confidence threshold, webhook configuration, and parameters. Use this before updating an intent or inspecting the tool schema the agent can call. - [Get one webhook](https://developers.mihu.ai/api-reference/agents/get-one-webhook.md): Returns one agent webhook by UUID, including URL, subscribed events, active state, and whether a signing secret exists. The secret value is never returned. - [Get phone normalizers](https://developers.mihu.ai/api-reference/agents/get-phone-normalizers.md): Returns the outbound and inbound phone-number normalizer rules (default prefix, condition length, condition prefix). - [Get supported voice tuning fields](https://developers.mihu.ai/api-reference/agents/get-supported-voice-tuning-fields.md): Returns the voice tuning fields supported by the agent's currently selected voice, each with its type, bounds/options, and current value. The supported set depends on the selected voice, so always fetch this before sending a voice-advanced update. Returns an empty field list when no voice is selecte… - [Get voice profile](https://developers.mihu.ai/api-reference/agents/get-voice-profile.md): Returns the agent's spoken language and the selected voice (uuid + display name). - [List agents](https://developers.mihu.ai/api-reference/agents/list-agents.md): Returns paginated agents with their configured settings, knowledge, rules, channels, and related resources. Use this endpoint to browse agents, filter by lifecycle status, or search by name, company, or role before selecting an agent for calls, campaigns, messaging, or configuration updates. - [List intents for an agent](https://developers.mihu.ai/api-reference/agents/list-intents-for-an-agent.md): Returns all intents configured for an agent. Intents define actions or integrations the agent can trigger when a conversation matches a goal, such as booking an appointment, collecting details, or calling a webhook. - [List webhooks for an agent](https://developers.mihu.ai/api-reference/agents/list-webhooks-for-an-agent.md): Returns webhooks configured for one agent. Use this to see which event notifications are delivered for the agent and whether each webhook is active. Each agent can have up to 5 webhooks. - [Phone numbers owned by an agent](https://developers.mihu.ai/api-reference/agents/phone-numbers-owned-by-an-agent.md): Returns the full phone-number records bound to this agent on any channel (call, SMS, WhatsApp). Same shape as /api/v1/phone-numbers, scoped to the agent. Only includes numbers in your owned inventory — for external numbers (e.g. WhatsApp Business lines), use /api/v1/agents/{uuid}/channels. - [Provision call channel for an agent](https://developers.mihu.ai/api-reference/agents/provision-call-channel-for-an-agent.md): Connects a purchased phone number to the agent's call channel and performs the required telephony provisioning. Use this after buying a number and before placing or receiving calls with the agent. The response returns the updated agent and provisioning result, including call_setting_uuid when create… - [Replace agent appointment settings and schedule assignments](https://developers.mihu.ai/api-reference/agents/replace-agent-appointment-settings-and-schedule-assignments.md): Configures which schedules an agent uses for booking and how the runtime AI should pick between them. Each entry in `schedule_assignments` should include both `name` (a short label the AI sees, e.g. 'Service Appointment') and `description` (when to use it, e.g. 'When the customer requires routine ma… - [Replace agent guidelines](https://developers.mihu.ai/api-reference/agents/replace-agent-guidelines.md): Replaces all guidelines for the agent. Guidelines are short behavioral rules that shape how the agent should respond. Use this endpoint for bulk edits or external syncs; use POST /guidelines to append one guideline without replacing the existing list. - [Replace agent notes](https://developers.mihu.ai/api-reference/agents/replace-agent-notes.md): Replaces all notes for the agent. Notes are reference facts the agent can use during conversations, such as product details, company policies, or context that does not need step-by-step structure. Use this for bulk replacement; use POST /notes for one-off additions. - [Replace agent procedures](https://developers.mihu.ai/api-reference/agents/replace-agent-procedures.md): Replaces all procedures for the agent, including their ordered steps. Procedures are multi-step instructions the agent can follow during conversations. Use this endpoint for complete procedure syncs; use POST /procedures to add one procedure without replacing the full set. - [Replace agent training data](https://developers.mihu.ai/api-reference/agents/replace-agent-training-data.md): Replaces all training rows for the agent. Training rows are examples or knowledge snippets that help the agent map customer language to appropriate responses. Use this endpoint for full training imports; use POST /training to append one row. - [Replace/sync an agent](https://developers.mihu.ai/api-reference/agents/replacesync-an-agent.md): Synchronizes the agent with the supplied payload. This has the same behavior as PATCH: scalar fields are updated, settings are merged, and included collection sections replace that section for the agent. Use this for full external sync jobs or configuration import flows. - [Soft-delete an agent](https://developers.mihu.ai/api-reference/agents/soft-delete-an-agent.md): Soft-deletes the agent. Child records (notes, guidelines, training, intents, etc.) remain in the database for recoverability but are no longer reachable via the API. Provider-side resources (Telnyx, WhatsApp etc.) are NOT torn down — release/unbind phone numbers separately first. - [Update a single guideline](https://developers.mihu.ai/api-reference/agents/update-a-single-guideline.md): Updates one guideline on the agent. Use this to adjust a behavior rule or its ordering without replacing the full guideline list. Only supplied fields are changed. - [Update a single note](https://developers.mihu.ai/api-reference/agents/update-a-single-note.md): Updates one note on the agent. Use this for small edits to reference facts without replacing the full notes collection. Only supplied fields are changed. - [Update a single procedure (and replace its steps if provided)](https://developers.mihu.ai/api-reference/agents/update-a-single-procedure-and-replace-its-steps-if-provided.md): Updates one procedure on the agent. Use this to rename a workflow, revise its description, or replace the ordered steps that guide the agent during conversations. If a steps array is included, it replaces the procedure's existing steps; other procedures are not changed. - [Update a single training row](https://developers.mihu.ai/api-reference/agents/update-a-single-training-row.md): Updates one training row on the agent. Use this to refine an example, intent label, or response without replacing the full training set. Only supplied fields are changed. - [Update a webhook](https://developers.mihu.ai/api-reference/agents/update-a-webhook.md): Updates one agent webhook. Use this to change the destination URL, event subscriptions, signing secret, or active state. Only supplied fields are changed; sending an empty secret clears the stored secret. - [Update an agent](https://developers.mihu.ai/api-reference/agents/update-an-agent.md): Updates core agent fields, voice/text settings, and any included collection sections. Use PATCH for partial changes to the agent profile or settings. If a collection section such as notes, guidelines, procedures, training, routing_rules, or guard_rules is included, that section replaces the existing… - [Update an intent](https://developers.mihu.ai/api-reference/agents/update-an-intent.md): Updates a custom intent. Use this to change trigger wording, confidence threshold, webhook target, response handling, or collected parameters. If `parameters` is included, it replaces the full parameter list. System intents cannot be modified. - [Update call behavior](https://developers.mihu.ai/api-reference/agents/update-call-behavior.md): Partial update of recording, background sound (on/off, ambience, volume), noise cancellation, silence timeout, and max call duration. background_sound_ambience must be one of: office, call_center, lobby_ambiance, calm_office, street, restaurant, restaurant_ambience, building_lobby_ambience, bank_lob… - [Update compliance settings](https://developers.mihu.ai/api-reference/agents/update-compliance-settings.md): Partial update of the EU GDPR and HIPAA compliance flags. - [Update interaction settings](https://developers.mihu.ai/api-reference/agents/update-interaction-settings.md): Partial update of the agent's first/greeting/voicemail/end-call/silence messages. Only supplied fields are changed. - [Update interruption settings](https://developers.mihu.ai/api-reference/agents/update-interruption-settings.md): Updates the interruption mode (sensitive|balanced|never_stop|advance) and/or the advance-mode overrides. Changing the mode alone does not overwrite stored overrides — the advanced block is always read back layered over the selected mode's defaults, and only takes effect while mode is 'advance'. To c… - [Update phone normalizers](https://developers.mihu.ai/api-reference/agents/update-phone-normalizers.md): Partial update of the outbound and inbound phone-number normalizer rules. Each side accepts default_prefix, condition_length, condition_prefix. - [Update voice profile](https://developers.mihu.ai/api-reference/agents/update-voice-profile.md): Updates the spoken language and/or the selected voice. The voice is chosen by its uuid from the voice library; changing it changes which fields GET /voice-advanced returns. - [Update voice tuning](https://developers.mihu.ai/api-reference/agents/update-voice-tuning.md): Updates the voice tuning fields. The accepted fields depend on the agent's selected voice — call GET /api/v1/agents/{uuid}/voice-advanced first to learn them. A body containing fields the current voice does not support returns 422 with the supported field list. Out-of-range values are clamped. Retur… - [Aggregated call metrics for a time window (authoritative call count)](https://developers.mihu.ai/api-reference/analytics/aggregated-call-metrics-for-a-time-window-authoritative-call-count.md): Returns volume, direction split, AI vs human handling, durations (seconds), outcomes, and cost for calls within [from, to). This endpoint is the authoritative source for call counts; /api/v1/analytics/conversations totals exclude calls without a resolvable channel via conversations.call_id, so the t… - [Appointment lifecycle metrics (event-in-period semantics)](https://developers.mihu.ai/api-reference/analytics/appointment-lifecycle-metrics-event-in-period-semantics.md): Counters reflect events whose state transitioned during [from, to). created uses appointments.created_at; scheduled uses start_time; completed/cancelled use updated_at on rows in that status. by_source_channel attributes appointments via the linked conversation; appointments with no conversation app… - [Cross-channel conversation-session metrics](https://developers.mihu.ai/api-reference/analytics/cross-channel-conversation-session-metrics.md): Returns volume, voice/text split, completion/timeout/active breakdowns, evaluation coverage, average duration, messages per session, and p50/p95 latency (voice only). - [Cursor-paginated raw message export](https://developers.mihu.ai/api-reference/analytics/cursor-paginated-raw-message-export.md): Returns one row per message in [from, to). Subject to workspace policy: when ANALYTICS_MESSAGES_EXPORT=disabled the endpoint returns 403; when 'masked' the content field is replaced with '***'. Sort order is (created_at ASC, message_uuid ASC). - [Distribution of AI evaluations across sentiment, emotion, satisfaction, outcome, escalation, and knowledge gap](https://developers.mihu.ai/api-reference/analytics/distribution-of-ai-evaluations-across-sentiment-emotion-satisfaction-outcome-escalation-and-knowledge-gap.md): Returns aggregate evaluation distributions for sessions in a time range. Use this endpoint to understand conversation quality trends across sentiment, emotions, satisfaction score, outcome, human escalation, and knowledge gaps. Filter by channel, agent, or campaign and optionally include the previou… - [Intent breakdown with outcome and per-channel distribution](https://developers.mihu.ai/api-reference/analytics/intent-breakdown-with-outcome-and-per-channel-distribution.md): Returns one entry per detected intent, sorted by count desc. Each entry carries success/fail outcome counts, average confidence, and channel breakdown. - [Per-channel conversation rollup](https://developers.mihu.ai/api-reference/analytics/per-channel-conversation-rollup.md): Returns one entry per active channel with totals, direction split, durations (call-bearing channels only), and short/long buckets. duration_sec is null for non-call channels. For call-bearing channels (call, whatsapp_call), totals.conversations equals inbound + outbound from the calls table — orphan… - [Cancel an appointment request](https://developers.mihu.ai/api-reference/appointment-requests/cancel-an-appointment-request.md): Cancels a pending appointment request without creating an appointment. Use this when the requester withdraws the booking or the proposed time should no longer be considered. Only requests with pending status can be cancelled. - [Create a new appointment request](https://developers.mihu.ai/api-reference/appointment-requests/create-a-new-appointment-request.md): Creates a proposed booking for a schedule. Use this when the requested time should be reviewed before becoming a confirmed appointment. Provide an existing contact_uuid, or provide contact details so the API can find or create the contact automatically. - [Get a specific appointment request](https://developers.mihu.ai/api-reference/appointment-requests/get-a-specific-appointment-request.md): Returns one appointment request by UUID, including requested time, contact details, schedule reference, status, and notes. Use this before approving, rejecting, cancelling, or displaying the request in a scheduling workflow. - [Get available time slots for a schedule](https://developers.mihu.ai/api-reference/appointment-requests/get-available-time-slots-for-a-schedule.md): Returns available time slots for one schedule on a specific date. Use this before creating an appointment request so callers can offer valid start times based on the schedule's booking rules and existing appointments. - [Get list of appointment requests](https://developers.mihu.ai/api-reference/appointment-requests/get-list-of-appointment-requests.md): Returns appointment requests ordered for review and scheduling workflows. Use this endpoint to find pending booking requests, filter requests by schedule or date range, and decide which requests should be approved, rejected, cancelled, or converted into appointments. - [Create a new appointment](https://developers.mihu.ai/api-reference/appointments/create-a-new-appointment.md): Creates an appointment on a schedule. Use this when booking a time slot directly through the API. Provide schedule_uuid, title, start_time, and end_time; optionally attach a contact, status, notes, and custom question answers. - [Delete an appointment](https://developers.mihu.ai/api-reference/appointments/delete-an-appointment.md): Deletes an appointment by UUID. Use this when a booked time slot should be removed from the calendar. If you only need to change approval state, use POST /api/v1/appointments/{uuid}/status instead. - [Get a specific appointment](https://developers.mihu.ai/api-reference/appointments/get-a-specific-appointment.md): Returns full details for one appointment, including schedule, contact, status, notes, custom answers, and timestamps. Use this to inspect a booking before editing or changing its status. - [Get all appointments (calendar)](https://developers.mihu.ai/api-reference/appointments/get-all-appointments-calendar.md): Returns appointments ordered by start time. Use filters to build calendar views by schedule, contact, status, or date range. Each result includes schedule and contact details when available. - [Update an appointment](https://developers.mihu.ai/api-reference/appointments/update-an-appointment.md): Updates an existing appointment. Use this to reschedule, change title or notes, update custom answers, or change status. If end_time is supplied, it must be after start_time. - [Update appointment status](https://developers.mihu.ai/api-reference/appointments/update-appointment-status.md): Changes only the appointment status. Use this to approve, move back to pending, or reject an appointment without modifying the time, schedule, contact, notes, or custom answers. - [Create a new availability type](https://developers.mihu.ai/api-reference/availability-types/create-a-new-availability-type.md): Creates a reusable availability policy for schedules. Use it when multiple schedules should share the same booking duration, buffer time, approval requirement, working-hours rules, and advance-booking limits. The returned uuid can be used as availability_type_uuid when creating a schedule. - [Delete an availability type](https://developers.mihu.ai/api-reference/availability-types/delete-an-availability-type.md): Deletes an availability type by UUID. Use this only after confirming it is no longer needed by schedules. Once deleted, it is no longer available for new schedule creation. - [Get a specific availability type](https://developers.mihu.ai/api-reference/availability-types/get-a-specific-availability-type.md): Returns one availability type by UUID, including booking duration, buffers, working-hours configuration, approval behavior, and resource limits. Use this before editing a schedule or before updating the availability type itself. - [Get all availability types](https://developers.mihu.ai/api-reference/availability-types/get-all-availability-types.md): Returns every availability type in the workspace, ordered by name. Use this endpoint before creating schedules so you can choose the availability_type_uuid that controls duration, buffers, booking rules, and approval behavior. - [Update an availability type](https://developers.mihu.ai/api-reference/availability-types/update-an-availability-type.md): Updates an existing availability type. Use this to change shared booking rules for schedules that depend on this type, such as duration, buffer time, required approval, double-booking behavior, or working-hours settings. Only supplied fields are changed. - [Forward (warm-transfer) the live call to another phone number](https://developers.mihu.ai/api-reference/call-actions/forward-warm-transfer-the-live-call-to-another-phone-number.md): Transfers the active call to another E.164 phone number. Use this when the caller needs a human representative, department, or external destination. The agent announces the transfer before the call is connected to the target number. - [Hang up the live call (the agent speaks a goodbye message, then ends)](https://developers.mihu.ai/api-reference/call-actions/hang-up-the-live-call-the-agent-speaks-a-goodbye-message-then-ends.md): Ends the active call after the agent speaks a closing message. Use this for manual live-call termination or when your system has decided the conversation is complete. If no message is provided, the configured end-of-call message is used. - [Make the agent say a message in the live call](https://developers.mihu.ai/api-reference/call-actions/make-the-agent-say-a-message-in-the-live-call.md): Makes the active call agent speak a text-to-speech message immediately. Use this for live operator interventions such as a short instruction, clarification, or closing line. Set end_call_after_spoken=true when the spoken message should be followed by hangup. - [Mute the agent in the live call](https://developers.mihu.ai/api-reference/call-actions/mute-the-agent-in-the-live-call.md): Temporarily stops the agent from speaking on the active call. Use this when a human operator needs to take over, listen privately, or prevent the agent from responding while another action is happening. Call /unmute to let the agent speak again. - [Unmute the agent in the live call](https://developers.mihu.ai/api-reference/call-actions/unmute-the-agent-in-the-live-call.md): Allows the muted agent to speak again on the active call. Use this after a temporary human intervention or private listening period when the agent should resume normal conversation handling. - [Get call details by UUID](https://developers.mihu.ai/api-reference/call/get-call-details-by-uuid.md): Returns one call by UUID with its status, direction, participant details, agent/contact/campaign context, timing, recording or live-monitoring URLs when available, and provider identifiers. Use this to inspect a completed call or monitor a recent call after creation. - [Get paginated list of calls](https://developers.mihu.ai/api-reference/call/get-paginated-list-of-calls.md): Returns call records with pagination and optional filters. Use this endpoint to monitor inbound and outbound calls, review call status and duration, find calls for a contact or agent, and locate the UUID needed for detailed call inspection. - [Initiate a new call](https://developers.mihu.ai/api-reference/call/initiate-a-new-call.md): Initiates a call if the specified agent exists, has valid call settings, and the participant's phone number is provided. The call can include a custom greeting message, a prompt to guide the agent, and optional details about the participant. This endpoint is used to trigger outbound calls with speci… - [Assign or replace the rule attached to a campaign](https://developers.mihu.ai/api-reference/campaigns/assign-or-replace-the-rule-attached-to-a-campaign.md): Attaches a rule (cadence, retry interval, working hours, escalation) to the campaign. The underlying schema is many-to-many but every code path treats it as one-rule-per-campaign, so this endpoint REPLACES any previously attached rule via sync(). Important caveat: changing the rule on a running ('In… - [Attach one or more pools to a campaign](https://developers.mihu.ai/api-reference/campaigns/attach-one-or-more-pools-to-a-campaign.md): Pools are additive (not replace). UUIDs already attached are silently skipped, UUIDs that don't resolve to a pool are returned in pool_uuids_not_found. If the campaign status is 'In Process', tasks are immediately created for every Pending ContactPoolItem in the newly attached pools, and ProcessWhat… - [Create a new campaign](https://developers.mihu.ai/api-reference/campaigns/create-a-new-campaign.md): Creates the campaign shell: name, channel type, agent, status, date window, and optional message settings. Use this when you want fine-grained control over setup. After creation, attach a rule and one or more pools, then publish the campaign to schedule work. - [Delete a campaign](https://developers.mihu.ai/api-reference/campaigns/delete-a-campaign.md): Soft-deletes a campaign by UUID. Use this when the campaign should no longer appear in normal campaign lists. Historical records remain available, and already-created tasks are not automatically removed by this endpoint. - [Detach a pool from a campaign](https://developers.mihu.ai/api-reference/campaigns/detach-a-pool-from-a-campaign.md): Removes the pool↔campaign association. Side effect: cancels any scheduled/queued/pending tasks created for THIS specific pool in THIS specific campaign. Cancellation is keyed on contact_pool_item_id (stored in tasks.task_data) — so if the same contact exists in another pool also attached to this cam… - [Detach the rule from a campaign](https://developers.mihu.ai/api-reference/campaigns/detach-the-rule-from-a-campaign.md): Removes the rule association from the campaign. The rule itself is NOT deleted — it remains available to attach to other campaigns. Without a rule, future tasks fall back to system defaults (max 3 calls/day, 10 total, 09:00–18:00). Already-scheduled tasks are unaffected. - [Get campaign details](https://developers.mihu.ai/api-reference/campaigns/get-campaign-details.md): Returns one campaign by UUID, including campaign configuration, agent reference, status, date window, attached rule and related campaign data when available. Use this before updating, publishing, attaching pools, or troubleshooting scheduled outreach. - [Get paginated list of campaigns](https://developers.mihu.ai/api-reference/campaigns/get-paginated-list-of-campaigns.md): Returns campaigns ordered by creation date with optional filters for status and search text. Use this endpoint to monitor outreach programs, find draft campaigns that still need pools or rules, and review completed or archived campaigns. - [Publish (activate) a campaign — schedule tasks and start processing](https://developers.mihu.ai/api-reference/campaigns/publish-activate-a-campaign-—-schedule-tasks-and-start-processing.md): Transitions the campaign from Active/Draft/Paused/Failed to 'In Process' AND creates tasks for every pending ContactPoolItem in attached pools. The status change and task creation happen inside a single DB transaction — if task creation throws, the status flip is rolled back. For text/sms campaigns,… - [Update a campaign](https://developers.mihu.ai/api-reference/campaigns/update-a-campaign.md): Updates campaign metadata and configuration before or during its lifecycle. Use this to rename a campaign, change dates, adjust status, update the assigned agent, or modify channel-specific fields. Existing scheduled tasks are not automatically rebuilt unless a separate publish or pool operation cre… - [Bulk update analyzers](https://developers.mihu.ai/api-reference/contact-analyzers/bulk-update-analyzers.md): Updates multiple analyzers in one request. Each item uses `internal_id` to choose the analyzer and may include `update_behavior`, `analysis_goals`, and `example_values`. The request is all-or-nothing: if any row is invalid, no analyzer is changed and the response explains which row failed. - [Get a single analyzer](https://developers.mihu.ai/api-reference/contact-analyzers/get-a-single-analyzer.md): Returns one analyzer configuration by internal_id. Use this to inspect what the AI extracts, where the extracted value is applied, and whether the value is ignored, saved, or routed through approval. - [List analyzer configurations](https://developers.mihu.ai/api-reference/contact-analyzers/list-analyzer-configurations.md): Returns analyzer settings. An analyzer tells the AI what to look for in a conversation and what to do when a value is found. The `internal_id` prefix shows the analyzer type: `b_` means a built-in contact field such as `b_name`, `b_email`, or `b_phone_number`; `f_` means a custom contact field such… - [Update an analyzer configuration](https://developers.mihu.ai/api-reference/contact-analyzers/update-an-analyzer-configuration.md): Updates how one analyzer behaves. `update_behavior` controls what happens when the AI finds a value: `dont_update` ignores it, `update_if_empty` saves only if the field is empty, `ask_approval_if_existing` asks for approval when replacing an existing value, `manual_approval` always requires approval… - [Approve a pending field update](https://developers.mihu.ai/api-reference/contact-approvals/approve-a-pending-field-update.md): Approves a pending AI-suggested contact update and applies it to the target contact, custom field, or pipeline stage. Use this when a suggested value has been reviewed and should become the saved contact data. The approval history records who approved it and what changed. - [Get a single approval by uuid](https://developers.mihu.ai/api-reference/contact-approvals/get-a-single-approval-by-uuid.md): Returns one contact field approval with current value, suggested value, confidence, AI notes, status, reviewer notes, and related contact/conversation identifiers. Use this before approving, rejecting, or editing the suggestion. - [Get the history of an approval](https://developers.mihu.ai/api-reference/contact-approvals/get-the-history-of-an-approval.md): Returns paginated history for one contact field approval, newest first. Use this to audit approval, rejection, and value-change events, including reviewer notes and the values before and after each decision. - [List pending contact field approvals](https://developers.mihu.ai/api-reference/contact-approvals/list-pending-contact-field-approvals.md): Returns paginated AI-suggested contact updates. Use this queue to review values the agent extracted from conversations before applying them to contacts, custom fields, or pipeline stages. Defaults to status=Pending. - [Reject a pending field update](https://developers.mihu.ai/api-reference/contact-approvals/reject-a-pending-field-update.md): Rejects a pending AI-suggested contact update and records reviewer notes. Use this when the extracted value should not be applied to the contact, custom field, or pipeline stage. - [Soft-delete an approval](https://developers.mihu.ai/api-reference/contact-approvals/soft-delete-an-approval.md): Soft-deletes an approval suggestion without applying it to the contact. Use this to remove stale or irrelevant suggestions from the review queue while preserving audit history. - [Update the suggested value of a pending approval](https://developers.mihu.ai/api-reference/contact-approvals/update-the-suggested-value-of-a-pending-approval.md): Edits the suggested value on an approval before it is applied. Use this when the AI found the right field but the suggested value needs correction. Editing resets status to Pending and records a history entry. - [Create a new custom contact field](https://developers.mihu.ai/api-reference/contact-fields/create-a-new-custom-contact-field.md): Generates a unique snake_case `key` from the supplied `name`, appending a numeric suffix if needed. New fields are appended to the end of the list. - [Delete a custom contact field](https://developers.mihu.ai/api-reference/contact-fields/delete-a-custom-contact-field.md): Deletes a custom contact field definition by key. Use this when the field should no longer be available on contacts. Existing values for that field are no longer part of the active contact schema. - [Get a custom contact field by key](https://developers.mihu.ai/api-reference/contact-fields/get-a-custom-contact-field-by-key.md): Returns one custom contact field definition by key. Use this before updating the field, validating import payloads, or deciding which custom attributes contacts can store. - [List custom contact fields](https://developers.mihu.ai/api-reference/contact-fields/list-custom-contact-fields.md): Returns custom contact fields for the workspace. By default only active fields are returned. Use include=all when syncing field configuration, or include=inactive when reviewing fields that should no longer be used for new contact data. - [Update a custom contact field (name, is_active, etc.)](https://developers.mihu.ai/api-reference/contact-fields/update-a-custom-contact-field-name-is_active-etc.md): Updates only the fields you supply. The `key` is immutable — to use a different identifier, delete this field and create a new one. - [Create a new pipeline stage](https://developers.mihu.ai/api-reference/contact-pipeline/create-a-new-pipeline-stage.md): Creates a pipeline stage that can be assigned to contacts. Use this to add a new lifecycle step such as Lead, Qualified, Customer, or Closed. If order is omitted, the stage is appended to the end of the current stage list. - [Delete a pipeline stage](https://developers.mihu.ai/api-reference/contact-pipeline/delete-a-pipeline-stage.md): Deletes a pipeline stage and detaches it from contacts that were assigned to it. Use this only when the stage should be removed completely. To keep history while preventing new use, update is_active=false instead. - [Get a pipeline stage by uuid](https://developers.mihu.ai/api-reference/contact-pipeline/get-a-pipeline-stage-by-uuid.md): Returns one pipeline stage by UUID with its name, order, and active state. Use this before updating the stage or before assigning contacts to a specific pipeline position. - [List pipeline stages](https://developers.mihu.ai/api-reference/contact-pipeline/list-pipeline-stages.md): Returns pipeline stages ordered by their display order. By default only active stages are returned. Use include=all when syncing a full configuration list, or include=inactive when reviewing stages that are no longer used for new contacts. - [Update a pipeline stage](https://developers.mihu.ai/api-reference/contact-pipeline/update-a-pipeline-stage.md): Updates one pipeline stage. Use this to rename a stage, change its order, or mark it inactive. Only supplied fields are changed; contacts already assigned to the stage keep their association. - [Enable or disable a contact setting](https://developers.mihu.ai/api-reference/contact-settings/enable-or-disable-a-contact-setting.md): Updates one contact setting by key. Use this to enable or disable contact data behavior for the workspace. The request body only needs `is_enabled`. - [Get a contact setting by key](https://developers.mihu.ai/api-reference/contact-settings/get-a-contact-setting-by-key.md): Returns one contact setting by key, including whether it is currently enabled. Use this before toggling a setting or adapting client behavior to workspace policy. - [List contact settings](https://developers.mihu.ai/api-reference/contact-settings/list-contact-settings.md): Returns workspace-level contact settings. Use this to inspect which contact data behaviors are enabled before reading or updating contact records. - [Create a new contact tag](https://developers.mihu.ai/api-reference/contact-tags/create-a-new-contact-tag.md): Creates a reusable tag for contacts. Use tags to segment contacts for filtering, targeting, and organization. Tags can later be assigned to contacts with POST /api/v1/contacts/{uuid}/add-tag. - [Delete a tag](https://developers.mihu.ai/api-reference/contact-tags/delete-a-tag.md): Deletes one contact tag and detaches it from contacts that had it assigned. Use this when the segment should be removed completely. To keep the tag for history while preventing new use, update it as inactive instead. - [Get a tag by uuid](https://developers.mihu.ai/api-reference/contact-tags/get-a-tag-by-uuid.md): Returns one contact tag by UUID. Use this to inspect tag name, color, description, and active state before assigning it to contacts or updating it. - [List contact tags](https://developers.mihu.ai/api-reference/contact-tags/list-contact-tags.md): Returns reusable contact tags for segmentation and filtering. By default only active tags are returned. Use include=all when syncing tag configuration, or include=inactive when reviewing tags no longer available for new assignments. - [Update a tag](https://developers.mihu.ai/api-reference/contact-tags/update-a-tag.md): Updates one contact tag. Use this to rename a tag, change its color or description, or mark it inactive. Only supplied fields are changed, and existing contact assignments remain attached to the tag. - [Add a contact to the blacklist](https://developers.mihu.ai/api-reference/contacts/add-a-contact-to-the-blacklist.md): Marks the contact as Blacklisted and records the blacklist entry. If the contact is already blacklisted, the existing entry is updated. - [Assign or change the contact's current pipeline stage](https://developers.mihu.ai/api-reference/contacts/assign-or-change-the-contacts-current-pipeline-stage.md): Sets the contact's current pipeline stage. Use this for the first assignment as well as to move the contact to a different stage — both cases are handled by the same endpoint. - [Assign (or re-assign) a tag to a contact](https://developers.mihu.ai/api-reference/contacts/assign-or-re-assign-a-tag-to-a-contact.md): Assigns a tag to a contact. The operation is idempotent: if the tag is already assigned, the contact is left unchanged; if the tag was previously removed, the assignment is restored. - [Create a new contact](https://developers.mihu.ai/api-reference/contacts/create-a-new-contact.md): Creates a contact record that agents and campaigns can use for conversations, calls, SMS, WhatsApp, and segmentation. Provide profile fields such as name, email, phone number, country code, timezone, language, preferred channel, and status. The response returns the created contact with its UUID for… - [Delete a contact](https://developers.mihu.ai/api-reference/contacts/delete-a-contact.md): Soft-deletes a contact by UUID. Use this when the contact should no longer appear in normal contact lists or outreach flows. Existing historical conversations and activity records remain available for audit context. - [Get contact details](https://developers.mihu.ai/api-reference/contacts/get-contact-details.md): Returns one contact with base fields, custom fields, tags, and timestamps. Use this before updating a contact, assigning tags, changing pipeline stage, or inspecting the contact profile for outreach. Every active custom field is returned as a top-level key on the response — fields with no value for… - [Get paginated list of blacklisted contacts](https://developers.mihu.ai/api-reference/contacts/get-paginated-list-of-blacklisted-contacts.md): Returns contacts currently on the blacklist (status=Blacklisted with an active blacklist record). Supports search and pagination. - [Get paginated list of contacts](https://developers.mihu.ai/api-reference/contacts/get-paginated-list-of-contacts.md): Returns a paginated contact list with filters for search, status, contact channel, pipeline stage, campaign, tag, pool, and creation date. Use this endpoint to find contacts before adding them to pools, campaigns, listings, or conversation workflows. - [Remove a contact from the blacklist](https://developers.mihu.ai/api-reference/contacts/remove-a-contact-from-the-blacklist.md): Removes the blacklist entry and restores the contact's status to Active. Idempotent — succeeds even if the contact is not currently blacklisted. - [Remove a tag from a contact](https://developers.mihu.ai/api-reference/contacts/remove-a-tag-from-a-contact.md): Removes a tag assignment from a contact without deleting the tag itself. Use this when a contact no longer belongs in a segment, label, or campaign targeting group. - [Remove the contact from the pipeline](https://developers.mihu.ai/api-reference/contacts/remove-the-contact-from-the-pipeline.md): Clears the contact's current pipeline stage. Use this when the contact should no longer appear in any stage until a new stage is assigned. The contact record and historical activity remain unchanged. - [Update a contact](https://developers.mihu.ai/api-reference/contacts/update-a-contact.md): Updates base contact fields and custom field values. Use this to correct contact identity, phone/email, timezone, language, preferred channel, or status. Only supplied fields are changed. - [Get conversation details](https://developers.mihu.ai/api-reference/conversations/get-conversation-details.md): Returns one conversation with contact, channel, agent, sessions, message context, and voice-call metadata when available. Use this before retrieving messages or session history for the conversation. - [Get paginated list of conversations](https://developers.mihu.ai/api-reference/conversations/get-paginated-list-of-conversations.md): Returns paginated conversations across voice and text channels. Use filters to find conversations by contact, phone, agent, campaign, task, channel, status, or sort order. Voice conversations may include call, campaign, listing, and task identifiers. - [Get paginated messages of a conversation](https://developers.mihu.ai/api-reference/conversations/get-paginated-messages-of-a-conversation.md): Returns paginated messages for one conversation, including AI, human, and contact-authored messages. Use this to display the conversation transcript, audit agent behavior, or retrieve message history before evaluating a conversation. - [Create an override for an agent (clones current default)](https://developers.mihu.ai/api-reference/evaluate/create-an-override-for-an-agent-clones-current-default.md): Creates agent-specific evaluate settings by copying the current global default. After this, the agent stops inheriting from the global default and can be updated with PUT /api/v1/agents/{uuid}/evaluate. Returns 409 if an override already exists; use PUT to update or POST /reassign to overwrite from… - [Force-overwrite the agent's override with a fresh copy of the current default](https://developers.mihu.ai/api-reference/evaluate/force-overwrite-the-agents-override-with-a-fresh-copy-of-the-current-default.md): Use when the global default has changed and you want this agent to pick up the new defaults while keeping its override row. Wipes all customizations on the agent's override. - [List the 10 analyzer feature ids](https://developers.mihu.ai/api-reference/evaluate/list-the-10-analyzer-feature-ids.md): Static catalog of feature ids you can toggle or edit under `text.*` and `voice.*` in any update call. Useful for discovering supported feature ids dynamically. - [Read effective evaluate settings for one agent](https://developers.mihu.ai/api-reference/evaluate/read-effective-evaluate-settings-for-one-agent.md): If the agent has an override, returns it (source=agent). Otherwise returns the global default (source=default, agent_uuid=null). Always inspect the source field to know what you are looking at. - [Read the global default evaluate settings](https://developers.mihu.ai/api-reference/evaluate/read-the-global-default-evaluate-settings.md): Returns the workspace-wide default. Every agent without an override inherits from this. Response always has source=default and agent_uuid=null. - [Remove the agent's override (revert to global default)](https://developers.mihu.ai/api-reference/evaluate/remove-the-agents-override-revert-to-global-default.md): Deletes the agent-specific evaluate settings so subsequent reads return the global default. Idempotent: a second call returns `data.deleted: false`. - [Reset the agent's override to factory defaults](https://developers.mihu.ai/api-reference/evaluate/reset-the-agents-override-to-factory-defaults.md): Like /default/reset but scoped to one agent. Keeps the override row in place; just rewrites every field to factory values. Use when you want this agent to ignore the current global default and start fresh. - [Reset the global default to factory values](https://developers.mihu.ai/api-reference/evaluate/reset-the-global-default-to-factory-values.md): Replaces every field on the global default with the built-in factory presets (workspace-language-aware). Destructive: any custom descriptions or prompts you set are lost. Does not touch per-agent overrides. - [Update an agent's evaluate settings](https://developers.mihu.ai/api-reference/evaluate/update-an-agents-evaluate-settings.md): Partial update. If the agent has no override yet, one is auto-created from the current global default before applying changes (so you do not need to call /assign first). Only the keys you send are touched. - [Update the global default evaluate settings](https://developers.mihu.ai/api-reference/evaluate/update-the-global-default-evaluate-settings.md): Partial update; any unsent key is left alone. Changes here cascade to every agent without its own override at next read time. Use sparingly. - [Get a single evaluation](https://developers.mihu.ai/api-reference/evaluations/get-a-single-evaluation.md): Returns one session evaluation by UUID, including scores, labels, reasons, and related session/conversation/contact identifiers. Use this to inspect the AI analysis for a specific session. - [Get paginated list of session evaluations](https://developers.mihu.ai/api-reference/evaluations/get-paginated-list-of-session-evaluations.md): Retrieves a paginated list of session evaluations with optional filtering by session/conversation/contact UUID and creation date range. - [Fetch dynamic dropdown options for a step's field](https://developers.mihu.ai/api-reference/flow-catalog/fetch-dynamic-dropdown-options-for-a-steps-field.md): Mirrors every 'Refresh' dropdown in the Studio Setup tab. Used to resolve human references like '#general' or 'Contacts module' into the actual identifiers the action config requires. **Always ask the user to pick from the response — never silently auto-select**, even when only one option exists. - [Flat list of every OAuth connection the tenant has, across all apps](https://developers.mihu.ai/api-reference/flow-catalog/flat-list-of-every-oauth-connection-the-tenant-has-across-all-apps.md): Each row carries the connection uuid + label and the inlined app it belongs to. Useful for an MCP server building a 'pick which account' prompt without iterating per-app first. - [List all Studio integrations (apps)](https://developers.mihu.ai/api-reference/flow-catalog/list-all-studio-integrations-apps.md): The full set of integrations the Studio supports — both mihu builtins (Calls, Texts, Contacts, Logic, …) and connect apps (Slack, Zoho, Notion, Twilio, …). Filter by `category` to scope to one bucket, or by `search` for a substring match. Use `/flow/apps/supports/triggers` or `/supports/actions` to… - [List apps eligible as a flow's action (step 2+)](https://developers.mihu.ai/api-reference/flow-catalog/list-apps-eligible-as-a-flows-action-step-2+.md): Same shape as /flow/apps but pre-filtered to apps with at least one action. Use this when offering the user the action picker for any non-first step. - [List apps eligible as a flow's trigger (step 1)](https://developers.mihu.ai/api-reference/flow-catalog/list-apps-eligible-as-a-flows-trigger-step-1.md): Same shape as /flow/apps but pre-filtered to apps with at least one trigger. Use this when offering the user the trigger picker for step 1 of a new flow. - [List tenant's agents available for Agents-app actions](https://developers.mihu.ai/api-reference/flow-catalog/list-tenants-agents-available-for-agents-app-actions.md): Returns the agents the user can pick when configuring an Agents-app action (Make Call, Send WhatsApp, etc.). Limited to agents with status=ready. The MCP server uses this when the user says e.g. 'have my sales agent call the lead'. - [List the actions an app exposes](https://developers.mihu.ai/api-reference/flow-catalog/list-the-actions-an-app-exposes.md): Each action has a `key` (used in step config: `action_key`) plus name, description, and config schema hints. - [List the tenant's connections (OAuth accounts) for one app](https://developers.mihu.ai/api-reference/flow-catalog/list-the-tenants-connections-oauth-accounts-for-one-app.md): Returns each `app_connection` the tenant has set up for this app — typically zero or one for a fresh tenant, more if the user connected multiple workspaces. Builtin apps always return an empty array (they don't need OAuth). On an empty result for a connect app, the client should redirect the user to… - [List the trigger events an app exposes](https://developers.mihu.ai/api-reference/flow-catalog/list-the-trigger-events-an-app-exposes.md): Each trigger has a `key` (used in step config: `trigger_key`) plus name, description, and config schema hints. - [Read a single app by its uid](https://developers.mihu.ai/api-reference/flow-catalog/read-a-single-app-by-its-uid.md) - [List run history of a flow](https://developers.mihu.ai/api-reference/flow-executions/list-run-history-of-a-flow.md): Paginated list of every time this flow fired on a real event. Each execution captures status, duration, and a preview of the trigger payload. Use GET /executions/{exec_uuid} to drill into per-step request/response/error. - [Read one execution with per-step request/response/error](https://developers.mihu.ai/api-reference/flow-executions/read-one-execution-with-per-step-requestresponseerror.md): Returns the full trigger payload that fired this run plus a `steps[]` array — for each step: status, duration, the resolved input, the handler's output, and any error message. Use this to debug a failed flow run. - [Add a step to a flow (trigger as step 1, actions as step 2+)](https://developers.mihu.ai/api-reference/flow-steps/add-a-step-to-a-flow-trigger-as-step-1-actions-as-step-2+.md): Creates either a trigger (only one allowed, must be step 1) or an action. The server picks the position: by default appends to the end, but `insert_after_step_uuid` puts it mid-chain (downstream steps shift up + their `{{stepN.field}}` references are rewritten), and `parent_step_uuid` + `branch_key`… - [Delete a step (and its branch children if any)](https://developers.mihu.ai/api-reference/flow-steps/delete-a-step-and-its-branch-children-if-any.md): Removes the step. Subsequent steps are renumbered down by 1. `{{stepN.field}}` references in remaining steps' configs are rewritten — references to the deleted step become `` so the UI/MCP can flag dangling refs. Cannot delete the trigger step (returns 409). Cannot edit a deployed flow… - [Read one step](https://developers.mihu.ai/api-reference/flow-steps/read-one-step.md) - [Test a step — kind-aware behavior (trigger samples vs action exec)](https://developers.mihu.ai/api-reference/flow-steps/test-a-step-—-kind-aware-behavior-trigger-samples-vs-action-exec.md): **For trigger steps:** auto-fetches recent records from the trigger's source (e.g. recent calls for Calls/call_started) and uses the latest as the persisted sample. The chosen sample's `data` is what every downstream step's `{{stepN.field}}` resolves against. Pass `data: {...}` to skip the auto-fetc… - [Update any subset of a step's fields](https://developers.mihu.ai/api-reference/flow-steps/update-any-subset-of-a-steps-fields.md): **Order of operations matters.** Switching `app_uid` clears trigger/action/config/connection (forces re-selection — same as the Studio UI). After that, `trigger_key`/`action_key`/`agent_uuid`/`app_connection_uuid`/`config` apply in order. Cannot edit a deployed flow — returns 409 unless you `POST /u… - [Create an empty flow (draft)](https://developers.mihu.ai/api-reference/flows/create-an-empty-flow-draft.md): Creates a flow with no steps. Both `name` and `description` are optional — when name is omitted the server assigns 'Flow {id}'. Add a trigger step next via POST /flow/{uuid}/steps with kind=trigger. - [Delete a flow](https://developers.mihu.ai/api-reference/flows/delete-a-flow.md): Soft-delete (per project convention). Pending executions are not auto-cancelled — undeploy first if you want clean cancellation. The flow is removed from `GET /flows` immediately and a fresh GET on its uuid returns 404. - [Deploy a flow — flips it from draft to live](https://developers.mihu.ai/api-reference/flows/deploy-a-flow-—-flips-it-from-draft-to-live.md): Validates the flow has a trigger, every step is configured (app + trigger/action set), every connect-app step has a valid connection, every step is `active` (set by a successful test), and no `` references remain. On success the flow becomes eligible to fire on real events. Returns 422… - [List flows (paginated, filterable)](https://developers.mihu.ai/api-reference/flows/list-flows-paginated-filterable.md): Returns the tenant's flows with each one's compact app/agent/step counts and last-updated timestamps. Use the filters to narrow by status, search term, or change the sort. - [Read a flow with its full ordered step list](https://developers.mihu.ai/api-reference/flows/read-a-flow-with-its-full-ordered-step-list.md): Steps are returned flat — branch children of an `if_condition` appear in the array with `parent_step_uuid` and `branch_key` populated. Each step's `last_test.data` is what downstream steps' `{{stepN.field}}` references resolve against. - [Undeploy — flip a deployed flow back to draft](https://developers.mihu.ai/api-reference/flows/undeploy-—-flip-a-deployed-flow-back-to-draft.md): Stops the flow from firing on real events and unlocks it for editing (PATCH/POST/DELETE on its steps). Idempotent — calling on a draft flow is a no-op. - [Update flow name or description](https://developers.mihu.ai/api-reference/flows/update-flow-name-or-description.md): Only `name` and `description` are mutable here. To change the structure (steps), use the step endpoints. Allowed even on a deployed flow (no undeploy required) since name/description don't affect runtime. - [Introduction](https://developers.mihu.ai/api-reference/introduction.md): Complete API reference for the Mihu platform - [List supported languages](https://developers.mihu.ai/api-reference/language/list-supported-languages.md): Returns the supported language catalog for agent configuration. Use the returned codes for agent.language and settings.voice.voice_profile.language when creating or updating agents, and use the display names for user-facing language selection. - [Add contacts to an existing listing](https://developers.mihu.ai/api-reference/listings/add-contacts-to-an-existing-listing.md): Adds one or more contacts to the listing's pool. Existing contacts are matched by phone number first, then email; matched contacts are updated, and new contacts are created. Additional fields are stored as custom contact fields. If the listing is running, tasks are created for newly added eligible c… - [Create a new listing with rule and bulk contacts](https://developers.mihu.ai/api-reference/listings/create-a-new-listing-with-rule-and-bulk-contacts.md): Creates a listing workflow in one request: campaign, contact pool, optional rule, and initial contacts. Use this when you want to start from a list of contacts instead of manually creating a campaign, pool, and pool memberships separately. Contacts are matched by phone number first, then email; new… - [Delete a listing](https://developers.mihu.ai/api-reference/listings/delete-a-listing.md): Deletes the listing campaign, detaches its pool and rule, and cancels pending campaign tasks. Use this when the listing workflow should be removed rather than paused. Contacts themselves are not deleted. - [Get all listings (campaigns with pools)](https://developers.mihu.ai/api-reference/listings/get-all-listings-campaigns-with-pools.md): Returns campaigns that have contact pools and are managed as listings. Use this endpoint to monitor outreach lists, filter by status, search by name or description, and paginate through listing campaigns. - [Get listing details with contacts](https://developers.mihu.ai/api-reference/listings/get-listing-details-with-contacts.md): Returns one listing with its campaign settings, agent/channel binding, rule, attached pool, and contacts. Use this endpoint before starting, stopping, deleting, or adding contacts to a listing. - [Remove a contact from a listing and cancel their tasks](https://developers.mihu.ai/api-reference/listings/remove-a-contact-from-a-listing-and-cancel-their-tasks.md): Removes one contact from the listing's pool and cancels that contact's pending tasks for the listing campaign. Use this when a contact should no longer receive outreach from this listing. The contact record itself is not deleted. - [Start/resume a listing campaign](https://developers.mihu.ai/api-reference/listings/startresume-a-listing-campaign.md): Starts or resumes a listing by moving it to In Process and creating tasks for eligible contacts. Use this after the listing has contacts, an agent/channel, and a rule. Returns a conflict if the listing is already running, still importing, completed, or in a status that cannot start. - [Stop/pause a running listing campaign](https://developers.mihu.ai/api-reference/listings/stoppause-a-running-listing-campaign.md): Pauses a running listing and cancels pending tasks for that campaign. Use this when you need to stop outreach without deleting the listing, contacts, pool, or rule. Only listings currently In Process can be stopped. - [Get full detail for a single action execution](https://developers.mihu.ai/api-reference/logs/get-full-detail-for-a-single-action-execution.md): Returns the full request/response payload, related agent and contact, and per-type extras (intent: the call it happened in, the related conversation, and any webhook delivery; task: the campaign and channel context; workflow: per-step execution log). The combination `{type}/{uuid}` uniquely identifi… - [List action executions across tasks, workflows, and intents](https://developers.mihu.ai/api-reference/logs/list-action-executions-across-tasks-workflows-and-intents.md): Returns a chronologically merged stream of three kinds of agent activity: (1) `task` — a queued action against a contact such as an outbound call attempt or message send, typically spawned by a campaign; (2) `workflow` — a multi-step automation triggered by an event (each row is one full run); (3) `… - [Bulk-toggle contact field flags for an agent](https://developers.mihu.ai/api-reference/memorize/bulk-toggle-contact-field-flags-for-an-agent.md): Same body shape as the default bulk endpoint. If the agent does not yet have its own memorize settings, they are created automatically from the global default on the first edit. - [Bulk-toggle contact field flags on the default settings](https://developers.mihu.ai/api-reference/memorize/bulk-toggle-contact-field-flags-on-the-default-settings.md): Send a list of contact-field toggles. Each item must include `field_id` plus any subset of the 5 allowed flags. Only the keys you send are touched — other fields and other flags stay as they were. - [Catalog merged with the agent's toggles (or default if no override)](https://developers.mihu.ai/api-reference/memorize/catalog-merged-with-the-agents-toggles-or-default-if-no-override.md): Returns all available contact fields with the agent's effective memorize toggles. If the agent has no override, the response is merged with the global default and source is returned as default. - [Catalog merged with the global default's toggle state](https://developers.mihu.ai/api-reference/memorize/catalog-merged-with-the-global-defaults-toggle-state.md): Returns all available contact fields with the global default memorize toggles applied. Use this to see which fields agents inherit for memory extraction when they do not have agent-specific memorize settings. - [Create custom memorize settings for an agent, copied from the global default](https://developers.mihu.ai/api-reference/memorize/create-custom-memorize-settings-for-an-agent-copied-from-the-global-default.md): Creates an agent-specific memorize override by copying the current global default. Use this before customizing one agent's memory behavior independently. Returns 409 if the agent already has custom memorize settings. - [Get an agent's memorize settings (falls back to default)](https://developers.mihu.ai/api-reference/memorize/get-an-agents-memorize-settings-falls-back-to-default.md): Returns the agent's effective memorize settings. If the agent has a custom override, source is agent; otherwise the response returns the global default with source default. - [Get the global default memorize settings](https://developers.mihu.ai/api-reference/memorize/get-the-global-default-memorize-settings.md): Returns the workspace-wide default memorize settings. Agents without their own override inherit these settings for contact field memory, conversation memory, channel behavior, and summary cadence. - [List contact fields available for memorize settings](https://developers.mihu.ai/api-reference/memorize/list-contact-fields-available-for-memorize-settings.md): Returns every contact field that can be toggled in memorize settings: built-in base fields plus all active custom fields. - [Remove an agent's specific memorize settings (reverts to default)](https://developers.mihu.ai/api-reference/memorize/remove-an-agents-specific-memorize-settings-reverts-to-default.md): Deletes the agent-specific memorize override. After deletion, the agent inherits the global default memorize settings again. The operation is idempotent. - [Replace the agent's memorize settings with a fresh copy of the global default](https://developers.mihu.ai/api-reference/memorize/replace-the-agents-memorize-settings-with-a-fresh-copy-of-the-global-default.md): Overwrites the agent's memorize settings with a new copy of the current global default. Use this when the default changed and the agent should discard its custom memory configuration. - [Reset an agent's memorize settings to factory defaults](https://developers.mihu.ai/api-reference/memorize/reset-an-agents-memorize-settings-to-factory-defaults.md): Resets the agent's memorize settings to factory defaults. If the agent has no override, one is created before resetting. Use this when a single agent should return to baseline memory behavior without changing the global default. - [Reset the global default memorize settings to factory defaults](https://developers.mihu.ai/api-reference/memorize/reset-the-global-default-memorize-settings-to-factory-defaults.md): Resets the global default memorize settings to factory defaults. Use this when default memory behavior should return to the built-in baseline. Agent-specific overrides are not changed. - [Update an agent's memorize settings (creates them from the global default if the agent has none yet)](https://developers.mihu.ai/api-reference/memorize/update-an-agents-memorize-settings-creates-them-from-the-global-default-if-the-agent-has-none-yet.md): Updates one agent's memorize settings. If the agent does not already have custom settings, they are created from the global default first, then the supplied changes are applied. - [Update the global default memorize settings](https://developers.mihu.ai/api-reference/memorize/update-the-global-default-memorize-settings.md): Updates the workspace-wide default memorize settings. Use this to control what future and non-overridden agents remember from conversations. Only supplied settings are changed. - [Allocate a SIP connector server](https://developers.mihu.ai/api-reference/pbx-extension-connectors/allocate-a-sip-connector-server.md): Picks a random active server from the configured pool and allocates its IP to your account. Idempotent: if a server is already assigned the existing one is returned. - [Create a PBX extension connector](https://developers.mihu.ai/api-reference/pbx-extension-connectors/create-a-pbx-extension-connector.md): Registers a PBX extension to an AI voice agent. This endpoint configures the PBX end only — it does not provision a SIP trunk. Use it when you want to connect a number purchased through this platform to your existing PBX extension; if you already have a SIP trunk from a provider, use the SIP trunk e… - [Delete a PBX extension connector](https://developers.mihu.ai/api-reference/pbx-extension-connectors/delete-a-pbx-extension-connector.md): Deletes a PBX extension connector and deregisters its SIP customer entry. Use this when an extension should no longer route calls through the connected PBX. The linked agent and phone number are not deleted. - [Get a single PBX extension connector](https://developers.mihu.ai/api-reference/pbx-extension-connectors/get-a-single-pbx-extension-connector.md): Returns one PBX extension connector by UUID, including the linked agent, phone number, extension payload, and connector status. Use this before updating external PBX configuration or deleting the connector. - [Get the SIP connector server assigned to your account](https://developers.mihu.ai/api-reference/pbx-extension-connectors/get-the-sip-connector-server-assigned-to-your-account.md): Returns the SIP connector server currently allocated to your account. You need one allocated before any PBX extension connector can be created — connectors are pushed to that server. If `assigned` is `false` (no server has ever been allocated for you), call `POST /api/v1/pbx_extension_connectors/sip… - [List PBX extension connectors](https://developers.mihu.ai/api-reference/pbx-extension-connectors/list-pbx-extension-connectors.md): Returns paginated PBX extension connectors. Use this to audit extension routing from agents and phone numbers to the allocated SIP connector server, with optional filters for agent, phone number, or status. - [Release the allocated SIP connector server](https://developers.mihu.ai/api-reference/pbx-extension-connectors/release-the-allocated-sip-connector-server.md): Unassigns the workspace SIP connector server after all PBX extension connectors have been deleted. Use this when PBX extension routing is no longer needed. Returns 409 if any connector still depends on the server. - [Assign a number to an agent](https://developers.mihu.ai/api-reference/phone-numbers/assign-a-number-to-an-agent.md): Connects this number to one of your agents on a specific channel (call, SMS, or WhatsApp). The agent must already have that channel configured. A number can only serve one agent per channel — disconnect the existing assignment first if you're switching. - [Assign or reassign an external trunk to an agent](https://developers.mihu.ai/api-reference/phone-numbers/assign-or-reassign-an-external-trunk-to-an-agent.md): Reassigns an existing external trunk (created via POST /trunks) to a different agent on the same channel. The phone number, SIP credentials, and channel settings are preserved — only the agent on the binding changes. Returns the same `channels` payload as GET /phone-numbers/channels. - [Buy a phone number](https://developers.mihu.ai/api-reference/phone-numbers/buy-a-phone-number.md): Purchases a number returned by the search endpoint. If the country/type requires compliance, include an address (when needed) and a list of requirement values — text answers and document IDs from /api/v1/phone-numbers/documents. Subject to a per-workspace cap on active numbers purchased via the API;… - [Channels for a phone number (look up by number)](https://developers.mihu.ai/api-reference/phone-numbers/channels-for-a-phone-number-look-up-by-number.md): Same as the by-UUID version, but you only need the phone number itself. Works for both owned numbers and external ones (numbers your agents use but didn't buy through us). The leading + is optional. - [Channels for one phone number](https://developers.mihu.ai/api-reference/phone-numbers/channels-for-one-phone-number.md): A trimmed-down view focused on what each channel (call, SMS, WhatsApp, inbound) can do for this number: what it supports, whether it's enabled, and which agent it's connected to. - [Compliance requirements for a country](https://developers.mihu.ai/api-reference/phone-numbers/compliance-requirements-for-a-country.md): Some countries require documents (proof of ID, business license, local address) before a number can be activated. Use this to find out exactly what's needed for the country and number type you're targeting, so you can prepare them before purchase. - [Delete an external trunk](https://developers.mihu.ai/api-reference/phone-numbers/delete-an-external-trunk.md): Removes an external trunk binding identified by `phone_number` + `channel`. The phone number itself is not in your purchased inventory, so nothing is billed or released externally — this only removes the agent binding. If the resulting AgentApp has no remaining bindings, it (and its connection) are… - [Get one phone number](https://developers.mihu.ai/api-reference/phone-numbers/get-one-phone-number.md): Returns full details for a single number — capabilities, channel settings, billing, compliance status, and which agents are using it on each channel. - [List external trunks (BYO numbers)](https://developers.mihu.ai/api-reference/phone-numbers/list-external-trunks-byo-numbers.md): Lists every external trunk you've registered — phone numbers you own elsewhere that are bound to your agents but not in your purchased inventory. All rows come back with `source: external`. Filter by channel, agent, or number substring. - [List your phone numbers](https://developers.mihu.ai/api-reference/phone-numbers/list-your-phone-numbers.md): Returns every phone number connected to your workspace — both numbers you've purchased and external trunks (BYO numbers your agents use that weren't bought through us). Each row carries `source: purchased|external`. Pass `only_include=purchased` for purchased-only, or `only_include=external` for tru… - [Outbound call rates](https://developers.mihu.ai/api-reference/phone-numbers/outbound-call-rates.md): Per-minute pricing for outbound calls, broken down by destination country and prefix. Useful for estimating campaign costs before you launch. - [Phone number summary](https://developers.mihu.ai/api-reference/phone-numbers/phone-number-summary.md): A quick snapshot for dashboards: how many numbers you have, how many need attention (e.g. compliance pending), your total monthly spend, and breakdowns by country and number type. - [Phone numbers for one agent](https://developers.mihu.ai/api-reference/phone-numbers/phone-numbers-for-one-agent.md): Returns the phone numbers an agent serves on, with the channels in use on each number. Same shape as one entry from /by-agent. - [Phone numbers grouped by agent](https://developers.mihu.ai/api-reference/phone-numbers/phone-numbers-grouped-by-agent.md): Same data as /used-channels-and-accounts, but pivoted: one row per agent, listing the phone numbers they answer on and which channels they use on each. Useful for building agent-centric views. - [Register an external SIP trunk / BYO number](https://developers.mihu.ai/api-reference/phone-numbers/register-an-external-sip-trunk-byo-number.md): Connects a phone number you already own elsewhere (your own SIP trunk, an existing WhatsApp Business line, a number on another carrier) to one of your agents on a specific channel. The number is registered as `source: external` — it will not be billed, and inventory operations like /release do not a… - [Release a phone number](https://developers.mihu.ai/api-reference/phone-numbers/release-a-phone-number.md): Removes a number from your active inventory. If any agent is still using the number on call, SMS, or WhatsApp, the request is rejected — disconnect those agents first. - [Release a phone number](https://developers.mihu.ai/api-reference/phone-numbers/release-a-phone-number-1.md): Action-style alias for DELETE /api/v1/phone-numbers/{uuid}. Soft-deletes a number after checking that it has no active agent bindings. - [Remove a number from an agent](https://developers.mihu.ai/api-reference/phone-numbers/remove-a-number-from-an-agent.md): Disconnects this number from whichever agent currently uses it on the given channel. The number stays in your inventory and is free to reassign. - [Search numbers available to buy](https://developers.mihu.ai/api-reference/phone-numbers/search-numbers-available-to-buy.md): Browse phone numbers available for purchase in a given country. You can filter by type (local, toll-free, mobile, national), area code, or pattern. Results include pricing and whether compliance steps will be required before activation. - [Update an external trunk](https://developers.mihu.ai/api-reference/phone-numbers/update-an-external-trunk.md): Updates an existing external trunk (registered via POST /trunks). Identify the trunk by `phone_number` + `channel`. Any field omitted is left untouched. SIP fields set to empty string clear that credential. - [Update channel settings](https://developers.mihu.ai/api-reference/phone-numbers/update-channel-settings.md): Turn voice, SMS, or inbound on or off, set per-channel concurrency limits, and choose which destination countries are allowed for outbound traffic. Channels can't be turned on while compliance is still pending for the number. - [Upload a compliance document](https://developers.mihu.ai/api-reference/phone-numbers/upload-a-compliance-document.md): Uploads a document (e.g. proof of ID, business license, address proof) needed for compliance on a phone number purchase. Returns a document ID you then pass into the purchase endpoint under requirements[].document_id. - [Which agents use which numbers](https://developers.mihu.ai/api-reference/phone-numbers/which-agents-use-which-numbers.md): A summary of every active phone number and the agents using it, grouped by channel. Includes both numbers you've purchased and external ones (e.g. WhatsApp Business). Powers the 'Used Channels & Accounts' dashboard. - [Add existing contacts to a pool](https://developers.mihu.ai/api-reference/pools/add-existing-contacts-to-a-pool.md): Adds one or more existing contacts (by UUID) to the pool, creating ContactPoolItem rows with status=Pending. Contacts already present in the pool are silently skipped (no error). UUIDs that don't resolve to a contact are returned in contact_uuids_not_found rather than failing the whole call. Side ef… - [Create a contact pool](https://developers.mihu.ai/api-reference/pools/create-a-contact-pool.md): Creates an empty pool. After creation, populate it with POST /api/v1/pools/{uuid}/contacts and attach it to a campaign with POST /api/v1/campaigns/{uuid}/pools. - [Delete a pool](https://developers.mihu.ai/api-reference/pools/delete-a-pool.md): Deletes the pool. Refuses with 409 if the pool is attached to any campaign in 'In Process' or 'Importing' status — pause/stop those campaigns first or detach the pool from them. Pool items (contacts) inside the pool are deleted along with the pool. - [Duplicate a pool, optionally copying its contacts](https://developers.mihu.ai/api-reference/pools/duplicate-a-pool-optionally-copying-its-contacts.md): Creates a new pool with the same configuration as the source (type, max_parallel_items, max_retries, is_active, description). The new pool gets a fresh UUID and is NOT attached to any campaign — attach it explicitly with POST /api/v1/campaigns/{uuid}/pools. By default, all pool items are copied with… - [Get pool details, including attached campaigns and pool item status counts](https://developers.mihu.ai/api-reference/pools/get-pool-details-including-attached-campaigns-and-pool-item-status-counts.md): Returns the full pool resource plus a status_counts breakdown (Pending/Processing/Completed/Failed/etc.) and the list of campaigns this pool is attached to. For paginated contact lists inside the pool, use GET /api/v1/pools/{uuid}/contacts instead. - [List contact pools](https://developers.mihu.ai/api-reference/pools/list-contact-pools.md): Returns a paginated list of pools. Each pool is a named bucket of contacts that one or more campaigns can draw from. Pool 'type' (FIFO/LIFO/Parallel) controls the order pool items are processed when a campaign runs. - [List contacts in a pool](https://developers.mihu.ai/api-reference/pools/list-contacts-in-a-pool.md): Returns paginated ContactPoolItem rows in the pool, each enriched with the underlying Contact's name/email/phone and the item's processing state (status, retry_count, started_at, etc.). Sorted by most recently updated first. Supports search and status filtering for triage workflows. - [Remove a contact from a pool](https://developers.mihu.ai/api-reference/pools/remove-a-contact-from-a-pool.md): Removes the specified contact from this pool. Side effect: cancels (status='cancelled') any scheduled/queued/pending tasks tied to THIS pool item. Tasks for the same contact in OTHER pools attached to the same campaign are NOT affected — cancellation is keyed by contact_pool_item_id, not by contact_… - [Update a pool](https://developers.mihu.ai/api-reference/pools/update-a-pool.md): Partial update. Send only the fields you want to change. Use the is_active flag to activate/deactivate — there is no separate toggle endpoint. Updates do not affect contact membership; pool items are unchanged. - [Create a new campaign contact rule](https://developers.mihu.ai/api-reference/rules/create-a-new-campaign-contact-rule.md): Creates a standalone rule that can later be attached to one or more campaigns via PUT /api/v1/campaigns/{uuid}/rule. The rule's `type` (call vs text) governs which fields are honored and which defaults are applied. - [Delete a rule](https://developers.mihu.ai/api-reference/rules/delete-a-rule.md): Deletes the rule and detaches it from any campaigns it was attached to. Refuses with 409 if the rule is currently attached to a campaign with status Active, In Process, or Importing — pause/stop those campaigns first or assign a different rule to them. - [Get a single rule by UUID](https://developers.mihu.ai/api-reference/rules/get-a-single-rule-by-uuid.md): Returns one campaign contact rule by UUID, including type, retry limits, retry interval, allowed working hours, escalation behavior, and active state. Use this before attaching a rule to a campaign or before updating cadence settings. - [List campaign contact rules](https://developers.mihu.ai/api-reference/rules/list-campaign-contact-rules.md): Returns a paginated list of contact rules used by campaigns to control call/message cadence (max attempts, retry interval, allowed working hours, escalation policy). - [Update an existing rule](https://developers.mihu.ai/api-reference/rules/update-an-existing-rule.md): Partial update — only fields you send are changed. Important: changing `type` from 'call' to 'text' automatically nulls call-only fields (retry_interval_minutes, end_time, escalation_*) regardless of what you send for them. Updates do NOT retroactively rebuild already-scheduled tasks on running camp… - [Create a new schedule](https://developers.mihu.ai/api-reference/schedules/create-a-new-schedule.md): Creates a bookable schedule and links it to an availability type. Use this after creating or selecting an availability type. The schedule can then be assigned to agents for appointment booking and can collect custom question answers during booking. - [Delete a schedule](https://developers.mihu.ai/api-reference/schedules/delete-a-schedule.md): Deletes a schedule by UUID. Use this when a calendar should no longer be offered for appointment booking. Existing appointment records may still reference their historical schedule data. - [Get a specific schedule](https://developers.mihu.ai/api-reference/schedules/get-a-specific-schedule.md): Returns one schedule by UUID with its availability type, assigned agent metadata, custom questions, and display color. Use this before updating a schedule or when showing calendar details for appointment booking. - [Get all schedules](https://developers.mihu.ai/api-reference/schedules/get-all-schedules.md): Returns schedules with their attached availability type. Use this endpoint to choose which calendar an agent should use for appointment booking, or filter by availability_type_uuid to find schedules that share the same booking rules. - [Update a schedule](https://developers.mihu.ai/api-reference/schedules/update-a-schedule.md): Updates schedule metadata such as name, type, color, availability type, assigned agents, or custom questions. Use this to change how an existing calendar is presented and which booking rules it uses. Only supplied fields are changed. - [Get paginated list of conversation sessions](https://developers.mihu.ai/api-reference/sessions/get-paginated-list-of-conversation-sessions.md): Returns paginated conversation sessions. Sessions group messages or voice activity into reviewable interaction windows. Use filters to find sessions by conversation, contact, agent, campaign, task, status, type, or date ordering. - [Get paginated messages of a session](https://developers.mihu.ai/api-reference/sessions/get-paginated-messages-of-a-session.md): Returns paginated messages that belong to one conversation session. Use this to inspect exactly which AI, human, and contact messages were included in the session window before reading its summary or evaluation. - [Get paginated sessions of a conversation](https://developers.mihu.ai/api-reference/sessions/get-paginated-sessions-of-a-conversation.md): Returns sessions that belong to one conversation. Use this to navigate from a conversation to its grouped text or voice sessions, then fetch messages or evaluations for a specific session. - [Get session details](https://developers.mihu.ai/api-reference/sessions/get-session-details.md): Returns one conversation session with contact, conversation, agent, campaign/listing/task references, summary fields, timestamps, and evaluation status. Use this before fetching session messages or evaluation details. - [Get the evaluation of a session](https://developers.mihu.ai/api-reference/sessions/get-the-evaluation-of-a-session.md): Returns the evaluation record for one conversation session when analysis exists. Each dimension includes value, confidence, and reason fields. Use this to inspect the AI quality analysis for a specific session without fetching the full evaluation list. - [Add a new SIP trunk connection](https://developers.mihu.ai/api-reference/sip-trunk/add-a-new-sip-trunk-connection.md): Creates a SIP trunk connection. Once created, assign it to an agent via POST /api/v1/agents/{uuid}/channels/call/sip-trunk. - [Assign a SIP trunk connection to an agent for calls](https://developers.mihu.ai/api-reference/sip-trunk/assign-a-sip-trunk-connection-to-an-agent-for-calls.md): Assigns a SIP trunk connection to this agent for calls. If the agent was previously bound to a different number, the old binding is torn down. - [Delete a SIP trunk connection](https://developers.mihu.ai/api-reference/sip-trunk/delete-a-sip-trunk-connection.md): Deletes a SIP trunk connection and removes agent assignments that depend on it. Use this when the provider trunk is no longer valid or should stop routing calls through the platform. Related telephony trunk configuration for the number is also removed. - [List all SIP trunk connections](https://developers.mihu.ai/api-reference/sip-trunk/list-all-sip-trunk-connections.md): Returns SIP trunk connections configured for the workspace. Use this before assigning a SIP trunk to an agent for calls. Authentication secrets are never returned; only connection metadata, phone number, gateway, and status are included. - [Send an SMS message](https://developers.mihu.ai/api-reference/sms/send-an-sms-message.md): Sends an SMS message to a phone number using the specified agent's SMS configuration. The agent must have an SMS channel configured with a valid phone number and messaging profile. - [Add a column to a table](https://developers.mihu.ai/api-reference/tables/add-a-column-to-a-table.md): Adds a new column to a table schema. Use this when agents need another structured field available for lookup or when future records require a new value. Existing records keep an empty value for the new column until they are updated. - [Assign imported data to an agent](https://developers.mihu.ai/api-reference/tables/assign-imported-data-to-an-agent.md): Assigns a data source or table to an agent and starts asynchronous synchronization. Use this after importing or creating data so the agent can search or query it during conversations. The response confirms the assignment and sync trigger. - [Create a record for imported data](https://developers.mihu.ai/api-reference/tables/create-a-record-for-imported-data.md): Creates a new record with values for the specified knowledge base. Provide either a values array (with column_id or column_name) or a record object keyed by field names. - [Create an empty table with a column schema](https://developers.mihu.ai/api-reference/tables/create-an-empty-table-with-a-column-schema.md): Creates a new table that agents can use as a knowledge base or for real-time data lookups. The table is empty after creation; records are added via POST /api/v1/data/{uuid}/records. - [Delete a column](https://developers.mihu.ai/api-reference/tables/delete-a-column.md): Soft-deletes the column. Existing record values for this column are kept on disk but no longer surface in field/record listings. - [Delete a record](https://developers.mihu.ai/api-reference/tables/delete-a-record.md): Deletes one table record and its stored field values. Use this when a row is obsolete, duplicated, or should no longer be available to agents during structured lookup. - [Delete imported data](https://developers.mihu.ai/api-reference/tables/delete-imported-data.md): Soft-deletes a data source or table by UUID. Use this when the knowledge source should no longer be available for assignment or lookup. Agent sync state should be refreshed after removing data that was already assigned. - [Get all imported data](https://developers.mihu.ai/api-reference/tables/get-all-imported-data.md): Returns imported data sources and manually created tables for the workspace. Use this endpoint to find data UUIDs, inspect processing status, choose sources to assign to agents, or monitor whether imports are ready for sync. - [Get data details by UUID](https://developers.mihu.ai/api-reference/tables/get-data-details-by-uuid.md): Returns one data source or table by UUID, including metadata, type, processing state, and stored path information when applicable. Use this before assigning data to an agent, adding records, updating metadata, or deleting the source. - [Get fields (columns) for imported data](https://developers.mihu.ai/api-reference/tables/get-fields-columns-for-imported-data.md): Returns the columns defined for a table or imported structured data source. Use this before adding records, mapping imported data, or building a form that writes row values by column_id or column_name. - [Get records for imported data](https://developers.mihu.ai/api-reference/tables/get-records-for-imported-data.md): Returns paginated table records with their field values. Use this to inspect imported rows, power external data review tools, or retrieve the records an agent can query during conversations. - [Import data from a website URL](https://developers.mihu.ai/api-reference/tables/import-data-from-a-website-url.md): Crawls a website URL and imports discovered page content into a knowledge source. Use this when an agent should answer from public documentation, help centers, service pages, or product pages. Crawling is limited in depth, and processing continues asynchronously after the response. - [Import data via copy-paste text](https://developers.mihu.ai/api-reference/tables/import-data-via-copy-paste-text.md): Creates a table-like knowledge source from raw text. Use this for FAQs, policies, product notes, or any pasted content that an agent should search when answering questions. The response returns the data UUID immediately while processing continues asynchronously. - [Import data via file upload](https://developers.mihu.ai/api-reference/tables/import-data-via-file-upload.md): Uploads a file and starts asynchronous processing so the content can become agent knowledge or structured records. Use this for CSV, Excel, JSON, PDF, XML, text, and audio sources up to 128MB. The response returns the data UUID and processing status; assign and sync the data before relying on it in… - [Trigger a sync for data across all associated agents](https://developers.mihu.ai/api-reference/tables/trigger-a-sync-for-data-across-all-associated-agents.md): Starts a fresh synchronization for all agents assigned to the data source. Use this after changing table records, columns, imported content, or metadata so each assigned agent receives the latest searchable or queryable data. - [Update a column (rename and/or change data_type)](https://developers.mihu.ai/api-reference/tables/update-a-column-rename-andor-change-data_type.md): Renames the column and/or changes its data_type. If data_type changes, all existing values for this column must coerce to the new type or the request is rejected. - [Update record values](https://developers.mihu.ai/api-reference/tables/update-record-values.md): Updates one or more values for a specific record. Provide either a values array (with column_id or column_name) or a record object keyed by field names. - [Update table metadata (name and description)](https://developers.mihu.ai/api-reference/tables/update-table-metadata-name-and-description.md): Updates table metadata without changing its columns or records. Use this to rename a knowledge source or clarify what the table contains after import or manual creation. Existing agent assignments remain in place. - [Cancel a task](https://developers.mihu.ai/api-reference/tasks/cancel-a-task.md): Cancels a task that has not finished. Use this when planned outreach should be stopped before it executes. Pending, scheduled, queued, and in-progress tasks can be cancelled; completed tasks remain unchanged. - [Create a new task (Call or WhatsApp Template)](https://developers.mihu.ai/api-reference/tasks/create-a-new-task-call-or-whatsapp-template.md): Creates a one-off task for an agent. Use make_call for outbound calls and send_message with task_data.message_type=whatsapp_template for WhatsApp template sends. Provide contact_uuid for an existing contact, or provide contact details so the API can find or create the contact by phone or email. Camp… - [Delete a task](https://developers.mihu.ai/api-reference/tasks/delete-a-task.md): Soft-deletes a task and removes it from normal task lists. Use this when the work should no longer run. If the task is pending, scheduled, queued, or in progress, it is cancelled before deletion. - [Get a specific task](https://developers.mihu.ai/api-reference/tasks/get-a-specific-task.md): Returns one task by UUID with its contact, campaign, agent, channel, schedule, status, retry information, and task payload. Use this to inspect why a task is pending, queued, completed, failed, cancelled, or waiting for retry. - [Get paginated list of tasks](https://developers.mihu.ai/api-reference/tasks/get-paginated-list-of-tasks.md): Returns scheduled and historical agent tasks with filters for type, status, contact, campaign, agent, priority, and scheduled time. Use this endpoint to monitor work created by campaigns, inspect one-off outreach tasks, or build operational queues. - [Queue a task for execution](https://developers.mihu.ai/api-reference/tasks/queue-a-task-for-execution.md): Queues a task for execution now or at the provided delay. Use this to manually start a pending or scheduled task without waiting for its original scheduled_at time. The response returns the updated task state. - [Retry a failed task](https://developers.mihu.ai/api-reference/tasks/retry-a-failed-task.md): Retries a failed task when the task has remaining attempts. Use this after correcting the reason for failure, such as missing contact data, unavailable channel binding, or temporary provider error. The response returns the task with its updated attempt and queue state. - [Update a task](https://developers.mihu.ai/api-reference/tasks/update-a-task.md): Updates an existing task. Use this to change schedule time, priority, assignee, description, status, or payload before execution. If status or scheduled_at changes in a way that requires execution, the task can be queued again according to its updated state. - [List supported timezones](https://developers.mihu.ai/api-reference/timezone/list-supported-timezones.md): Catalog of IANA timezones accepted as `agent.timezone`. The `value` is what you pass on the agent record; the `label` is a human-readable string. - [Create a new transcription request](https://developers.mihu.ai/api-reference/transcriptions/create-a-new-transcription-request.md): Submits audio for asynchronous transcription and optional evaluation. Provide either voice_file or voice_url. Use reference_id to correlate the result with your own call or recording ID. If webhook_url is provided, the API sends the completed transcript, session identifiers, evaluation results, and… - [Get full transcript with conversation messages and evaluations](https://developers.mihu.ai/api-reference/transcriptions/get-full-transcript-with-conversation-messages-and-evaluations.md): Returns the full completed transcript payload, including role/content conversation messages, full text, linked session data, and AI evaluations. Use this endpoint when you need the same structured result that is delivered to completion webhooks. - [Get transcription by UUID](https://developers.mihu.ai/api-reference/transcriptions/get-transcription-by-uuid.md): Returns one transcription by UUID, including status, reference_id, stored audio URL, transcript result when processing is complete, and selected QA/coaching agent identifiers. Use this to poll progress or retrieve the finished result when you are not using a webhook. - [Add ONE guard rule (preserves existing rules)](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/add-one-guard-rule-preserves-existing-rules.md): Appends a guard rule. Existing guards are untouched. `when_condition` and `then_action` are required. If `then_action=forward`, also provide `destination_type` + `destination` (or `destination_agent_uuid` when destination_type=agent). If `then_action=end_conversation`, provide `say_before_end` for a… - [Add ONE routing rule (preserves existing rules)](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/add-one-routing-rule-preserves-existing-rules.md): Appends a new routing rule. Existing rules are untouched. If `priority` is omitted, it defaults to (max existing priority + 1) so the new rule is evaluated last. Returns the agent with the full updated routing_rules list. Use POST for incremental builds; use PUT to replace the whole set. - [Delete ONE guard rule (other guards untouched)](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/delete-one-guard-rule-other-guards-untouched.md): Permanent removal. Removing a compliance/safety guard means the agent will no longer auto-handle that situation; verify you have a replacement guard or routing rule before deleting. To pause without deleting, PATCH with `is_active: false`. - [Delete ONE routing rule (other rules untouched)](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/delete-one-routing-rule-other-rules-untouched.md): Permanent removal. To temporarily disable instead of delete, PATCH the rule with `is_active: false` — the rule stays configured but does not fire. Returns the agent with the routing_rules list minus the deleted entry. - [Partially update ONE guard rule](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/partially-update-one-guard-rule.md): Updates only the fields you send. Common uses: toggle `is_active` to disable a guard temporarily; add a channel to `selected_channels`; tighten `when_condition` text after testing. Switching `then_action` between `forward` and `end_conversation` is supported but make sure the corresponding destinati… - [Partially update ONE routing rule](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/partially-update-one-routing-rule.md): Updates only the fields you send. Other fields and other rules are untouched. Common uses: toggle `is_active` to disable a rule without deleting it; bump `priority` to reorder; tweak `voice_response` text without re-sending the whole rule. - [Replace ALL guard rules for an agent (destructive)](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/replace-all-guard-rules-for-an-agent-destructive.md): Wipes every existing guard rule on this agent and inserts the provided list. Guards always take precedence over routing rules at runtime — when a guard fires, the conversation either ends or transfers regardless of any matching routing rule. Use guards for safety, compliance, abuse, or any scenario… - [Replace ALL routing rules for an agent (destructive)](https://developers.mihu.ai/api-reference/voice-ivr-&-guards/replace-all-routing-rules-for-an-agent-destructive.md): Wipes every existing routing rule on this agent and inserts the provided list. Use for bulk imports or full re-syncs from an external source. For incremental edits prefer POST/PATCH/DELETE on individual rules. In-flight calls already on a transfer path are unaffected; new calls hit the new rule set… - [List supported speeds for a voice](https://developers.mihu.ai/api-reference/voice-library/list-supported-speeds-for-a-voice.md): Send a voice UUID, receive the speed options that voice supports. `normal` is always returned; `fast` is included only when the voice's underlying model supports it. - [List voices in the library](https://developers.mihu.ai/api-reference/voice-library/list-voices-in-the-library.md): Returns the public voice catalog for the workspace. Filter by `language`/`gender`/`accent` or fuzzy-match `name` with `search`. Use the returned `uuid` as `settings.voice.voice_profile.voice_uuid` when creating or updating an agent. - [Make a WhatsApp call](https://developers.mihu.ai/api-reference/whatsapp-calling/make-a-whatsapp-call.md): Starts a WhatsApp voice call from the selected agent to a contact phone number. Use this only after the contact has granted WhatsApp call permission for the business number. The response returns the initiated call state plus conversation/contact identifiers when available. - [Send call permission request](https://developers.mihu.ai/api-reference/whatsapp-calling/send-call-permission-request.md): Sends a WhatsApp call permission request to a contact before placing a WhatsApp voice call. The contact receives an interactive approval message and can accept or reject calling permission. Use this when POST /api/v1/whatsapp/call returns no_permission. Requests are rate-limited to 1 per day and 2 p… - [Bulk-sync templates for a WABA from Meta into local DB](https://developers.mihu.ai/api-reference/whatsapp-templates/bulk-sync-templates-for-a-waba-from-meta-into-local-db.md): Pulls all templates Meta has on file for the given waba_id and upserts them locally (matched by Meta template id). Walks Meta's pagination internally (capped at 10 pages, ~250 templates per WABA). - [Create a new WhatsApp template](https://developers.mihu.ai/api-reference/whatsapp-templates/create-a-new-whatsapp-template.md): Submits the template to Meta's WhatsApp Business API and stores it locally. The returned status is whatever Meta gave back — typically PENDING for newly submitted templates (approval is async on Meta's side, usually within minutes). Use POST /api/v1/whatsapp/templates/{uuid}/sync to refresh status l… - [Delete a template (Meta + local)](https://developers.mihu.ai/api-reference/whatsapp-templates/delete-a-template-meta-+-local.md): Calls Meta's delete API and soft-deletes the local record. After deletion, no campaigns can use this template. Note: Meta may keep historical message records that referenced this template. - [Get a single template by UUID](https://developers.mihu.ai/api-reference/whatsapp-templates/get-a-single-template-by-uuid.md): Returns the full template resource including the components array (HEADER/BODY/FOOTER/BUTTONS) exactly as stored locally. Use this to inspect a template's structure before sending — for example to know which {{n}} variables you need to supply. - [List WhatsApp Business Accounts linked to this tenant](https://developers.mihu.ai/api-reference/whatsapp-templates/list-whatsapp-business-accounts-linked-to-this-tenant.md): Returns the WABAs this tenant has configured (via WhatsappSetting). Use these waba_ids when listing/creating/syncing templates. If empty, no WhatsApp Business Account has been linked yet — set one up under Settings → WhatsApp first. - [List WhatsApp message templates](https://developers.mihu.ai/api-reference/whatsapp-templates/list-whatsapp-message-templates.md): Paginated list of templates stored locally. Filter by waba_id (recommended — templates are scoped per WhatsApp Business Account), status, category, language, or text search. To pull the latest from Meta into local DB first, call POST /api/v1/whatsapp/templates/sync. - [Refresh a single template's status from Meta](https://developers.mihu.ai/api-reference/whatsapp-templates/refresh-a-single-templates-status-from-meta.md): Re-fetches this one template from Meta and updates local status/components/category. The typical poll after POST /templates to check whether Meta has moved the template from PENDING to APPROVED, REJECTED, or PAUSED. - [Upload a media file](https://developers.mihu.ai/api-reference/whatsapp-templates/upload-a-media-file.md): Upload an image, video, or document to Meta and receive a temporary media `handle` for a WhatsApp template header. - [Send WhatsApp template message](https://developers.mihu.ai/api-reference/whatsapp/send-whatsapp-template-message.md): Sends a WhatsApp template message to a specified phone number using an agent's configured WhatsApp Business API. The template must be pre-approved by WhatsApp and the agent must have WhatsApp channel configured. - [Authentication](https://developers.mihu.ai/authentication.md): Learn how to authenticate your API requests with Mihu - [Error Handling](https://developers.mihu.ai/errors.md): Understand error codes, responses, and troubleshooting strategies for the Mihu API - [Mihu MCP Server](https://developers.mihu.ai/guides/mcp.md): Connect LLM clients to Mihu via the Model Context Protocol - [Campaign Management](https://developers.mihu.ai/guides/services/campaigns.md): Create and manage multi-channel communication campaigns - [Contact Management](https://developers.mihu.ai/guides/services/contacts.md): Organize and manage your contact database with custom fields and segmentation - [Services Overview](https://developers.mihu.ai/guides/services/overview.md): Overview of Mihu platform services and capabilities - [AI Voice Agents](https://developers.mihu.ai/guides/services/voice-agents.md): Create and manage intelligent AI voice agents for automated phone conversations - [WhatsApp Messaging](https://developers.mihu.ai/guides/services/whatsapp.md): Send automated WhatsApp messages using pre-approved templates - [Introduction](https://developers.mihu.ai/introduction.md): Welcome to Mihu API Documentation - Build powerful AI-driven voice and text conversations - [Monitoring & Logs](https://developers.mihu.ai/monitoring.md): Track your API requests, responses, and webhook deliveries in real-time - [Quickstart](https://developers.mihu.ai/quickstart.md): Get started with the Mihu API in minutes - make your first call - [Webhooks](https://developers.mihu.ai/webhooks.md): Receive real-time notifications about events in your Mihu workspace ## OpenAPI Specs - [api-docs](https://app.mihu.ai/docs/api-docs.json) ## Optional - [Mihu ](https://mihu.ai) - [Login](https://app.mihu.ai)