CYNDER
API v1

Action API

The browser pages are read-only documentation. Lifecycle mutations are available only through the paid, signature-bound API.

Live action prices

Each execution settles separately in native USDC on Base mainnet (eip155:8453).

DEPLOY
0.1 USDC

Create an owner-bound ephemeral deployment from an allowlisted image digest.

INVOKE
0.001 USDC

Invoke an existing deployment owned by the signing account.

DELETE
0.01 USDC

Delete an existing deployment owned by the signing account.

Paid action handshake

  1. Unsigned preparation request: send POST /v1/actions with the JSON body and a cryptographically random Idempotency-Key. The API responds 401 Unauthorized with CYNDER-ACTION-DIGEST.
  2. Sign that digest using EIP-191. Retry the identical JSON body and Idempotency-Key with CYNDER-ACTION-SIGNATURE. Preserve the returned immutable action ID and digest.
  3. Sign the immutable action digest and send POST /v1/actions/{actionID}/execute with an empty body and CYNDER-ACTION-SIGNATURE. The unpaid request responds 402 Payment Required with PAYMENT-REQUIRED.
  4. Validate the Base-mainnet USDC requirement, create the x402 payment authorization, and Retry the same execute request with both CYNDER-ACTION-SIGNATURE and PAYMENT-SIGNATURE.
  5. Read the persisted action state and receipts using the owner signature. Preparation and execution signatures bind the method, normalized path, control origin, idempotency key, and digest shown by the server.

Action types are DEPLOY, INVOKE, and DELETE. Prices above come from the same live x402 configuration used to authorize execution.

Routes

POST /v1/actions

Create an owner-bound action. JSON fields depend on the action type; all writes require an idempotency key and action signature.

POST /v1/actions/{actionID}/execute

Settle the configured x402 price and execute the prepared action. The request body must be empty.

GET /v1/actions/{actionID}

Read an action, state, and receipts as its authenticated owner.

GET /v1/deployments/{deploymentID}

Read an authenticated deployment record.

GET /healthz

Liveness.

GET /readyz

Storage, recovery, and runtime readiness.

Request shapes

DEPLOY  {"type":"DEPLOY","image_digest":"repo/image@sha256:…","resource_class":"mvi-small","timeout_seconds":30}
INVOKE  {"type":"INVOKE","deployment_id":"dep_…","input":{},"timeout_seconds":30}
DELETE  {"type":"DELETE","deployment_id":"dep_…"}