Workflows (beta)
When one answer isn't the job, draw the whole job
Workflows chain your agents with classification, extraction, guardrails, MCP tools, HTTP calls, Slack and email. Lay the steps out on a canvas, test the draft, publish it, then trigger it from any system that can send a webhook.
200 free credits when you sign up. No card needed.
The designer
Steps are nodes, connections are edges. Each step can use the run's input and any earlier step's output in its settings.
- Changes save as you go; leaving the page mid-edit keeps a local copy that's restored next time.
- A run log shows each step's status, output and timing.
- Runs carry on in the background if you close the tab.
Customer {{input.email}} wrote:{{input.message}}Category: {{steps.classify_1.output}}Order: {{steps.extract_1.output.order_id}}Blocks
Fifteen step types.
| Start | The run's input: the fields you define, checked on every run |
|---|---|
| Agent | Asks one of your agents, with its knowledge and tools |
| Knowledge lookup | Searches an agent's knowledge without writing an answer |
| Classify | Sorts text into labels you describe; each label is its own exit on the canvas |
| Extract | Pulls typed fields (text, number, date, email, yes/no) out of text |
| Guardrail check | Runs built-in or custom checks and branches on pass or fail |
| MCP tool call | Calls one tool on one of your MCP servers |
| HTTP request | GET, POST, PUT, PATCH or DELETE to any public URL |
| Condition | Branches on contains, equals, regex, empty or not |
| Set value | Builds a value from earlier steps' outputs |
| Delay | Waits up to 30 seconds |
| Send email | Sends an email (100 a day per account) |
| Slack message | Posts to a Slack incoming webhook |
| Webhook | POSTs a JSON payload to your endpoint, signed with HMAC-SHA256 |
| End | Finishes the run and sets its output |
Guardrails
A Guardrail check block tests text before it moves on: a draft reply before it's emailed, or a customer's message before an agent sees it.
| Built in | PII, prompt injection, toxicity, off-topic and profanity |
|---|---|
| Your own | A plain-language rule checked by a model, a regular expression, or a list of blocked words |
| Safety | Regular expressions run with a time limit and a pattern length cap, so a bad pattern fails its step instead of stalling the run. An empty custom rule fails closed |
Draft, test, publish
A workflow is a draft until you publish it. Publishing takes a snapshot; live runs only ever use that snapshot.
- Test run, in the designer, runs the draft with input you type and shows each step as it goes.
- Publish freezes the current draft as the live version. Keep editing the draft without touching what's live.
- Back to draft stops live runs until you publish again.
Running a workflow
Two ways to start a live run of a published workflow.
By webhook
Every published workflow has a hook URL and a token (header X-Workflow-Token or ?token=). The JSON body becomes the run's input. The call answers 202 with the run id; add ?wait=true to wait up to 30 seconds for the result.
curl -X POST "https://app.sentientone.ai/api/workflows/hooks/$WORKFLOW_ID?wait=true" \ -H "Content-Type: application/json" \ -H "X-Workflow-Token: $WORKFLOW_TOKEN" \ -d '{"email": "sam@example.com", "message": "My invoice is wrong"}'From your code
POST /v1/workflows/run with your secret key streams the run's steps as server-sent events, or returns the finished run as JSON with "stream": false.
curl https://api.sentientone.ai/v1/workflows/run \ -H "Content-Type: application/json" \ -H "X-Api-Key: $SENTIENTONE_API_KEY" \ -d '{"workflow_id": "…", "mode": "live", "stream": false, "input": {"message": "My invoice is wrong"}}'There are no scheduled triggers yet. Workflows can also run inside your own scheduler by calling either of these.
Outbound security
Workflows reach out to the internet, so their outbound calls are fenced in.
- Webhook blocks sign each payload with HMAC-SHA256 over
<timestamp>.<raw body>using the workflow'swhsec_secret, sent asX-SentientOne-TimestampandX-SentientOne-Signature: sha256=…. - HTTP, Webhook and Slack blocks resolve the host once, refuse private, loopback, link-local and other non-public addresses, connect to the checked address (no DNS rebinding) and don't follow redirects.
- Signing secrets and Slack URLs are encrypted at rest with AES-256-GCM.
The same address guard protects MCP calls.
Limits and credits
| Runs | 30 a minute per account, 5 at once (HTTP 429 TOO_MANY_RUNNING) |
|---|---|
| Webhook calls | 60 a minute per workflow, body up to 100 KB |
| Size | 50 nodes and 100 edges; a run takes at most 25 steps and 280 seconds |
| Agent step | 1 credit per reply |
| Classify, Extract, Guardrail | 1 credit each time they run |
| Outbound blocks | A live run with an HTTP, Webhook, Slack or Email block costs 1 credit at start |
| Everything else | Free. Test runs and runs without outbound blocks don't pay the run credit; their Agent and AI steps cost the same as live |
Automate the busywork around your agents
Sign up and you get 200 free credits, no card needed. Create an agent, add your knowledge, try it in the Playground, then call it from your code or put it on your website.