Automation schema reference
Complete automation examples, typed inputs and outputs, and field reference.
For an introduction and setup instructions, see Automations.
An automation has four top-level blocks: ellipsis, optional trigger, optional input, and session. Unknown fields fail validation.
Scheduled test checks
The session records test results each night at 02:00 UTC.
React to a pull request
A matching head update starts a session. Repository filters decide which events match; the environment decides which repositories are available.
Typed input and output
Invoke with {"input":{"description":"Reject expired reset tokens"}}. Read the validated result from GET /v1/sessions/{session_id}/output.
Structured output is available with every supported Claude and OpenAI model. Use the model's matching harness (claude_code or codex); GET /v1/account/models lists each model's capabilities. An invocation cannot provide both input and prompt.
Workflow prompt
Put the task in the selected harness's prompt string:
The prompt becomes user input. On an invocation with structured input or a triggering event, the initial message also includes that context.
Codex skills
Declare a directory containing SKILL.md to give Codex a reusable procedure and its supporting files:
Codex receives the skill and can read its references or run its scripts. SKILL.md needs YAML frontmatter with a nonempty description; name defaults to the directory name and must fit 64 characters.
A skill uses the repository's checkout revision when that repository is in the session. Otherwise, repository.ref selects a revision, or the repository's default branch is used. A bare path uses the automation's source repository, falling back to the first session repository for inline configurations. Use an explicit repository for sessions without either.
Skills are resolved again when a session resumes. Missing files, inaccessible repositories, invalid metadata, and size-limit violations fail the session. Each skill allows up to 50 UTF-8 files, 64 KiB per file, and 512 KiB total. A session can declare up to 10 skills.
Identity and triggers
| Field | Meaning |
|---|---|
ellipsis.name | Automation name, unique within the account |
ellipsis.description | Description shown in the dashboard |
ellipsis.enabled | Whether the definition is active |
ellipsis.metadata | labels and annotations for your own metadata |
trigger | One cron or react trigger; omit for on-demand work |
input.json_schema | Schema required of the invocation's input |
input.message | Initial-message template; omit to render input as JSON |
In a template, {{field}} reads the caller's input. Triggered work can reference event fields with {{field}}. References must exist in the declared input or trigger schema.
Session settings
| Field | Meaning |
|---|---|
session.claude_code or session.codex | Exactly one harness block |
session.claude_code.model | Model ID; Claude Code inherits the account default |
session.claude_code.prompt or session.codex.prompt | The task, as a string |
session.environment | Saved environment name or inline environment |
session.permissions | GitHub and Ellipsis access grants |
session.budget | Per-session and trailing automation spend limits |
session.output.json_schema | Schema for the final JSON result |
session.skills | Repository skill references for Codex |
session.claude_code.settings, effort, fallback_model, max_turns | Supported Claude Code options |
See Models, Environment schema reference, and Permissions.
Budgets
Values are US dollars. day, week, and month cover trailing 1-, 7-, and 28-day windows. They measure this automation's spend.
Handlers use the same session.budget fields in slack.yaml, github.yaml, linear.yaml, and sentry.yaml. A handler's trailing limits measure spend across all its sessions, including sessions started from earlier revisions of that handler. Each handler has its own limits. An omitted trailing limit inherits the same platform ceiling as an automation.
Account and developer limits also apply. Limits stop new paid requests; in-flight requests and sandbox teardown can add usage after a threshold is reached.