---
title: "Create V2 chat agent"
method: POST
path: "/v1/agents"
tags: ["agents"]
---

# Create V2 chat agent

`POST /v1/agents`

Creates a V2 chat agent and its initial trigger set. Requires a token with write access.

## Request body

- object — Request body for creating a V2 chat agent with one or more triggers.
  - `workspace_id` string, required
  - `name` string, required
  - `description` string
  - `color` string
  - `icon_id` integer
  - `instructions` string
  - `model` string, nullable — Override the LLM this agent runs on. Must be a `model_string` from `GET /v1/models` (MCP: `list_supported_models`), e.g. `openai:gpt-4o`. Omit to leave unchanged; send null to reset to the workspace default. Reads return the configured value, or `default` when none is set.
  - `guardrails` object[]
    - `title` string, required
    - `knowledge` string, required
  - `skill_ids` string[]
  - `operation_mode` 'autopilot' | 'copilot' | 'inactive'
  - `autopilot_schedule` object — Autopilot schedule. Autopilot only sends inside the enabled day windows; outside them the agent falls back to copilot. Omit or set null for always-on autopilot.
    - `timezone` string, required — IANA timezone the schedule is evaluated in, e.g. "America/New_York".
    - `days` object[], required — Per-day autopilot windows.
      - `day` 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday', required — Day of the week this window applies to.
      - `enabled` boolean, required — Whether autopilot is active on this day.
      - `ranges` object[], required — Time windows during which autopilot is active on this day.
        - `start` string, required — Window start as a 12-hour clock time, e.g. "09:00 AM".
        - `end` string, required — Window end as a 12-hour clock time, e.g. "05:00 PM".
  - `custom_response_delay_ms` integer
  - `auto_mark_as_done` boolean
  - `response_language` 'English' | 'Original' | 'Spanish' | 'French' | 'German' | 'Italian' | 'Portuguese', nullable
  - `responseflow` boolean
  - `output_schema` object[]
    - `name` string, required
    - `description` string
    - `type` string, required
    - `is_required` boolean
  - `enabled` boolean
  - `triggers` union[], required
    - union
      - object
        - `type` 'message', required
        - `name` string, required
        - `description` string, nullable
        - `config` union, required
          - object
            - `scopeType` 'all', required
          - object
            - `scopeType` 'inbox', required
            - `inboxTypeId` string, required
          - object
            - `scopeType` 'channel', required
            - `channelType` 'airbnb' | 'booking_com' | 'sms' | 'whatsapp' | 'messenger' | 'email' | 'unthreaded_email' | 'pms' | 'widget' | 'instagram' | 'vrbo' | 'expedia' | 'helpdesk' | 'slack' | 'line_oa' | 'portal', required
        - `enabled` boolean
      - object
        - `type` 'webhook', required
        - `name` string, required
        - `description` string, nullable
        - `config` unknown
        - `enabled` boolean
      - object
        - `type` 'cron', required
        - `name` string, required
        - `description` string, nullable
        - `config` object, required
          - `prompt` string, required
          - `spec` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `timezone` string, required
          - `overlapPolicy` 'skip', required
        - `enabled` boolean
      - object
        - `type` 'event', required
        - `name` string, required
        - `description` string, nullable
        - `config` object, required
          - `eventType` 'CONTACT_NEW' | 'CONTACT_ATTRIBUTE_UPDATED' | 'CONTACT_LABEL_ADDED' | 'CONVERSATION_TAG_ADDED' | 'TASK_NEW' | 'TASK_STATUS_CHANGED' | 'TASK_COMPLETED' | 'TASK_STARTED' | 'TASK_ASSIGNED' | 'RESERVATION_NEW' | 'RESERVATION_MODIFIED' | 'RESERVATION_LABEL_ADDED' | 'BOOKING_NEW' | 'BOOKING_MODIFIED' | 'CLEANING_STATUS_CHANGED' | 'ESCALATION_CREATED' | 'CALL_COMPLETED' | 'CALL_MISSED' | 'WIDGET_FORM_SUBMITTED' | 'WIDGET_SESSION_ENDED' | 'AI_TRIGGER' | 'WEBHOOK_RECEIVED' | 'STRIPE_WEBHOOK' | 'PORTAL_VIEWED' | 'PORTAL_OFFER_VIEWED' | 'PORTAL_OFFER_ADDED_TO_CART' | 'PORTAL_OFFER_REMOVED_FROM_CART' | 'PORTAL_CHECKOUT_OPENED' | 'PORTAL_CHECKOUT_STARTED' | 'PORTAL_PAYMENT_SUBMITTED' | 'PORTAL_CHECKOUT_SUCCEEDED' | 'PORTAL_PAYMENT_FAILED' | 'PORTAL_REFUND_ISSUED' | 'PORTAL_SESSION_COMPLETED' | 'PORTAL_SESSION_EXPIRED' | 'PORTAL_REQUEST_SUBMITTED' | 'PORTAL_REQUEST_APPROVED' | 'PORTAL_REQUEST_DECLINED' | 'PORTAL_REQUEST_EXPIRED' | 'PORTAL_DELIVERY_FAILED' | 'PORTAL_MANDATORY_FEE_PAID' | 'PORTAL_SECURITY_DEPOSIT_AUTHORIZED' | 'PORTAL_SECURITY_DEPOSIT_CAPTURED' | 'PORTAL_SECURITY_DEPOSIT_RELEASED' | 'PORTAL_SECURITY_DEPOSIT_RENEWAL_REQUIRED' | 'PORTAL_AGREEMENT_SIGNED' | 'PORTAL_DAMAGE_WAIVER_SIGNED' | 'PORTAL_DAMAGE_WAIVER_PAID' | 'PORTAL_GUEST_DETAILS_SUBMITTED' | 'PORTAL_ADDITIONAL_QUESTIONS_SUBMITTED' | 'PORTAL_OTHER_GUESTS_SUBMITTED' | 'PORTAL_CHECK_IN_RATED', required
          - `prompt` string, required
        - `enabled` boolean
      - object
        - `type` 'mention', required
        - `name` string, required
        - `description` string, nullable
        - `config` union, required
          - object
            - `tool` 'slack', required
            - `slackTeamId` string
            - `slackChannelId` string
          - object
            - `tool` 'linear', required
            - `linearTeamId` string
          - object
            - `tool` 'microsoft_teams', required
            - `tenantId` string
            - `teamId` string
            - `channelId` string
        - `enabled` boolean
      - object
        - `type` 'manual', required
        - `name` string, required
        - `description` string, nullable
        - `config` unknown
        - `enabled` boolean

