shiftlabs Start free

Docs

Write a workflow in TypeScript or Python, deploy it with one call, and start it from any webhook.

Three telephone operators at Fort Richardson's first switchboard in 1950, call records clipped in sheaves above the board.
Fort Richardson switchboard, 1950

Quickstart

From a new account to a finished run.

  1. Sign up

    Create an account at app.shiftlabs.org with a second factor, then name your workspace.

  2. Create an API key

    An admin creates a key with the developer role under API keys. It is shown once; export it as SHIFTLABS_API_KEY.

  3. Write a workflow

    One module whose default export is workflow(…). See Workflows.

  4. Deploy it

    PUT /v1/workflows/:name with the source as the body. The answer carries the new version hash.

  5. Create a trigger

    POST /v1/triggers answers with the trigger URL. Point any webhook sender at it.

  6. Send a delivery

    The trigger answers 202 with a runId. Follow the run in the dashboard or at /v1/runs/:id/timeline.

shellcurl
# Deploy. Answers {"versionHash", "sizeBytes", "warnings"}.
curl -X PUT https://api.shiftlabs.org/v1/workflows/refund-check \
  -H "authorization: Bearer $SHIFTLABS_API_KEY" \
  --data-binary @refund-check.ts

# Create a trigger. Answers 201 {"triggerId", "url", "signingScheme"}.
curl -X POST https://api.shiftlabs.org/v1/triggers \
  -H "authorization: Bearer $SHIFTLABS_API_KEY" -H "content-type: application/json" \
  -d '{"workflow": "refund-check"}'

# Start a run. Answers 202 {"runId"}.
curl -X POST https://hooks.shiftlabs.org/t/<triggerId> \
  -H "content-type: application/json" -d '{"id": "ch_123"}'

# Follow it.
curl https://api.shiftlabs.org/v1/runs/<runId>/timeline \
  -H "authorization: Bearer $SHIFTLABS_API_KEY"

Concepts

The handful of things everything else is built from.