Build time can use reverse engineering, browser or network capture, official-surface discovery, and verification loops. Runtime never replans and never calls back into a model. It only executes the published endpoint contract.
Runtime contract
You call the runtime through one of the public adapters:POST /v1/apis/{api_id}/endpoints/{endpoint_name}:call- MCP tool
call_endpoint
Runtime transport modes
Every compiled endpoint carries exactly one execution transport. The transport is chosen at build time, and runtime never switches into a new investigation mode.Replay
http_replay and graphql_replay issue deterministic requests against a compiled request surface. They are the cheapest and most stable options when the target exposes a usable request shape.Flow
http_flow executes a fixed multi-step request chain when one request is not enough to produce the result.HTML (TLS)
html_tls performs a deterministic TLS fetch and parses the response HTML. It is used when the target has no stable request surface but is visible to a plain HTTP client.Compiled Artifact
custom_api_artifact runs a policy-checked deterministic artifact compiled during build. It receives fetched page evidence through Peel’s runtime path and cannot use network, browser, filesystem, package install, environment, eval, or model access.- a single replay request
- a fixed multi-step request flow
- a TLS fetch plus HTML extraction
- a policy-checked compiled artifact over fetched evidence
- a fallback step that was already compiled into the stored contract
method records the compiled target transport method; the Peel-facing runtime route is still always POST /v1/apis/{api_id}/endpoints/{endpoint_name}:call.
session_required stays separate
session_required endpoints execute against a target-site session created by a compiled login endpoint, not your Peel host credentials. If a protected endpoint is called without both session_id and encryption_key, runtime rejects the call before it reaches the target.
The full credential flow, header precedence, and scope boundaries are covered in Authenticated APIs.
What runtime does not do
- Programmable browser sessions. Runtime does not click through flows, fill forms dynamically, or react to UI state at call time.
- Runtime browser fallback. If a TLS fetch hits an anti-bot or JavaScript-only wall, runtime marks the endpoint for stronger build-time evidence and returns a structured retry/rebuild error instead of launching a browser.
- Open-ended UI interaction. Runtime never decides what to click next. All interactions that matter for a result are pinned at build time.
- Hidden runtime replanning. A published endpoint’s transport plan is frozen. Runtime cannot pick a different request shape or discover a new hidden API mid-call.
- Generated-code escape hatches. Compiled artifacts cannot call
fetch, read files, inspect environment variables, import packages dynamically, or invoke LLM/browser/shell APIs. - Legacy scraper-only endpoints. Everything runtime executes is backed by a binding-versioned API contract.