> ## Documentation Index
> Fetch the complete documentation index at: https://omni.fireflo.au/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v1/agents/{agent_id}/activate

> Put a verified AI agent live, or switch a disabled one back on.

Puts an agent live. It needs a verified key and model, a model its key allows, at least one pipeline it is engaged on (set on the panel), and room in the plan's number of live agents. An appointments agent also needs Appointments switched on.

<Note>Needs the `agents:write` scope.</Note>

## Path parameters

| Field | Type | Required | Notes |
| :- | :- | :- | :- |
| `agent_id` | integer | Yes | The agent's id. |

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.fireflo.au/v1/agents/12/activate" \
    -H "Authorization: Bearer $OMNI_API_KEY"
  ```

  ```python Python theme={null}
  import os

  import requests

  response = requests.post(
      "https://api.fireflo.au/v1/agents/12/activate",
      headers={"Authorization": f"Bearer {os.environ['OMNI_API_KEY']}"},
  )
  print(response.status_code, response.json())
  ```

  ```javascript Node theme={null}
  const response = await fetch("https://api.fireflo.au/v1/agents/12/activate", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.OMNI_API_KEY}` },
  });
  console.log(response.status, await response.json());
  ```
</CodeGroup>

## Response

`200 OK` — the agent, now `active`.

```json theme={null}
{
  "id": 12,
  "name": "Priya",
  "role": "support",
  "workflow": {
    "version": 3,
    "blocks": 4,
    "ai_blocks": 1,
    "unpublished": false
  },
  "status": "active",
  "objective": "Answer order and refund questions within minutes and hand complaints to the team.",
  "provider": {
    "id": 4,
    "label": "OpenAI — main",
    "provider": "openai"
  },
  "model": "gpt-4o-mini",
  "instructions": "You are Priya from Sharma Electronics, Pune. Reply in the customer's language — English, Hindi or Hinglish. Never promise a refund date.",
  "channels": [
    "whatsapp",
    "sms"
  ],
  "booking_types": [],
  "knowledge_collections": [
    3
  ],
  "answer_threshold": 80,
  "handoff_assignees": [
    21,
    34
  ],
  "channels_available": [
    "whatsapp",
    "sms"
  ],
  "channels_missing": [],
  "action_policy": {
    "send_message": "auto",
    "send_whatsapp_template": "approval",
    "send_broadcast": "approval",
    "request_template": "approval",
    "create_deal": "off",
    "move_deal_stage": "auto",
    "mark_deal_won": "off",
    "mark_deal_lost": "off",
    "update_deal_value": "off",
    "add_note": "auto",
    "update_contact": "auto",
    "follow_up": "auto",
    "close_conversation": "auto",
    "handoff_to_human": "auto"
  },
  "approval_mode": "plan",
  "replan": {
    "triggers": [
      "on_inbound"
    ],
    "every_n_hours": null,
    "max_replans_per_contact_per_day": 6
  },
  "working_hours": {
    "days": [
      0,
      1,
      2,
      3,
      4,
      5
    ],
    "start": "09:00",
    "end": "19:00"
  },
  "limits": {
    "daily_token_limit": 100000,
    "max_steps_per_plan": 6,
    "max_messages_per_contact_per_day": 3,
    "max_broadcast_audience": 500
  },
  "auto_assign_inbound": true,
  "pause_on_human_reply": true,
  "pause_minutes": 30,
  "after_pause": "resume",
  "pipelines": [
    {
      "id": 2,
      "name": "Service requests",
      "engaged": true,
      "entry_stage": "New"
    }
  ],
  "stats": {
    "tokens_today": 18450,
    "active_contacts": 27,
    "awaiting_approval": 2,
    "plans_today": 41
  },
  "verified_at": "2026-09-28T11:04:52+05:30",
  "created_at": "2026-09-28T10:41:07+05:30"
}
```

## Errors

Every refusal is `{"error": {"code", "message", "field"}}`; `field` is there when one input is at fault.

| Status | Error code | When |
| :- | :- | :- |
| 404 | `not_found` | No agent of this account's has that id. |
| 409 | `invalid_state` | It can't go live yet; the message lists what is missing — for example "Verify the key and model. Engage at least one pipeline." |
| 404 | `module_off` | The account doesn't have AI agents on: they aren't in its plan, or are switched off for it. |
| 403 | `scope_missing` | The key doesn't have the `agents:write` scope. |

Any request can also be refused for its key, its account or its rate (`key_required`, `invalid_key`, `account_suspended`, `plan_excludes_api`, `address_not_allowed`, `rate_limited`); see [the overview](/api-reference/overview).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.