GET /api/v1/protocol/read
Parameters
| Name | Location | Details |
|---|---|---|
X-Juicebox-Account | header / required | Enrolled account identity, including authority chain and lowercase owner address. Enrollment derives this identity before the account exists. |
X-Juicebox-Signer | header / required | Owner wallet or authorized bot address that signed this request. |
X-Juicebox-Issued-At | header / required | Unix seconds, sent as 1–13 decimal digits without leading zeros; at most 30 seconds ahead of server time. |
X-Juicebox-Expires-At | header / required | Unix seconds, sent as 1–13 decimal digits without leading zeros; in the future and within 300 seconds of issuedAt. |
X-Juicebox-Nonce | header / required | Fresh random 32-byte lowercase nonce. A consumed nonce cannot be retried. |
X-Juicebox-Signature | header / required | EIP-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-Grant | header / optional | Authorized bot grant ID. Required for a bot; omit for the owner, signing grantId as the empty string. |
Idempotency-Key | header / optional | Signed 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. |
chainId | query / required | integer
|
contractId | query / required | string |
address | query / optional | string |
projectId | query / optional | Positive project ID when supported by the canonical association adapter. |
blockNumber | query / optional | uint256 as a lossless decimal string |
function | query / required | Full canonical function signature from the resolved deployment ABI. |
args | query / required | Positional arguments validated against the exact ABI. Serialize as JSON once, percent-encode the query value, then sign the exact resulting request target. |
Response 200
| Field | Type | Details | |||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
chainId | integer required | Values: | |||||||||||||||||||||||||||||||||||||||||||||
contractId | string required | ||||||||||||||||||||||||||||||||||||||||||||||
address | string required | ||||||||||||||||||||||||||||||||||||||||||||||
function | string required | ||||||||||||||||||||||||||||||||||||||||||||||
args | array required | Fields
| |||||||||||||||||||||||||||||||||||||||||||||
outputs | array required | Fields
| |||||||||||||||||||||||||||||||||||||||||||||
provenance | object required | Inspect the verification level. Published address plus observed runtime hash is weaker than source-to-runtime equality. Clone proofs additionally bind the implementation, factory, and modeled canonical association.Fields
| |||||||||||||||||||||||||||||||||||||||||||||
evidence | array required | Fields
|
JSON schema
{
"type": "object",
"properties": {
"chainId": {
"$ref": "#/components/schemas/ChainId"
},
"contractId": {
"type": "string"
},
"address": {
"$ref": "#/components/schemas/Address"
},
"function": {
"type": "string"
},
"args": {
"type": "array",
"items": {
"$ref": "#/components/schemas/JsonValue"
}
},
"outputs": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"type": {
"type": "string"
},
"value": {
"$ref": "#/components/schemas/JsonValue"
}
},
"required": [
"name",
"type",
"value"
],
"additionalProperties": false
}
},
"provenance": {
"$ref": "#/components/schemas/ProtocolProvenance"
},
"evidence": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BlockEvidence"
},
"minItems": 1,
"maxItems": 1
}
},
"required": [
"chainId",
"contractId",
"address",
"function",
"args",
"outputs",
"provenance",
"evidence"
],
"additionalProperties": false
}