---
title: "Save Agent Workflow"
method: PUT
path: "/v1/agents/{agent_id}/workflow"
tags: ["Agent Workflow"]
---

# Save Agent Workflow

`PUT /v1/agents/{agent_id}/workflow`

Attach an imported workflow to an agent and mark the agent's provider CUSTOM.

This is the persistence step for document-ingested workflows (e.g. an IVR
diagram parsed in Bluejay AI): the reviewed graph becomes the agent's stored
workflow with no external source behind it.

Only agents with no workflow provider (or already CUSTOM) accept an import —
an agent synced from ElevenLabs/VAPI/Retell/DFCX is refused with 409 so an
import can never clobber a provider-managed workflow.

## Path parameters

- `agent_id` string, required

## Headers

- `X-API-Key` string, required

## Request body

- SaveWorkflowRequest
  - `workflow` object, required — Scenario-graph blob: {nodes: [{id, type, data}], edges: [{id, source, target, sourceHandle?}], is_ivr_flow?}

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/getbluejay/apis/bluejay-api.md) · [All operations](https://skmtc.net/getbluejay/apis/bluejay-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getbluejay/bluejay-api/versions/f48cef80963f/schema)
