Skip to main content
REST API for Epsilon3, an operations platform for building, running, and tracking procedures for complex hardware — spacecraft, satellites, energy, and manufacturing. Use when an agent needs to read or manage a team’s procedures, live procedure runs, issues, telemetry parameters, build/inventory parts, or procurement records (purchase orders and vendors) inside their Epsilon3 workspace. Unlike generic project or checklist tools, Epsilon3 models step-by-step operational runs with commanding, telemetry, and test management for mission-critical hardware. 23 example endpoints available through Lava’s AI Gateway. See the Epsilon3 API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
This is a catch-all provider — any valid URL under https://api.epsilon3.io is supported. Any Epsilon3 REST endpoint. Construct URL as https://api.epsilon3.io/v1/{path} (single-run retrieval is on /v2: GET /v2/runs/{runId}). Note the shapes: list endpoints are /summary (GET /v1/procedures/summary, GET /v1/runs/summary), run lifecycle uses POST sub-resources (POST /v1/runs to start, then POST /v1/runs/{runId}/pause, /resume, /end), and search is POST /v1/search with a JSON body. Purchase-order lifecycle: create = POST builds/orders (bulk purchase_orders[] envelope, created_by required, state ignored — always draft), field updates = PATCH builds/orders/{id} (flat vendor_id, ship_to_name, ship_to_address, notes, delivery_date), state = PUT builds/orders/{id}/state ({ order_state }, the only way to change state), lines = POST builds/orders/{id}/order-lines, approvals = POST builds/orders/{id}/approvals. Vendors are list-only (GET builds/vendors; no per-id GET, create, or update documented). Unknown GET paths under api.epsilon3.io return the Epsilon3 web app as an HTML page rather than a JSON 404 — an HTML response means the path is not a real API route. Common roots: procedures/summary, procedures/{id}, runs, runs/summary, runs/{id}/(pause|resume|end|metadata|automation/start), search, issues, telemetry/parameters, commands, dictionaries, dictionary-groups, fields, forms, external-data, skills, settings/locations, testing/(conditions|risks|cases|requirements), builds/(parts|part-details|inventory|work-orders|orders|vendors|tools|shipments|customers|purchase-requests). Rate limit: 15,000 requests per 10-minute window per API key (429 on exceed). See https://docs.epsilon3.io/ for the full reference. The endpoints below are curated examples.

Endpoints

List procedure summaries in the workspace

GET https://api.epsilon3.io/v1/procedures/summary — Free

Retrieve a single procedure by id

GET https://api.epsilon3.io/v1/procedures/{procedureId} — Free

List running procedure summaries. Filter with query params, e.g. ?run-state[]=paused&run-state[]=running

GET https://api.epsilon3.io/v1/runs/summary — Free

Retrieve a single run by id (Runs V2 API, /v2 path)

GET https://api.epsilon3.io/v2/runs/{runId} — Free

Start a running procedure. Body requires procedure_id and can optionally pre-populate procedure_variables (values typed per the procedure variable: string | number | boolean). Returns { run_id, run_number }.

POST https://api.epsilon3.io/v1/runs — Free

Pause a running procedure by run id (resume via /resume)

POST https://api.epsilon3.io/v1/runs/{runId}/pause — Free

End a running procedure by run id

POST https://api.epsilon3.io/v1/runs/{runId}/end — Free

Full-text search across workspace resources. Body: { query: string, filters?: { procedures?: string[], runs?: string[] }, include_archived?: boolean }. Optional query params resource_type, from_date, to_date narrow the scope.

POST https://api.epsilon3.io/v1/search — Free

Retrieve a list of issues. Filter with query params, e.g. ?status_types[]=active&run_id={runId}

GET https://api.epsilon3.io/v1/issues — Free

Create an issue. Body requires title and project_id (string | null); optional fields include notes, run_id, severity_id, status_id, assignee, reference_id, reference_type, and details. Returns { id }.

POST https://api.epsilon3.io/v1/issues — Free

Update an existing issue by id

PATCH https://api.epsilon3.io/v1/issues/{issueId} — Free

List all available telemetry parameters

GET https://api.epsilon3.io/v1/telemetry/parameters — Free

Bulk create or update telemetry parameters. See the Telemetry API docs for the request body.

PUT https://api.epsilon3.io/v1/telemetry/parameters/bulk — Free

List parts from the builds/inventory catalog. Returns { parts, pagination: { total, next_page_token } }. Filter with partNumber (case-insensitive; repeat it to match several: ?partNumber=A&partNumber=B), or partId, projectId, procurementType, tracking, tag, preferredVendor, assembly. Sort with sort=part_number|created_at and order=asc|desc. Page with ?pageToken=<next_page_token>; limit must be 1000 or fewer (a higher value returns 422).

GET https://api.epsilon3.io/v1/builds/parts?partNumber={partNumber} — Free

Update an existing part by id

PATCH https://api.epsilon3.io/v1/builds/parts/{partId} — Free

Delete a part. The part identifier is supplied in the request body; see the Builds API docs.

DELETE https://api.epsilon3.io/v1/builds/parts — Free

Retrieve all purchase orders in the workspace. Returns { purchase_orders: […] } with id, code (e.g. PO-1), state, vendor, lines, and delivery_date per order.

GET https://api.epsilon3.io/v1/builds/orders — Free

Retrieve a single purchase order by its 22-character id

GET https://api.epsilon3.io/v1/builds/orders/{purchaseOrderId} — Free

Create one or more purchase orders (bulk envelope). Body: { purchase_orders: [{ created_by (required), vendor_id (flat id string, NOT a nested vendor object), ship_to_name, ship_to_address, delivery_date (MM/DD/YYYY), notes, lines: [{ part_revision_id, description, unit_amount, quantity }] }] }. The code (PO-N) and id are system-generated and cannot be supplied. State cannot be set here — new orders are always draft; transition via PUT …/orders/{id}/state.

POST https://api.epsilon3.io/v1/builds/orders — Free

Update fields on an existing purchase order: vendor_id, ship_to_name, ship_to_address, delivery_date (MM/DD/YYYY), sales_tax_basis_points, tax_jurisdiction_id, discount_bp, notes, work_order_id, details, attachments. Pass null to clear a field. State and line items cannot be changed here — use the dedicated state and order-lines endpoints.

PATCH https://api.epsilon3.io/v1/builds/orders/{purchaseOrderId} — Free

Transition a purchase order to a new state — the only endpoint that can change a purchase order’s state. Body: { order_state } with one of draft, submitted, closed, canceled, in_review, partially_received, fully_received.

PUT https://api.epsilon3.io/v1/builds/orders/{purchaseOrderId}/state — Free

Add, update, or remove line items on an existing purchase order. Body: { added: [{ part_revision_id, description, unit_amount, quantity }], updated: [{ id, … }], removed: [{ id }] }.

POST https://api.epsilon3.io/v1/builds/orders/{purchaseOrderId}/order-lines — Free

Retrieve all vendors in the workspace. Returns { vendors: […] } with id, name, address, contact, emails, and team_id per vendor. This is the only documented vendor read — there is no per-id vendor GET.

GET https://api.epsilon3.io/v1/builds/vendors — Free

Next Steps

All Providers

Browse all supported AI providers

Forward Proxy

Learn how to construct proxy URLs and authenticate requests