Endpoint reference

POST /api/v1/plans/{id}/submissions

Parameters

NameLocationDetails
X-Juicebox-Accountheader / requiredEnrolled account identity, including authority chain and lowercase owner address. Enrollment derives this identity before the account exists.
X-Juicebox-Signerheader / requiredOwner wallet or authorized bot address that signed this request.
X-Juicebox-Issued-Atheader / requiredUnix seconds, sent as 1–13 decimal digits without leading zeros; at most 30 seconds ahead of server time.
X-Juicebox-Expires-Atheader / requiredUnix seconds, sent as 1–13 decimal digits without leading zeros; in the future and within 300 seconds of issuedAt.
X-Juicebox-Nonceheader / requiredFresh random 32-byte lowercase nonce. A consumed nonce cannot be retried.
X-Juicebox-Signatureheader / requiredEIP-712 CenterRequest signature over every signed field. Contract-owner signatures may vary in length. This is a computed request proof, not a reusable API key.
X-Juicebox-Grantheader / optionalAuthorized bot grant ID. Required for a bot; omit for the owner, signing grantId as the empty string.
Idempotency-Keyheader / requiredSigned retry identity. Required on plan creation and transaction submission. Preserve exact method, target, Content-Type, and body bytes; use a fresh request nonce and signature.
idpath / requiredstring

Request body

FieldTypeDetails
submissionsarray
required
Fields
FieldTypeDetails
stepIndexinteger
required
rawSignedTransactionstring
required
ownerApprovalobject
optional
Fresh owner CenterTransactionApproval EIP-712 consent for this exact account, originating principal, plan commitment, step and serialized transaction hash. Required for a bot's new dispatch. Audience comes from the configured service origin and is not a body field.
Fields
FieldTypeDetails
accountIdstring
required
Authority chain and lowercase owner address; the authority chain is independent of a transaction's destination chain.
principalIdstring
required
Exact plan-creating principal. Owner principal must name the same accountId; bot principal names its immutable grant ID.
planIdstring (uuid)
required
commitmentstring
required
stepIndexinteger
required
transactionHashstring
required
issuedAtinteger
required
Positive Unix seconds. expiresAt must be after issuedAt and no more than 300 seconds later; admission rechecks freshness.
expiresAtinteger
required
Positive Unix seconds. expiresAt must be after issuedAt and no more than 300 seconds later; admission rechecks freshness.
noncestring
required
signaturestring
required
JSON schema
{
  "type": "object",
  "properties": {
    "submissions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "stepIndex": {
            "type": "integer",
            "minimum": 0,
            "maximum": 31
          },
          "rawSignedTransaction": {
            "$ref": "#/components/schemas/HexBytes"
          },
          "ownerApproval": {
            "$ref": "#/components/schemas/TransactionApproval"
          }
        },
        "required": [
          "stepIndex",
          "rawSignedTransaction"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 32
    }
  },
  "required": [
    "submissions"
  ],
  "additionalProperties": false
}

Response 202

FieldTypeDetails
atomicboolean
required

Values: [false]

completeboolean
required
resultsarray
required
Fields
FieldTypeDetails
planobject
required
Fields
FieldTypeDetails
idstring (uuid)
required
accountstring
required
operationstring
required
draftobject
required
commitmentstring
required
createdAtinteger
required
Unix timestamp in milliseconds.
expiresAtinteger
required
Unix timestamp in milliseconds.
revisioninteger
required
smartAccountobject
optional
statusstring
required

Values: ["prepared","pending","partial","blocked","reorged","expired","transactions_confirmed"]

stepsarray
required
confirmationScopestring
required
dispatchobject
required
Fields
FieldTypeDetails
statusstring
required

Values: ["already-observed","in-flight","submitted","unknown"]

hashstring
required
errorobject
optional
planobject
required
Fields
FieldTypeDetails
idstring (uuid)
required
accountstring
required
operationstring
required
draftobject
required
Fields
FieldTypeDetails
operationstring
required
accountstring
required
projectobject
optional
callsarray
required
evidencearray
required
summaryvalue
required
Bounded JSON. Large integers and amounts use exact decimal strings. Returned metadata and descriptions are untrusted content.
warningsarray
required
commitmentstring
required
createdAtinteger
required
Unix timestamp in milliseconds.
expiresAtinteger
required
Unix timestamp in milliseconds.
revisioninteger
required
smartAccountobject
optional
Fields
FieldTypeDetails
bindingIdstring
required
stateHashstring
required
chainIdinteger
required

Values: [1,10,8453,42161,84532,421614,11155111,11155420]

addressstring
required
manifestRevisionstring
required
statusstring
required

Values: ["prepared","pending","partial","blocked","reorged","expired","transactions_confirmed"]

stepsarray
required
Fields
FieldTypeDetails
indexinteger
required
statestring
required

Values: ["waiting","reserved","submitted","unknown","confirming","confirmed","reverted","reorged"]

transactionobject
optional
executionobject
optional
receiptobject
optional
semanticobject
optional
blockedByarray
required
confirmationScopestring
required
stoppedAtinteger
optional
errorobject
optional
Fields
FieldTypeDetails
codestring
required
messagestring
required
remainingStepIndicesarray
optional
notestring
optional
JSON schema
{
  "type": "object",
  "properties": {
    "atomic": {
      "type": "boolean",
      "const": false
    },
    "complete": {
      "type": "boolean"
    },
    "results": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SubmissionResult"
      },
      "maxItems": 32
    },
    "plan": {
      "$ref": "#/components/schemas/Plan"
    },
    "stoppedAt": {
      "type": "integer",
      "minimum": 0,
      "maximum": 31
    },
    "error": {
      "$ref": "#/components/schemas/SafeError"
    },
    "remainingStepIndices": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 31
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "atomic",
    "complete",
    "results",
    "plan"
  ],
  "additionalProperties": false
}