Workflows SDK Quick Reference
This is an approximate API surface map -- not a substitute for the real SDK.
Always verify signatures against the installed package before generating code.
Where to find the real SDK source
API surface map (defining tasks, task options, triggering runs, error types)
Instance types
Retry defaults
Environment variables
Where to find the real SDK source
SDK_ROOT=$( pip show render_sdk | grep Location | cut -d' ' -f2) /render_sdk
# Signatures and source
# $SDK_ROOT/__init__.py — exports + usage examples in docstring
# $SDK_ROOT/workflows/app.py — Workflows class, @app.task, Retry, from_workflows()
# $SDK_ROOT/workflows/task.py — task internals, Options dataclass
# $SDK_ROOT/client/workflows_sync.py — sync client methods (Render().workflows.*)
# $SDK_ROOT/client/workflows.py — async client methods (RenderAsync().workflows.*)
# $SDK_ROOT/client/errors.py — error hierarchy
# $SDK_ROOT/client/types.py — TaskRun, TaskRunDetails, etc.
TS_ROOT=node_modules/@renderinc/sdk
# Signatures and types
# $TS_ROOT/dist/workflows.d.ts — task() function, task options types
# $TS_ROOT/dist/client.d.ts — Render class, startTask, runTask, etc.
# $TS_ROOT/dist/index.d.ts — top-level exports
# $TS_ROOT/README.md — usage examples (if present)
Concept
Python
TypeScript
Entry point
from render_sdk import Workflows
import { task } from "@renderinc/sdk/workflows"
Define a task
@app.task decorator
task(options, fn)
Start server
app.start() in __main__
Auto-starts via RENDER_SDK_SOCKET_PATH
Merge multi-file tasks
Workflows.from_workflows(app1, app2)
Side-effect imports in index.ts
Retry config
Retry(max_retries, wait_duration_ms, backoff_scaling)
{ maxRetries, waitDurationMs, backoffScaling }
Option
Python (@app.task kwarg)
TypeScript (task() first arg)
Name
name
name (required)
Retry
retry (Retry instance)
retry (object)
Timeout
timeout_seconds
timeoutSeconds
Instance type
plan
plan
Workflow-level defaults: Workflows(default_retry=..., default_timeout=..., default_plan=...).
Triggering runs (client SDK)
Concept
Python sync (Render)
Python async (RenderAsync)
TypeScript (Render)
Fire-and-forget
start_task()
await start_task()
await startTask()
Start + wait
run_task()
await run_task()
await runTask()
Get run details
get_task_run()
await get_task_run()
await getTaskRun()
List runs
list_task_runs()
await list_task_runs()
await listTaskRuns()
Cancel run
cancel_task_run()
await cancel_task_run()
await cancelTaskRun()
Stream events (SSE)
task_run_events()
task_run_events()
taskRunEvents()
Task identifier format: {workflow-slug}/{task-name}.
Python
TypeScript
Notes
RenderError
RenderError
Base class
ClientError
ClientError
400-level
RateLimitError
—
429 (subclass of ClientError)
ServerError
ServerError
500-level
TimeoutError
—
Request timeout
TaskRunError
—
Task run failed
—
AbortError
Request aborted via AbortSignal
Import paths -- Python: render_sdk.client.errors, TypeScript: @renderinc/sdk.
Plan
Specs
starter
0.5 CPU / 512 MB
standard (default)
1 CPU / 2 GB
pro
2 CPU / 4 GB
pro_plus
4 CPU / 8 GB
pro_max
8 CPU / 16 GB
pro_ultra
16 CPU / 32 GB
pro_plus, pro_max, pro_ultra require requesting access.
Scenario
backoff_scaling default
Explicit retry config provided, field omitted
1.5
No retry config (built-in defaults)
2.0
Variable
Purpose
RENDER_API_KEY
API authentication
RENDER_SDK_SOCKET_PATH
Unix socket (set by Render)
RENDER_SDK_MODE
"run" or "register" (set by Render)
RENDER_SDK_AUTO_START
TS only: "false" to disable
RENDER_USE_LOCAL_DEV
"true" for local task server
RENDER_LOCAL_DEV_URL
Custom local server URL