Skip to main content
POST
/
api
/
v1
/
agents
/
{uuid}
/
guard-rules
Add ONE guard rule (preserves existing rules)
curl --request POST \
  --url https://{subdomain}.mihu.ai/api/v1/agents/{uuid}/guard-rules \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Compliance: PII over voice",
  "when_condition": "Customer asks the agent to read back full credit card or social security numbers over the call.",
  "example_phrases": [
    "can you read my full card number",
    "tell me my SSN"
  ],
  "then_action": "forward",
  "selected_channels": [
    "phone"
  ],
  "say_before_forwarding": "For security, I will transfer you to a verified human agent.",
  "destination_type": "extension",
  "destination": "210",
  "is_active": true
}
'
{
  "data": {
    "agent_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "name": "<string>",
    "description": "<string>",
    "company_name": "<string>",
    "role": "<string>",
    "objective": "<string>",
    "tone": "<string>",
    "behavior_guidelines": "<string>",
    "company_service": "<string>",
    "topic": "<string>",
    "length_detail": "<string>",
    "interest_of_product": "<string>",
    "negative_response": "<string>",
    "status": "pending",
    "custom_prompt": "<string>",
    "language": "<string>",
    "speed": "<string>",
    "timezone": "<string>",
    "appointment_scheduling_enabled": true,
    "appointment_scheduling_randomly": true,
    "custom_llm_url": "<string>",
    "recommendations": "<string>",
    "settings": {
      "voice": {},
      "text": {},
      "memorize": {},
      "evaluation": {}
    },
    "guidelines": [
      {
        "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "content": "Always confirm vehicle VIN or license plate before creating a service appointment.",
        "order": 0
      }
    ],
    "notes": [
      {
        "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "content": "Service appointments take 60-90 minutes for standard maintenance, 2-4 hours for warranty work. Same-day pickup is available before 4 PM.",
        "order": 0
      }
    ],
    "procedures": [
      {
        "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "name": "Book service appointment",
        "description": "Used when the customer wants to schedule a service appointment for their vehicle.",
        "steps": [
          {
            "order": 1,
            "description": "Ask the customer for their vehicle license plate or VIN.",
            "intent_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
          }
        ]
      }
    ],
    "training": [
      {
        "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "content": "What does Volvo's standard warranty cover?",
        "intent": "warranty_inquiry",
        "response": "Volvo's standard warranty covers 4 years or 100,000 km, whichever comes first, including parts and labor at any authorized service center. Would you like the details for your specific model?"
      }
    ],
    "intents": [
      {
        "intent_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "key": "<string>",
        "name": "<string>",
        "description": "<string>",
        "recommendation_actions": "<string>",
        "confidence_threshold": 123,
        "is_system": true,
        "intent_llm_handle_by_response": true,
        "webhook": {
          "url": "<string>",
          "auth_token": "<string>"
        },
        "parameters": [
          {
            "key": "email",
            "default": "<string>",
            "type": "string",
            "required": true
          }
        ],
        "created_at": "2023-11-07T05:31:56Z",
        "updated_at": "2023-11-07T05:31:56Z"
      }
    ],
    "webhooks": [
      {
        "webhook_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "url": "<string>",
        "events": [
          "conversation_status"
        ],
        "is_active": true,
        "has_secret": true,
        "created_at": "2023-11-07T05:31:56Z",
        "updated_at": "2023-11-07T05:31:56Z"
      }
    ],
    "appointments": {},
    "routing_rules": [
      {
        "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "detection_mode": "intent",
        "trigger_keyword": "sales",
        "department_name": "Sales Department",
        "phrases": [
          "I want to talk to sales"
        ],
        "ai_prompt": "Detect when the customer wants to speak with the sales team — they may ask about pricing, new products, quotes, or directly mention sales.",
        "voice_response": "Sure, I'll transfer you to our sales team now. One moment please.",
        "voice_on_error": "I'm sorry, I couldn't reach sales right now. Please call back later or leave a message.",
        "voice_on_success": "You've been successfully connected. Have a great day.",
        "destination_type": "extension",
        "destination": "101",
        "destination_agent_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "transfer_type": "transfer_call",
        "transfer_config": {},
        "priority": 1,
        "is_active": true
      }
    ],
    "guard_rules": [
      {
        "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "name": "Legal complaint escalation",
        "when_condition": "Customer mentions a legal complaint, lawyer, lawsuit, or threatens to take legal action.",
        "example_phrases": [
          "I'm calling my lawyer about this"
        ],
        "then_action": "forward",
        "selected_channels": [
          "phone"
        ],
        "say_before_forwarding": "I understand this is important — let me connect you with someone who can help.",
        "say_before_end": "I'm sorry I couldn't help further. Please contact our team directly. Goodbye.",
        "destination_type": "extension",
        "destination": "<string>",
        "destination_agent_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "is_active": true,
        "is_default": false
      }
    ],
    "phone_numbers": [
      {
        "phone_number_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "number": "<string>",
        "status": "active",
        "country_code": "<string>",
        "type": "<string>",
        "capabilities": {
          "call": true,
          "sms": true,
          "whatsapp": true,
          "whatsapp_call": true
        }
      }
    ],
    "channels": [
      {}
    ],
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z"
  }
}

Documentation Index

Fetch the complete documentation index at: https://developers.mindhunters.ai/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Use a Bearer token to access these API endpoints. Example: "Bearer {your-token}"

Path Parameters

uuid
string<uuid>
required

Body

application/json

Guard rules let the agent forward or end a conversation when a defined situation arises (compliance, safety, escalation). The runtime AI relies on when_condition and example_phrases to decide whether a customer utterance triggers the guard — rules without those fields filled cannot fire reliably.

name
string | null

Optional short name for the guard rule.

Example:

"Legal complaint escalation"

when_condition
string

Required. Natural-language description of the situation that should trigger this guard. The runtime AI uses this as instructions when classifying customer utterances. Be specific — 'customer is angry' is too vague; 'customer uses profanity or threatens to escalate' is actionable.

Example:

"Customer mentions a legal complaint, lawyer, lawsuit, or threatens to take legal action."

example_phrases
string[]

Customer utterances that should trigger this guard. Provide 3-5 varied phrasings — the runtime AI uses these as positive examples when classifying.

then_action
enum<string>

What the runtime agent does when the guard fires. forward transfers to a human or another agent; end_conversation politely ends the call/chat.

Available options:
forward,
end_conversation
Example:

"forward"

selected_channels
enum<string>[]

Channels where this guard is active. Defaults to phone-only.

Available options:
phone,
instagram,
whatsapp,
facebook_messenger
say_before_forwarding
string | null

Message spoken before the transfer when then_action=forward.

Example:

"I understand this is important — let me connect you with someone who can help."

say_before_end
string | null

Message spoken before ending when then_action=end_conversation.

Example:

"I'm sorry I couldn't help further. Please contact our team directly. Goodbye."

destination_type
enum<string> | null

Where the call is sent when then_action=forward (same semantics as routing rules).

Available options:
extension,
phone,
agent
destination
string | null

Destination value (extension, SIP URI, or E.164 phone) when then_action=forward.

destination_agent_uuid
string<uuid> | null

Target agent UUID when destination_type=agent.

is_active
boolean
Example:

true

is_default
boolean

Marks this guard as a default that auto-applies to new agents in the workspace.

Example:

false

Response

Guard rule added

data
object