---
title: "Create a workflow"
method: POST
path: "/v1/workflows"
tags: ["Workflows"]
---

# Create a workflow

`POST /v1/workflows`

Create a new workflow definition for tracking agent runs.

## Request body

- object — Request body for creating a new workflow.
  - `name` string, required — Human-readable name for the workflow (required)
  - `slug` string, required — URL-safe identifier - must be lowercase alphanumeric with underscores or hyphens (required)
  - `productSurface` 'API' | 'RPC' | 'WEBHOOK' | 'AGENT' | 'PIPELINE' | 'CUSTOM' — Product category for dashboard grouping. Use API for REST APIs, RPC for blockchain calls, WEBHOOK for webhooks, AGENT for AI agents, PIPELINE for data pipelines, CUSTOM for other use cases.
  - `chain` 'ETHEREUM' | 'SOLANA' | 'POLYGON' | 'ARBITRUM' | 'OPTIMISM' | 'BASE' | 'AVALANCHE' | 'BSC' — Blockchain network (optional, for RPC workflows only)
  - `description` string — Optional description of what this workflow does
  - `metadata` object — Optional metadata for custom tracking

## Response `201`

Workflow created

- object — Workflow created
  - `id` string, required — Unique identifier for the workflow
  - `name` string, required — Human-readable name for the workflow
  - `slug` string, required — URL-safe identifier (lowercase, alphanumeric, hyphens, underscores)
  - `productSurface` 'API' | 'RPC' | 'WEBHOOK' | 'AGENT' | 'PIPELINE' | 'CUSTOM', required — Product category for dashboard grouping. API = REST API calls, RPC = Blockchain RPC calls, WEBHOOK = Webhook deliveries, AGENT = AI agent executions, PIPELINE = Data pipelines, CUSTOM = Custom workflows
  - `chain` 'ETHEREUM' | 'SOLANA' | 'POLYGON' | 'ARBITRUM' | 'OPTIMISM' | 'BASE' | 'AVALANCHE' | 'BSC', nullable — Blockchain network for RPC workflows (optional)
  - `description` string, nullable — Optional description of what this workflow does
  - `metadata` object, nullable — Optional metadata for custom tracking
  - `isActive` boolean, required — Whether this workflow is currently active
  - `createdAt` string, date-time — When the workflow was created
  - `updatedAt` string, date-time — When the workflow was last updated

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `409` — Workflow with this slug already exists

---

[API](https://skmtc.net/usedrip/apis/drip-api.md) · [All operations](https://skmtc.net/usedrip/apis/drip-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/usedrip/drip-api/revisions/2cb1567969ca/schema)
