Build
Describe a new flow or supply existing YAML to modify.
The AI native company for Healthcare
Custom workflows
Planner turns a natural-language operating specification into tested activities and a reusable workflow. It is a durable review loop—not a single prompt that silently deploys code.
Mental model
Describe a new flow or supply existing YAML to modify.
Planner runs real partial workflow tests and repairs failures.
Accept, reject, retry, message, or test an edit for every step.
Create a pinned organization production definition.
Schedule, trigger, observe phases, and query analytics.
Capability boundary
| Capability | Availability | What that means |
|---|---|---|
| Portal navigation, extraction, upload, and download | Self-service | Planner creates a browser step; use Studio when it needs direct work. |
| Pure computation and data normalization | Self-service | Planner can create organization-scoped compute activities. |
| OCR and structured document extraction | Self-service | Planner can compose the platform OCR activity and downstream transforms. |
| Sequence, parallel work, loops, branches, child flows, and error handling | Self-service | Describe cardinality, concurrency, stop rules, and failure behavior explicitly. |
| Call an existing integration capability | Existing setup required | The organization must already have an active connection and exposed capability. |
| Create a new arbitrary integration or connector | XY-built | Integration Factory creation is not currently a partner API operation. |
| Password, TOTP, PIN, and portal credential use | Self-service | Create a vault reference and bind its ID; secrets never belong in the Planner request. |
| Automated SMS or email OTP retrieval | Existing setup required | A phone field alone does not provision an inbox, carrier, or messaging integration. |
| Specialized queues, entity writeback, webhooks, or typed domain clients | XY-built | Submit the interfaces and acceptance criteria as a custom-agent request. |
| Recurring production execution | Self-service | Promote, then create and operate a workflow schedule. |
| One-off execution of any promoted Planner definition | Not exposed | Only an existing schedule can be triggered immediately; published agents have their own execution route. |
| Run phases and governed analytics | Self-service read-only | Read phase projections and approved metrics without changing runtime state. |
| Build reporting in a partner UI | Self-service read-only | Use aggregate metrics or presentation-ready metric views with tile data and visualization metadata. |
| Create or edit XY dashboard definitions | Not exposed | The partner API returns analytics data but does not author dashboard configurations inside XY. |
| Start Browser Studio | Existing Planner step required | Studio creates a separate retained authoring Chrome for an existing run_browser_workflow step. |
Start and follow
curl --fail-with-body --request POST \
--header "Authorization: Bearer ${XY_API_KEY}" \
--header "Idempotency-Key: portal-reconciliation-v1" \
--header "Content-Type: application/json" \
"${XY_API_BASE}/planner/builds" \
--data '{
"request": "Sign in, collect open records, normalize them, and return a per-record result.",
"context": {
"portal_url": "https://portal.example.com/open-records",
"credential_id": "cred_REPLACE",
"inputs": [{"name": "cutoff_date", "type": "string"}],
"outputs": [{"name": "results", "type": "array"}]
}
}'# Replay durable events, then keep following new ones.
curl --fail-with-body --no-buffer \
--header "Authorization: Bearer ${XY_API_KEY}" \
--header "Accept: text/event-stream" \
"${XY_API_BASE}/planner/builds/${BUILD_ID}/events?after=0&stream=true"
# Reconnect without restarting Planner work.
curl --fail-with-body \
--header "Authorization: Bearer ${XY_API_KEY}" \
"${XY_API_BASE}/planner/builds/${BUILD_ID}/events?after=${LAST_EVENT_ID}"Review
curl --fail-with-body --request POST \
--header "Authorization: Bearer ${XY_API_KEY}" \
--header "Idempotency-Key: ${BUILD_ID}-step-1-accept-v1" \
--header "Content-Type: application/json" \
"${XY_API_BASE}/planner/builds/${BUILD_ID}/steps/1/actions" \
--data "{
"action": "ACCEPT",
"expected_state_version": ${STATE_VERSION}
}"Promote and operate
curl --fail-with-body --request POST \
--header "Authorization: Bearer ${XY_API_KEY}" \
--header "Idempotency-Key: ${BUILD_ID}-promote-v1" \
--header "If-Match: ${STATE_VERSION}" \
--header "Content-Type: application/json" \
"${XY_API_BASE}/planner/builds/${BUILD_ID}/promote" \
--data '{
"name": "Portal record reconciliation",
"description": "Collects and normalizes open records."
}'curl --fail-with-body --request POST \
--header "Authorization: Bearer ${XY_API_KEY}" \
--header "Content-Type: application/json" \
"${XY_API_BASE}/workflow-definitions/${WORKFLOW_DEFINITION_ID}/schedule" \
--data '{
"cron_expression": "0 9 * * 1-5",
"input": {"region": "west"},
"overlap_policy": "SKIP",
"note": "Weekday run"
}'
# Trigger that existing schedule now.
curl --fail-with-body --request POST \
--header "Authorization: Bearer ${XY_API_KEY}" \
--header "Content-Type: application/json" \
"${XY_API_BASE}/workflow-definitions/${WORKFLOW_DEFINITION_ID}/schedule/trigger" \
--data '{}'Choose an overlap policy, freeze explicit input, and update the schedule when its input contract changes.
Read execution or workflow-run phases without mutating the underlying run.
Read aggregate metrics or presentation-ready tile data, then render the charts and dashboards in your own product.