## Response `201`

Agent created

- object — Single V2 chat agent response.
  - `data` object, required
    - `id` string, required
    - `workspace_id` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `color` string, nullable, required
    - `icon_id` number, nullable, required
    - `version` 'v2', required
    - `instructions` string, nullable, required
    - `model` string, required — The LLM this agent runs on: a kb_api `model_string` (e.g. `openai:gpt-4o`), or `default` when no override is set.
    - `guardrails` object[], required
      - `id` string
      - `title` string, required
      - `knowledge` string, required
    - `operation_mode` 'autopilot' | 'copilot' | 'inactive', required
    - `autopilot_schedule` object, nullable, required — Autopilot schedule. Autopilot only sends inside the enabled day windows; outside them the agent falls back to copilot. Omit or set null for always-on autopilot.
      - `timezone` string, required — IANA timezone the schedule is evaluated in, e.g. "America/New_York".
      - `days` object[], required — Per-day autopilot windows.
        - `day` 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday', required — Day of the week this window applies to.
        - `enabled` boolean, required — Whether autopilot is active on this day.
        - `ranges` object[], required — Time windows during which autopilot is active on this day.
          - `start` string, required — Window start as a 12-hour clock time, e.g. "09:00 AM".
          - `end` string, required — Window end as a 12-hour clock time, e.g. "05:00 PM".
    - `custom_response_delay_ms` number, required
    - `auto_mark_as_done` boolean, required
    - `response_language` 'English' | 'Original' | 'Spanish' | 'French' | 'German' | 'Italian' | 'Portuguese', nullable, required
    - `responseflow` boolean, required
    - `output_schema` object[], required
      - `name` string, required
      - `description` string
      - `type` string, required
      - `is_required` boolean
    - `skill_ids` string[], required
    - `connection_ids` string[], required — Ids of the integration connections linked to this agent. Use list_agent_connections (GET /v1/agents/{id}/connections) for the full connection details and their tools.
    - `enabled` boolean, required
    - `triggers` union[], required
      - union
        - object
          - `id` string, required
          - `workspace_id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `type` 'message', required
          - `config` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - unknown
          - `enabled` boolean, required
          - `created_at` string, required
          - `updated_at` string, required
        - object
          - `id` string, required
          - `workspace_id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `type` 'webhook', required
          - `config` unknown
          - `enabled` boolean, required
          - `created_at` string, required
          - `updated_at` string, required
        - object
          - `id` string, required
          - `workspace_id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `type` 'cron', required
          - `config` unknown
          - `enabled` boolean, required
          - `created_at` string, required
          - `updated_at` string, required
        - object
          - `id` string, required
          - `workspace_id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `type` 'event', required
          - `config` unknown
          - `enabled` boolean, required
          - `created_at` string, required
          - `updated_at` string, required
        - object
          - `id` string, required
          - `workspace_id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `type` 'mention', required
          - `config` union, required
            - object
              - …
            - object
              - …
            - object
              - …
          - `enabled` boolean, required
          - `created_at` string, required
          - `updated_at` string, required
        - object
          - `id` string, required
          - `workspace_id` string, required
          - `name` string, required
          - `description` string, nullable, required
          - `type` 'manual', required
          - `config` unknown
          - `enabled` boolean, required
          - `created_at` string, required
          - `updated_at` string, required
    - `created_at` string, required
    - `updated_at` string, required

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — Forbidden
- `409` — Conflict
- `429` — Rate limit exceeded

---

[API](https://skmtc.dev/conduit/apis/conduit-api.md) · [All operations](https://skmtc.dev/conduit/apis/conduit-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/conduit/conduit-api/revisions/3ad7e17f96ad/schema)
