Build with Juicebox.
Read projects, prepare transactions, and follow results across chains. Start with a public request or connect your app in a few steps.
Your first request
Explore supported chains and execution options. No account required.
curl https://juicebox.center/api/v1/capabilitiesFor protected requests, create an API connection, download its file, and install the client:
npm install https://juicebox.center/api/client/juicebox-center-client-0.1.0.tgz
chmod 600 juicebox-connection.json
npx center account --connection juicebox-connection.jsonThe client handles authentication. Your wallet separately approves spending.
Choose a data source
- Read the blockchain: find the deployed contract and its interface (ABI), then call a read-only method. Results identify the verified block they describe.
- Search history: Bendystraw collects blockchain records into a searchable index. Choose real funds (
mainnet) or test funds (testnet), filter to V6, and use the returned cursor to get the next page. Pages may reflect different blocks. - Use a named operation: choose a project or developer task from the operations catalog and follow its required input format, called a schema.
Project routes require source=onchain or source=bendystraw. Keep amounts and large integers as decimal strings. If a value could not be read, report it as unknown.
Prepare → review → sign → check
- Create a saved set of proposed transactions: a plan. Use a named preparation or
contract_calls. Sign the API request and include anIdempotency-Keyso a retry can find the same result. - Review the exact chain, recipient, encoded instructions (calldata), native token amount, required earlier steps, block evidence, plan commitment and expiry. Test each ready step with a simulation.
- Have the plan wallet sign the exact transaction. Submit those signed bytes with a fresh owner-signed API request, or a bot request carrying the owner’s exact approval.
- Retrieve the plan with
refresh=trueto check what happened. Continue only when required earlier steps are confirmed. Check an uncertain submission by its existing transaction hash before retrying.
API access does not let a bot spend the owner's funds. Check capabilities for supported ways to send transactions and pay network costs. Steps on different chains can succeed or fail separately; confirmation on the sending chain does not prove funds arrived on the receiving chain.
Plans, retries, confirmations and partial journeys / Session lifecycle and quotas
A project can also be created without a transaction: publish a signed, frozen set of per-chain launch calls, then let Center's sponsor execute them on the supported rollups. See project intents.
Prepay for transactions across chains
Prepare calls on supported chains and pay their network costs together. Center returns the exact calls for your wallet to approve, submits them, and prepares one funding transaction from the verified quote. Review and sign the funding transaction, then follow progress through Center.
Check whether funding already arrived before paying again. Verify each call on its destination chain; a quote or provider status alone does not prove payment or success. See the full guide and agent workflow.
Use one wallet address across networks
On Accounts, choose the networks for a separate transaction wallet. Review the shared setup and approve creation on each network. Then add prepared transactions to one review list and follow each network's result. Balances and permissions remain separate on each network. Your signed-in wallet pays the creation fees; supported later transactions can use sponsored network fees.
For unattended payments, approve a bot's allowed action, recipient, spending limits and expiry once on each network. After activation confirms, the bot can sign and send within those permissions without further owner prompts. Check sessions.configuredChainIds for networks where activation is available. Changes to the limits and transactions outside them need owner approval.
Wallet setup guide / Run an unattended payment / Current capabilities
Endpoint reference
Expand a group, then an endpoint. The OpenAPI document contains exact parameters and schemas; the contract method catalog supplies ABI-specific argument and output schemas.
Discovery (9)
Public, pinned schemas and current capability discovery.
GET/api/v1/openapi.json public
Read this OpenAPI 3.1.2 document
operationId: getOpenApi
GET/api/v1/capabilities public
Check enabled transports, chains and limits
Read before planning. Per-chain relay, confirmation and sponsorship availability is runtime configuration. Unsupported smart-account or session mechanisms are not implied by a bot grant.
operationId: getCapabilities
GET/api/v1/catalog/contracts public
Browse the complete pinned V6 contract inventory
operationId: listContracts
GET/api/v1/catalog/contract public
Read all ABI variants, methods and deployments of one contract type
operationId: getContractCatalogEntry
GET/api/v1/catalog/method public
Read exact method argument and output JSON schemas
operationId: getContractMethodSchema
GET/api/v1/catalog/indexer public
Discover V6 tables, filters and selectable fields
operationId: getIndexerCatalog
GET/api/v1/catalog/operations public
Discover semantic operations and exact input schemas
operationId: listOperationDescriptors
GET/api/v1/catalog/operations/{id} public
Read one semantic operation descriptor
operationId: getOperationDescriptor
Accounts (6)
Owner enrollment, profile replacement and bounded bot API grants.
POST/api/v1/accounts/enroll owner signature
Enroll the signing owner account
Sign before the account exists. Body is exactly an empty JSON object. Enrollment uses the owner's EIP-712 request signature and performs no blockchain transaction. Account routes reject query strings and cap bodies at 65536 bytes.
operationId: enrollAccount
GET/api/v1/accounts/me signed read
Read the authenticated account profile
operationId: getAccount
PATCH/api/v1/accounts/me owner signature
Replace the owner's profile fields
Omitted fields reset to defaults. This endpoint does not implement transaction idempotency.
operationId: replaceProfile
GET/api/v1/accounts/me/bots owner signature
List the owner's API bot grants
operationId: listBots
POST/api/v1/accounts/me/bots owner signature
Register a bot possession proof and expiring API grant
The owner signs the whole registration request; the bot separately signs CenterBotProof bound to that owner's request nonce. Grants authorize API scopes only. No bot key is uploaded.
operationId: registerBot
DELETE/api/v1/accounts/me/bots/{grantId} owner signature
Revoke the owner's bot grant
Revocation prevents new dispatch claims. A bounded request already admitted under its durable claim may finish.
operationId: revokeBot
Contracts (2)
Exact V6 deployment ABI resolution and canonical onchain reads.
GET/api/v1/protocol/resolve signed read
Resolve a V6 target and inspect its provenance
The chain and mined canonical block hash are verified. Unknown addresses require a supported factory and canonical association proof. Source-only catalog entries do not establish deployments.
operationId: resolveContract
GET/api/v1/protocol/read signed read
Call an exact view or pure method on a verified V6 target
The same canonical block hash is used for resolution and the ABI call. Payable/nonpayable methods are rejected here; prepare them as reviewed calls.
operationId: readContract
Indexer (114)
V6 Bendystraw state and event tables with explicit network and cursor scope.
GET/api/v1/indexer/status signed read
Inspect indexer progress for a network
operationId: getIndexerStatus
GET/api/v1/indexer/{entity} signed read
List a supported versioned indexer entity
Use nextCursor until null. Keep network, scope, fields, filters and order unchanged between pages. Pages are not a block-hash snapshot; concurrent indexing can change results. V6 is enforced server-side.
operationId: listIndexerEntity
GET/api/v1/indexer/{entity}/record signed read
Read one exact indexer record
The _meta record accepts only network and returns item.chains. Other entities use their published primary key and selection schema.
operationId: readIndexerEntity
GET/api/v1/indexer/_meta/record signed read
Read network indexing progress as a metadata record
Only network is accepted. Progress is an indexer observation; it does not pin subsequent table queries to one canonical block.
operationId: readIndexerMetadata
GET/api/v1/indexer/_sucker signed read
List _sucker records
operationId: listIndexer__sucker
GET/api/v1/indexer/_sucker/record signed read
Read one _sucker record
operationId: readIndexer__sucker
GET/api/v1/indexer/accountingSyncEvent signed read
List accountingSyncEvent records
operationId: listIndexer_accountingSyncEvent
GET/api/v1/indexer/accountingSyncEvent/record signed read
Read one accountingSyncEvent record
operationId: readIndexer_accountingSyncEvent
GET/api/v1/indexer/activityEvent signed read
List activityEvent records
operationId: listIndexer_activityEvent
GET/api/v1/indexer/activityEvent/record signed read
Read one activityEvent record
operationId: readIndexer_activityEvent
GET/api/v1/indexer/addNftTierEvent signed read
List addNftTierEvent records
operationId: listIndexer_addNftTierEvent
GET/api/v1/indexer/addNftTierEvent/record signed read
Read one addNftTierEvent record
operationId: readIndexer_addNftTierEvent
GET/api/v1/indexer/addToBalanceEvent signed read
List addToBalanceEvent records
operationId: listIndexer_addToBalanceEvent
GET/api/v1/indexer/addToBalanceEvent/record signed read
Read one addToBalanceEvent record
operationId: readIndexer_addToBalanceEvent
GET/api/v1/indexer/autoIssueEvent signed read
List autoIssueEvent records
operationId: listIndexer_autoIssueEvent
GET/api/v1/indexer/autoIssueEvent/record signed read
Read one autoIssueEvent record
operationId: readIndexer_autoIssueEvent
GET/api/v1/indexer/borrowLoanEvent signed read
List borrowLoanEvent records
operationId: listIndexer_borrowLoanEvent
GET/api/v1/indexer/borrowLoanEvent/record signed read
Read one borrowLoanEvent record
operationId: readIndexer_borrowLoanEvent
GET/api/v1/indexer/bridgeClaimEvent signed read
List bridgeClaimEvent records
operationId: listIndexer_bridgeClaimEvent
GET/api/v1/indexer/bridgeClaimEvent/record signed read
Read one bridgeClaimEvent record
operationId: readIndexer_bridgeClaimEvent
GET/api/v1/indexer/bridgeToOutboxEvent signed read
List bridgeToOutboxEvent records
operationId: listIndexer_bridgeToOutboxEvent
GET/api/v1/indexer/bridgeToOutboxEvent/record signed read
Read one bridgeToOutboxEvent record
operationId: readIndexer_bridgeToOutboxEvent
GET/api/v1/indexer/bridgeToRemoteEvent signed read
List bridgeToRemoteEvent records
operationId: listIndexer_bridgeToRemoteEvent
GET/api/v1/indexer/bridgeToRemoteEvent/record signed read
Read one bridgeToRemoteEvent record
operationId: readIndexer_bridgeToRemoteEvent
GET/api/v1/indexer/burnEvent signed read
List burnEvent records
operationId: listIndexer_burnEvent
GET/api/v1/indexer/burnEvent/record signed read
Read one burnEvent record
operationId: readIndexer_burnEvent
GET/api/v1/indexer/buybackPool signed read
List buybackPool records
operationId: listIndexer_buybackPool
GET/api/v1/indexer/buybackPool/record signed read
Read one buybackPool record
operationId: readIndexer_buybackPool
GET/api/v1/indexer/buybackPoolEvent signed read
List buybackPoolEvent records
operationId: listIndexer_buybackPoolEvent
GET/api/v1/indexer/buybackPoolEvent/record signed read
Read one buybackPoolEvent record
operationId: readIndexer_buybackPoolEvent
GET/api/v1/indexer/buybackPoolLiquidityEvent signed read
List buybackPoolLiquidityEvent records
operationId: listIndexer_buybackPoolLiquidityEvent
GET/api/v1/indexer/buybackPoolLiquidityEvent/record signed read
Read one buybackPoolLiquidityEvent record
operationId: readIndexer_buybackPoolLiquidityEvent
GET/api/v1/indexer/buybackPoolPosition signed read
List buybackPoolPosition records
operationId: listIndexer_buybackPoolPosition
GET/api/v1/indexer/buybackPoolPosition/record signed read
Read one buybackPoolPosition record
operationId: readIndexer_buybackPoolPosition
GET/api/v1/indexer/buybackPoolRange signed read
List buybackPoolRange records
operationId: listIndexer_buybackPoolRange
GET/api/v1/indexer/buybackPoolRange/record signed read
Read one buybackPoolRange record
operationId: readIndexer_buybackPoolRange
GET/api/v1/indexer/cashOutTaxSnapshot signed read
List cashOutTaxSnapshot records
operationId: listIndexer_cashOutTaxSnapshot
GET/api/v1/indexer/cashOutTaxSnapshot/record signed read
Read one cashOutTaxSnapshot record
operationId: readIndexer_cashOutTaxSnapshot
GET/api/v1/indexer/cashOutTokensEvent signed read
List cashOutTokensEvent records
operationId: listIndexer_cashOutTokensEvent
GET/api/v1/indexer/cashOutTokensEvent/record signed read
Read one cashOutTokensEvent record
operationId: readIndexer_cashOutTokensEvent
GET/api/v1/indexer/decorateBannyEvent signed read
List decorateBannyEvent records
operationId: listIndexer_decorateBannyEvent
GET/api/v1/indexer/decorateBannyEvent/record signed read
Read one decorateBannyEvent record
operationId: readIndexer_decorateBannyEvent
GET/api/v1/indexer/deployErc20Event signed read
List deployErc20Event records
operationId: listIndexer_deployErc20Event
GET/api/v1/indexer/deployErc20Event/record signed read
Read one deployErc20Event record
operationId: readIndexer_deployErc20Event
GET/api/v1/indexer/inboxRootReceivedEvent signed read
List inboxRootReceivedEvent records
operationId: listIndexer_inboxRootReceivedEvent
GET/api/v1/indexer/inboxRootReceivedEvent/record signed read
Read one inboxRootReceivedEvent record
operationId: readIndexer_inboxRootReceivedEvent
GET/api/v1/indexer/liquidateLoanEvent signed read
List liquidateLoanEvent records
operationId: listIndexer_liquidateLoanEvent
GET/api/v1/indexer/liquidateLoanEvent/record signed read
Read one liquidateLoanEvent record
operationId: readIndexer_liquidateLoanEvent
GET/api/v1/indexer/loan signed read
List loan records
operationId: listIndexer_loan
GET/api/v1/indexer/loan/record signed read
Read one loan record
operationId: readIndexer_loan
GET/api/v1/indexer/manualBurnEvent signed read
List manualBurnEvent records
operationId: listIndexer_manualBurnEvent
GET/api/v1/indexer/manualBurnEvent/record signed read
Read one manualBurnEvent record
operationId: readIndexer_manualBurnEvent
GET/api/v1/indexer/manualMintTokensEvent signed read
List manualMintTokensEvent records
operationId: listIndexer_manualMintTokensEvent
GET/api/v1/indexer/manualMintTokensEvent/record signed read
Read one manualMintTokensEvent record
operationId: readIndexer_manualMintTokensEvent
GET/api/v1/indexer/mintNftEvent signed read
List mintNftEvent records
operationId: listIndexer_mintNftEvent
GET/api/v1/indexer/mintNftEvent/record signed read
Read one mintNftEvent record
operationId: readIndexer_mintNftEvent
GET/api/v1/indexer/mintTokensEvent signed read
List mintTokensEvent records
operationId: listIndexer_mintTokensEvent
GET/api/v1/indexer/mintTokensEvent/record signed read
Read one mintTokensEvent record
operationId: readIndexer_mintTokensEvent
GET/api/v1/indexer/nft signed read
List nft records
operationId: listIndexer_nft
GET/api/v1/indexer/nft/record signed read
Read one nft record
operationId: readIndexer_nft
GET/api/v1/indexer/nftHook signed read
List nftHook records
operationId: listIndexer_nftHook
GET/api/v1/indexer/nftHook/record signed read
Read one nftHook record
operationId: readIndexer_nftHook
GET/api/v1/indexer/nftTier signed read
List nftTier records
operationId: listIndexer_nftTier
GET/api/v1/indexer/nftTier/record signed read
Read one nftTier record
operationId: readIndexer_nftTier
GET/api/v1/indexer/operatorPermissionsSetEvent signed read
List operatorPermissionsSetEvent records
operationId: listIndexer_operatorPermissionsSetEvent
GET/api/v1/indexer/operatorPermissionsSetEvent/record signed read
Read one operatorPermissionsSetEvent record
operationId: readIndexer_operatorPermissionsSetEvent
GET/api/v1/indexer/participant signed read
List participant records
operationId: listIndexer_participant
GET/api/v1/indexer/participant/record signed read
Read one participant record
operationId: readIndexer_participant
GET/api/v1/indexer/participantSnapshot signed read
List participantSnapshot records
operationId: listIndexer_participantSnapshot
GET/api/v1/indexer/participantSnapshot/record signed read
Read one participantSnapshot record
operationId: readIndexer_participantSnapshot
GET/api/v1/indexer/payEvent signed read
List payEvent records
operationId: listIndexer_payEvent
GET/api/v1/indexer/payEvent/record signed read
Read one payEvent record
operationId: readIndexer_payEvent
GET/api/v1/indexer/permissionHolder signed read
List permissionHolder records
operationId: listIndexer_permissionHolder
GET/api/v1/indexer/permissionHolder/record signed read
Read one permissionHolder record
operationId: readIndexer_permissionHolder
GET/api/v1/indexer/project signed read
List project records
operationId: listIndexer_project
GET/api/v1/indexer/project/record signed read
Read one project record
operationId: readIndexer_project
GET/api/v1/indexer/projectCreateEvent signed read
List projectCreateEvent records
operationId: listIndexer_projectCreateEvent
GET/api/v1/indexer/projectCreateEvent/record signed read
Read one projectCreateEvent record
operationId: readIndexer_projectCreateEvent
GET/api/v1/indexer/projectMoment signed read
List projectMoment records
operationId: listIndexer_projectMoment
GET/api/v1/indexer/projectMoment/record signed read
Read one projectMoment record
operationId: readIndexer_projectMoment
GET/api/v1/indexer/projectPayer signed read
List projectPayer records
operationId: listIndexer_projectPayer
GET/api/v1/indexer/projectPayer/record signed read
Read one projectPayer record
operationId: readIndexer_projectPayer
GET/api/v1/indexer/projectTransferEvent signed read
List projectTransferEvent records
operationId: listIndexer_projectTransferEvent
GET/api/v1/indexer/projectTransferEvent/record signed read
Read one projectTransferEvent record
operationId: readIndexer_projectTransferEvent
GET/api/v1/indexer/reallocateLoanEvent signed read
List reallocateLoanEvent records
operationId: listIndexer_reallocateLoanEvent
GET/api/v1/indexer/reallocateLoanEvent/record signed read
Read one reallocateLoanEvent record
operationId: readIndexer_reallocateLoanEvent
GET/api/v1/indexer/removeNftTierEvent signed read
List removeNftTierEvent records
operationId: listIndexer_removeNftTierEvent
GET/api/v1/indexer/removeNftTierEvent/record signed read
Read one removeNftTierEvent record
operationId: readIndexer_removeNftTierEvent
GET/api/v1/indexer/repayLoanEvent signed read
List repayLoanEvent records
operationId: listIndexer_repayLoanEvent
GET/api/v1/indexer/repayLoanEvent/record signed read
Read one repayLoanEvent record
operationId: readIndexer_repayLoanEvent
GET/api/v1/indexer/rulesetQueuedEvent signed read
List rulesetQueuedEvent records
operationId: listIndexer_rulesetQueuedEvent
GET/api/v1/indexer/rulesetQueuedEvent/record signed read
Read one rulesetQueuedEvent record
operationId: readIndexer_rulesetQueuedEvent
GET/api/v1/indexer/sendPayoutToSplitEvent signed read
List sendPayoutToSplitEvent records
operationId: listIndexer_sendPayoutToSplitEvent
GET/api/v1/indexer/sendPayoutToSplitEvent/record signed read
Read one sendPayoutToSplitEvent record
operationId: readIndexer_sendPayoutToSplitEvent
GET/api/v1/indexer/sendPayoutsEvent signed read
List sendPayoutsEvent records
operationId: listIndexer_sendPayoutsEvent
GET/api/v1/indexer/sendPayoutsEvent/record signed read
Read one sendPayoutsEvent record
operationId: readIndexer_sendPayoutsEvent
GET/api/v1/indexer/sendReservedTokensToSplitEvent signed read
List sendReservedTokensToSplitEvent records
operationId: listIndexer_sendReservedTokensToSplitEvent
GET/api/v1/indexer/sendReservedTokensToSplitEvent/record signed read
Read one sendReservedTokensToSplitEvent record
operationId: readIndexer_sendReservedTokensToSplitEvent
GET/api/v1/indexer/sendReservedTokensToSplitsEvent signed read
List sendReservedTokensToSplitsEvent records
operationId: listIndexer_sendReservedTokensToSplitsEvent
GET/api/v1/indexer/sendReservedTokensToSplitsEvent/record signed read
Read one sendReservedTokensToSplitsEvent record
operationId: readIndexer_sendReservedTokensToSplitsEvent
GET/api/v1/indexer/setUriEvent signed read
List setUriEvent records
operationId: listIndexer_setUriEvent
GET/api/v1/indexer/setUriEvent/record signed read
Read one setUriEvent record
operationId: readIndexer_setUriEvent
GET/api/v1/indexer/storeAutoIssuanceAmountEvent signed read
List storeAutoIssuanceAmountEvent records
operationId: listIndexer_storeAutoIssuanceAmountEvent
GET/api/v1/indexer/storeAutoIssuanceAmountEvent/record signed read
Read one storeAutoIssuanceAmountEvent record
operationId: readIndexer_storeAutoIssuanceAmountEvent
GET/api/v1/indexer/suckerGroup signed read
List suckerGroup records
operationId: listIndexer_suckerGroup
GET/api/v1/indexer/suckerGroup/record signed read
Read one suckerGroup record
operationId: readIndexer_suckerGroup
GET/api/v1/indexer/suckerGroupMoment signed read
List suckerGroupMoment records
operationId: listIndexer_suckerGroupMoment
GET/api/v1/indexer/suckerGroupMoment/record signed read
Read one suckerGroupMoment record
operationId: readIndexer_suckerGroupMoment
GET/api/v1/indexer/suckerTransaction signed read
List suckerTransaction records
operationId: listIndexer_suckerTransaction
GET/api/v1/indexer/suckerTransaction/record signed read
Read one suckerTransaction record
operationId: readIndexer_suckerTransaction
GET/api/v1/indexer/swapEvent signed read
List swapEvent records
operationId: listIndexer_swapEvent
GET/api/v1/indexer/swapEvent/record signed read
Read one swapEvent record
operationId: readIndexer_swapEvent
GET/api/v1/indexer/useAllowanceEvent signed read
List useAllowanceEvent records
operationId: listIndexer_useAllowanceEvent
GET/api/v1/indexer/useAllowanceEvent/record signed read
Read one useAllowanceEvent record
operationId: readIndexer_useAllowanceEvent
Projects (2)
Project and omnichain views with explicit source selection.
GET/api/v1/projects/{chainId}/{projectId} signed read
Read a V6 project from the chosen source
Select onchain or bendystraw explicitly. The response is the semantic operation's source-specific result. Missing source evidence is never silently replaced by another source.
operationId: getProjectBySource
GET/api/v1/projects/{chainId}/{projectId}/omnichain signed read
Inspect the project's omnichain group and partial evidence
Availability is reported by /capabilities. Member chains have separate state and finality. A source-chain receipt does not prove destination settlement. Incomplete group evidence remains explicit.
operationId: getProjectOmnichain
Operations (60)
Semantic reads and preparations generated from the shared operation descriptors.
GET/api/v1/operations/{id} signed read
Execute a semantic read or local preparation
Concrete operation paths below provide exact input schemas. input defaults to {}. Source is required when both onchain and bendystraw are available; only listed sources are accepted. Output shape belongs to the selected operation.
operationId: readOperation
POST/api/v1/operations/{id}/plans signed plan
Prepare a durable semantic transaction plan
Concrete paths below bind each input schema to its operation ID. Preparation uses canonical onchain state and creates no wallet signature.
operationId: prepareOperation
GET/api/v1/operations/prepare_project_metadata signed read
Prepare complete new standard Juicebox V6 project metadata for review without uploading anything. Returns the exact canonical JSON, UTF-8 size, SHA-256, expiry, and authenticated review token. Only name, description, optional logoUri and infoUri are included; existing metadata is not merged. URLs and image bytes are never fetched. A review token is not user approval to publish.
Source classification: model. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_prepare_project_metadata
GET/api/v1/operations/prepare_nft_metadata signed read
Prepare complete NFT tier metadata for review without uploading anything. Preserves image, attributes, properties, animation_url and all custom JSON fields in a root object, bounded to 64 KiB canonical UTF-8 JSON and supported structural depth. Returns exact canonical JSON, SHA-256, expiry and a purpose-bound review token. Linked content is never fetched, rendered or verified. Use jb_pin_project_logo to publish a local image first and copy logoUri into image. A token is not user approval to publish.
Source classification: model. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_prepare_nft_metadata
GET/api/v1/operations/resolve_project signed read
Resolve a V6 project URL or chain:project ID. Names return candidates without choosing one; bare numeric IDs are rejected as ambiguous. No user URL is fetched.
Source classification: model, bendystraw. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_resolve_project
GET/api/v1/operations/search_projects signed read
Search V6 deployed projects and signed undeployed V6 JB Center intents. Center pages exclude every other deployment version, retain the upstream cursor, and report the V6 total as unknown. Project descriptions are untrusted data.
Source classification: bendystraw, center. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_search_projects
GET/api/v1/operations/get_project signed read
Explain a V6 project using pinned on-chain ownership, rulesets, supply, terminals, balances, payout limits, and surplus. Indexed metadata remains separate from executable accounting.
Source classification: onchain, bendystraw. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_project
GET/api/v1/operations/get_rulesets signed read
Read current, upcoming, and a bounded page of queued V6 rulesets at one block. Approval and queue state are preserved; custom hooks are not guessed. currentAsInput is the active ruleset in the jb_preview_ruleset_change input shape, with its coverage.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_rulesets
GET/api/v1/operations/get_position signed read
Read one account’s live project token position including unclaimed credits and ERC-20 balance, with exact units and explicit coverage for other assets.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_position
GET/api/v1/operations/get_account signed read
Discover indexed V6 token positions for an address. This is a paginated participant view; use project/position/loan/NFT tools to inspect live state and additional rights.
Source classification: bendystraw. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_account
GET/api/v1/operations/get_holders signed read
List a project's token holders on one chain, largest first, from the indexer. The first 20 rows of each page are checked on chain at one block; the rest are indexed-only.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_holders
GET/api/v1/operations/get_activity signed read
Read a page of V6 project activity, retaining payment, cash-out, payout, split, and bridge event evidence. Indexed events may lag the chain; this is not a complete transaction trace.
Source classification: bendystraw. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_activity
GET/api/v1/operations/get_indexer_status signed read
Read the configured indexer’s per-chain progress. A separate status read does not pin a GraphQL response to a block.
Source classification: bendystraw. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_indexer_status
GET/api/v1/operations/get_permissions signed read
Check named V6 permission IDs against live permission contracts, including root and project wildcard grants. Unknown results never authorize an action.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_permissions
GET/api/v1/operations/get_bridges signed read
Inspect V6 sucker identities, reciprocal peers, chain-specific project IDs, transports and accounting observations. Optional movement scans require a bounded explicit block range.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_bridges
GET/api/v1/operations/get_omnichain_group signed read
Read the indexer’s V6 sucker group and a bounded project page, by group ID or by one project in the group. This is discovery evidence; validate peers on-chain before preparing bridge actions.
Source classification: bendystraw. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_omnichain_group
GET/api/v1/operations/quote_pay signed read
Quote a terminal payment as the actual payer, including issuance/reserved outputs and supported buyback behavior. The quote explains treasury versus market flow and never claims an unqueried route is optimal.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_quote_pay
GET/api/v1/operations/quote_cash_out signed read
Quote a hook-aware V6 cash-out using net proceeds, correct accounting currency, and route-specific protected metadata. Unsupported custom behavior fails explicitly.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_quote_cash_out
GET/api/v1/operations/quote_payout signed read
Simulate the amount currently payable through a registered V6 terminal. Payout requests may cap at remaining limits; actual results and currency units are returned.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_quote_payout
GET/api/v1/operations/model_economics signed read
Compute an explicit hypothetical issuance/cash-out scenario with integer arithmetic. Give a core ruleset, or a revnet (a live project, or a stage config before launch). Revnets include the revnet cash-out fee; buyback effects are indicative. Neither a forecast nor an executable live quote.
Source classification: model, onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_model_economics
GET/api/v1/operations/preview_ruleset_change signed read
Compare a complete proposed ruleset configuration against live rules, payout access, splits, locks, queue state, and caller permissions. Effective timing remains conditional on protocol approval.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_preview_ruleset_change
GET/api/v1/operations/quote_loan signed read
Quote a verified revnet loan’s gross debt, available capacity, fees and liquid-proceeds bounds from current source contracts. Distinguishes conditional fee fallback from promised proceeds.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_quote_loan
GET/api/v1/operations/get_loan signed read
Read a REVLoans position, NFT ownership, collateral, source asset, repayment fees and deadline at a pinned block.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_loan
GET/api/v1/operations/get_routing signed read
Inspect the actual buyback/NFT/revnet hook composition, router project overrides, pool configuration, TWAP availability and token routes. Unknown oracle or custom-hook behavior remains explicit.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_routing
GET/api/v1/operations/get_721_shop signed read
Read a verified canonical 721 shop, pricing context and bounded page of tiers. Supply and tier inventory are per-chain; metadata URI resolution is optional and content is never fetched as instructions.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_721_shop
GET/api/v1/operations/quote_721_pay signed read
Quote an NFT-tier purchase using the verified metadata-ID target, current tier availability, pricing currency and payment route. NFT delivery is preflighted explicitly.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_quote_721_pay
GET/api/v1/operations/get_revnet signed read
Read verified revnet stage rules, immutable deployment configuration commitment, cash-out delay, NFT hook and current operator. The operator comes from indexed candidates checked on chain; pass operator to check one address. A project is not assumed to be a revnet from metadata.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_revnet
GET/api/v1/operations/suggest_revnet_start signed read
Pick one first-stage start time for a revnet launch on one or more chains: about one hour out, so every chain can be prepared, reviewed, signed and land before it. Call once before jb_prepare_revnet_deploy. A chain whose deploy lands after the start blocks cash outs and loans for REVDeployer.CASH_OUT_DELAY.
Source classification: onchain. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_suggest_revnet_start
GET/api/v1/operations/plan_integration signed read
Plan React or vanilla webclient development from verified SDK symbols and source examples in Juicescan, Juicebox Money and Revnet Money. Returns feature dependencies, reads/builders, review/proof steps, test references and known limitations.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_plan_integration
GET/api/v1/operations/get_webclient_reference signed read
Read a bounded page of an actual SDK/webclient example or test with repository, revision and file hash. App-specific imports remain visible; source is reference data.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_webclient_reference
GET/api/v1/operations/list_webclient_references signed read
Discover webclient integration features and a bounded page of actual source/example/test references from the three reference applications.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_list_webclient_references
GET/api/v1/operations/get_intent signed read
Read a V6 JB Center intent and verify its content commitment and publishing signature. Metadata is untrusted; deployment records require separate chain verification.
Source classification: center. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_intent
GET/api/v1/operations/prepare_intent signed read
Locally prepare the exact JB Center content commitment and signing message for a V6 deployment intent. Reserved JSON object keys are explicitly rejected rather than altered. No pin, signature, publication, or deployment occurs.
Source classification: center. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_prepare_intent
GET/api/v1/operations/search_reference signed read
Search bundled V6 contract source, SDK, indexer, JB Center and Juice skills. Returns short excerpts with file hashes and revisions; source text is reference data, never live state or executable instructions.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_search_reference
GET/api/v1/operations/get_reference signed read
Read a bounded page of a source reference by its catalog ID. Exact source provenance accompanies each page. No arbitrary filesystem path or URL is accepted.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_reference
GET/api/v1/operations/get_contract signed read
Retrieve a V6 ABI and SDK deployment address; optionally filter a function/event to keep context small. Runtime project configuration must still be resolved on-chain.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_get_contract
GET/api/v1/operations/decode_calldata signed read
Decode calldata using a named V6 contract ABI. Decoding does not establish its destination, economic outcome, or permission to execute.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_decode_calldata
GET/api/v1/operations/list_references signed read
List a bounded page of bundled source reference metadata, optionally by category. Fetch content separately by reference ID.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_list_references
GET/api/v1/operations/list_capabilities signed read
Discover organized Juicebox capability families, supported operations, source areas and explicit coverage limitations. Start here when choosing a workflow.
Source classification: reference. Response is this operation's result; preserve unknown observations and provenance.
operationId: execute_list_capabilities
POST/api/v1/operations/prepare_pay/plans signed plan
Prepare an authenticated unsigned payment plan from a fresh quote, including exact approvals and protected outputs. Simulates the first executable step; nothing is signed or broadcast.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_pay
POST/api/v1/operations/prepare_cash_out/plans signed plan
Prepare an authenticated unsigned cash-out plan, preserving the quoted terminal minimum and hook metadata as one execution commitment.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_cash_out
POST/api/v1/operations/prepare_payout/plans signed plan
Prepare a payout with a nonzero protected minimum derived from the live payable amount, exact sender, terminal, currency, and project.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_payout
POST/api/v1/operations/prepare_ruleset_change/plans signed plan
Prepare exact reviewed V6 ruleset calldata after a live diff and permission check. Projects whose rulesets run through JBOmnichainDeployer queue through it, keeping their NFT hook; route says which. Does not silently overwrite omitted configuration or promise approval timing.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_ruleset_change
POST/api/v1/operations/prepare_launch/plans signed plan
Prepare a standard core V6 project launch on one chain using complete typed configuration and a chain-specific live creation fee. Explicit core composition does not attach NFT/revnet/omnichain extensions. To link chains as one project, use jb_prepare_omnichain_launch.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_launch
POST/api/v1/operations/prepare_omnichain_launch/plans signed plan
Prepare one project linked across chains: JBOmnichainDeployer.launchProjectFor on each chain, with suckers from the registry, one salt and one signer. Returns one plan with one step per chain and a commitment hash shared by every step.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_omnichain_launch
POST/api/v1/operations/prepare_deploy_erc20/plans signed plan
Prepare JBController.deployERC20For: give a project its ERC-20 name and ticker. Checks the signer is the owner or holds DEPLOY_ERC20, and that the project has no ERC-20 yet.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_deploy_erc20
POST/api/v1/operations/prepare_set_project_uri/plans signed plan
Prepare JBController.setUriOf with a metadata URI the user already pinned. Checks the signer is the owner or holds SET_PROJECT_URI; for a revnet that is its operator.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_set_project_uri
POST/api/v1/operations/prepare_borrow/plans signed plan
Prepare a revnet borrow with a protected gross-debt minimum and any explicitly reviewed BURN_TOKENS permission prerequisite, preserving existing permissions. Liquid proceeds remain conditional on fees.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_borrow
POST/api/v1/operations/prepare_repay/plans signed plan
Prepare a loan repayment with bounded spend, correct native/ERC-20 funding and explicit approval prerequisites.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_repay
POST/api/v1/operations/prepare_bridge_claim/plans signed plan
Prepare a claim only through a sucker verified for the project. Exact claim proof and beneficiary are preserved and simulation validates current claimability.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_bridge_claim
POST/api/v1/operations/prepare_accounting_sync/plans signed plan
Prepare permissionless sucker accounting synchronization with an explicitly bounded, verified transport budget. This synchronizes accounting; it does not transfer or claim holder tokens.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_accounting_sync
POST/api/v1/operations/prepare_buyback_pool/plans signed plan
Prepare registration of an existing Uniswap V4 buyback pool for a verified project hook. Validates pool identity, token pair, permissions and TWAP window.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_buyback_pool
POST/api/v1/operations/prepare_buyback_twap/plans signed plan
Prepare an authorized buyback TWAP-window change with exact contract bounds and current project hook resolution.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_buyback_twap
POST/api/v1/operations/prepare_buyback_hook/plans signed plan
Prepare a reviewed project buyback-registry override, with explicit target and authority checks.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_buyback_hook
POST/api/v1/operations/prepare_router_terminal/plans signed plan
Prepare an authorized router-terminal registry project override. The exact implementation address and resulting routing authority are reviewed.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_router_terminal
POST/api/v1/operations/prepare_721_pay/plans signed plan
Prepare a verified NFT-tier payment with exact metadata, protected outputs and explicit funding prerequisites. Does not assume a successful fungible payment proves NFT delivery.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_721_pay
POST/api/v1/operations/prepare_adjust_tiers/plans signed plan
Prepare additions/removals of NFT tiers with typed price, supply, category, voting, reserve, discount and split configuration. Validates canonical hook identity and caller permissions.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_adjust_tiers
POST/api/v1/operations/prepare_721_launch/plans signed plan
Prepare a standard project with a canonical tiered 721 hook attached at launch, complete typed rulesets/tiers/terminals and a verified per-chain creation fee. The factory owns hook metadata wiring.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_721_launch
POST/api/v1/operations/prepare_revnet_deploy/plans signed plan
Prepare a complete typed revnet deployment: stages, issuance, splits, accounting contexts, bridges and optional 721/Croptop settings, with a live per-chain creation fee. For a multi-chain launch, pass chainIds and the sucker registry fills the bridges.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_revnet_deploy
POST/api/v1/operations/prepare_auto_issue/plans signed plan
Prepare an eligible revnet stage auto-issuance for a beneficiary after verifying live deployment and claim state.
Creates an immutable, durable unsigned plan from canonical onchain state. Review its exact calls, evidence, commitment and expiry before wallet signing.
operationId: prepare_prepare_auto_issue
Transactions (6)
Durable reviewed plans, simulation, exact signed transaction relay and reconciliation.
POST/api/v1/plans signed plan
Prepare reviewed ABI calls or a named semantic operation
operationId: createTransactionPlan
GET/api/v1/plans signed read
List plans visible to the authenticated principal
Owners may read account bot plans; bots see their own principal's plans. Listing does not authorize relay mutation of another principal's plan.
operationId: listTransactionPlans
GET/api/v1/plans/{id} signed read
Read or reconcile a stored transaction plan
refresh=true reconciles canonical receipts and configured confirmations; it never broadcasts. transactions_confirmed describes only these exact calls and verified modeled effects, not bridge settlement.
operationId: getTransactionPlan
GET/api/v1/plans/{id}/steps/{step}/simulation signed read
Simulate a ready plan step at current canonical state
Dependencies must be canonically confirmed with verified or explicitly unmodeled semantics. State overrides are not supplied. Simulation is an observation, not an inclusion guarantee.
operationId: simulateTransactionStep
POST/api/v1/plans/{id}/steps/{step}/submissions signed relay
Relay the exact wallet-signed transaction for one plan step
Requires a separate valid transaction signature from the plan wallet and fresh owner consent for each new dispatch. Bots include ownerApproval. Destination, calldata, native value, chain, sender and nonce are checked against the immutable call. A step permanently binds one transaction hash. Reconcile unknown broadcast results before retrying identical bytes.
operationId: submitSignedTransactionStep
POST/api/v1/plans/{id}/submissions signed relay
Process an explicit ordered set of signed plan steps
Stops at the first blocked step and returns partial progress. Each bot-dispatched entry needs its own fresh ownerApproval. complete means all supplied submissions were processed, not confirmed. Resume remaining ready steps later. Multi-call and multi-chain journeys are not atomic.
operationId: submitSignedTransactionBundle
Sponsorship (4)
Prepaid transaction bundles, explicit owner forwarding consent, reviewed funding plans and exact destination execution evidence.
POST/api/v1/sponsorships signed plan
Prepare exact owner forwarding authorizations from a stored plan
Requires configured prepaid execution and the source plan's creating principal. Choose ready calls from the source plan. Multiple calls per chain are supported in plan order, within Center’s 32-step plan capacity. The owner reviews each exact ForwardRequest and its deadline; source-plan expiry only limits publication.
operationId: createSponsorshipPreparation
GET/api/v1/sponsorships/{id} signed read
Read or reconcile a prepaid execution wave
refresh=true verifies destination execution using canonical chain evidence; provider status is only a hint. A funding quote does not establish whether the bundle has been paid. Reconcile the source plan independently for its full dependency state.
operationId: getSponsorshipPreparation
POST/api/v1/sponsorships/{id}/submissions signed relay
Publish exact owner-signed forward requests once
Supply signatures in authorization order. Bot publication additionally requires fresh CenterSponsorshipApproval bound to the exact submission hash. The adapter never repeats an uncertain provider POST; submission_unknown is not permission to publish again. Long forwarding validity does not create a reusable session.
operationId: publishSponsorshipAuthorizations
POST/api/v1/sponsorships/{id}/funding-plans signed plan
Persist a reviewed plan for one authenticated native funding quote
Payer must equal the API owner's wallet. Returns an unsigned durable plan for separate review, signature and submission. Center never signs or funds. Check existing funding before paying; funding confirmation does not prove destination execution, economic completion or bridge settlement.
operationId: createSponsorshipFundingPlan
Wallets (11)
Reviewed Safe creation calldata, owner-threshold binding and smart-account transaction plans. Availability depends on current verified manifests.
GET/api/v1/smart-accounts/capabilities public
Discover reviewed wallet manifests and remaining execution requirements
Runtime manifests and inspectors are operator-owned. Check top-level capabilities.userOperations for current provider availability and capabilities.sessions for activation readiness. Implemented routes or historical research do not prove deployed guard or account execution support; an empty deployment list supplies no usable manifest.
operationId: getSmartAccountCapabilities
POST/api/v1/smart-accounts/binding-challenges owner signature
Inspect an existing reviewed Safe and prepare owner-threshold binding data
Requires the API owner and a configured exact manifest. Returns a distinct BindSmartAccount EIP-712 document after canonical owner/runtime checks. Sign the returned domain and message exactly. This is API wallet association, not session installation or spending authority.
operationId: createSmartBindingChallenge
POST/api/v1/smart-accounts/onboarding-challenges public
Review sole-owner Base wallet binding and one-hour browser API access
Bounded public canonical read for a deployed, configured sole-owner Base Safe without spending sessions. Returns the exact SetupAccount document and digest without enrollment, nonce consumption or generic signed-request headers. The browser selects the grant UUID/key before review. Requires configured onboarding storage and a complete current dependency/module inspection; missing support fails explicitly.
operationId: createSmartOnboardingChallenge
POST/api/v1/smart-accounts/onboarding public
Finalize account identity, wallet binding and exact browser API grant with one owner approval
Requires the current sole owner's SetupAccount signature and the distinct browser key's CenterSetupProof over the setup digest. No generic CenterRequest headers are needed. Rechecks fresh canonical deployment state, then atomically enrolls if absent, binds and creates the exact grant. Replay may return the existing current result; revoked, changed or superseded authority is never restored. Persist the grant UUID/key, document and signatures before dispatch. Recover a lost successful response with the saved grant and an ordinary grant-signed binding GET. Deployment and each payment retain separate owner approval; this route authorizes no transaction or onchain session.
operationId: finalizeSmartOnboarding
POST/api/v1/smart-accounts/bindings owner signature
Link a reviewed Safe using its current EOA-owner threshold signatures
Rechecks current owner/module state and verifies exactly the required threshold of packed EOA owner signatures in ascending address order. The API owner must be one current owner. Binding nonces cannot restore an unlinked or superseded authorization.
operationId: bindSmartAccount
GET/api/v1/smart-accounts/bindings signed read
List stored wallet association snapshots for this API account
Stored snapshots are not fresh chain verification. Read an individual binding to recheck its current state. executionVerified remains false.
operationId: listSmartAccountBindings
GET/api/v1/smart-accounts/bindings/{id} signed read
Recheck a wallet binding against current canonical state
A changed owner or modeled module configuration requires a new owner-authorized binding. This read does not establish session execution support.
operationId: getSmartAccountBinding
DELETE/api/v1/smart-accounts/bindings/{id} owner signature
Unlink a wallet from the owner's API account
API unlink only. It does not revoke an installed onchain session, alter a Safe owner set, or cancel previously authorized chain execution.
operationId: unlinkSmartAccount
POST/api/v1/smart-accounts/session-reviews signed plan
Review a bounded session policy without installing or activating it
Requires a verified existing binding, an active cumulative relay grant and configured reviewed action targets. Returns reviewable-not-activated, exact policy hashes and remaining activation requirements. There is no encoded installation transaction, UserOperation, live session or standing fund-moving authorization in this result. Seven- or thirty-day durations must fit the selected grant.
operationId: reviewSmartAccountSession
POST/api/v1/smart-accounts/creation-plans owner signature
Prepare deterministic Safe creation calldata with canonical dependency evidence
Returns stateless exact factory calldata, predicted address and initializer. The API owner must appear in the owner set. A wallet signs and funds the factory transaction separately; this response is not a durable transaction plan or deployed account. Bind only after confirmed canonical creation and verified configuration.
operationId: prepareSmartAccountCreation
POST/api/v1/smart-accounts/bindings/{id}/plans signed plan
Create a durable plan for a currently verified smart-account binding
The draft account must equal the exact bound Safe. Use contract_calls or a catalog operation and preserve the creating principal. Prepare its execution through /user-operations; an API grant or binding cannot supply a Safe-owner signature or session authority.
operationId: createSmartAccountTransactionPlan
Sessions (6)
Immutable seven- or thirty-day policies, owner activation/revocation plans and canonical onchain quota observations.
POST/api/v1/smart-accounts/sessions signed plan
Compile and persist an immutable bounded session generation
Requires a complete verified binding, active read+plan+relay grant, reviewed compiler, asset/action targets and mandatory gas-only sponsorship budget. URI-only sessions may use allocations:[]. Preparation returns prepared and no standing authority. Generation, salt, policy nonce and permission identities cannot be reused.
operationId: prepareSmartAccountSession
GET/api/v1/smart-accounts/sessions signed read
List immutable sessions visible to the owner or exact bound bot
Ordered by session UUID. Follow optional nextCursor unchanged. The owner can inspect account sessions; a bot sees only the session's exact grant. Listing does not refresh chain evidence.
operationId: listSmartAccountSessions
GET/api/v1/smart-accounts/sessions/{id} signed read
Read or refresh exact installed-policy and counter evidence
Refreshes sessions with an activation claim by default. refresh=false returns stored history. Reorgs, counter resets and configuration changes suspend execution; stale proofs do not restore a generation. A failed verifier can return a problem while recording stale state.
operationId: getSmartAccountSession
GET/api/v1/smart-accounts/sessions/{id}/quota signed read
Read approved allocations and freshly observed onchain counters
Refreshes available installed evidence. Preserve chain and asset units. Database limits do not establish token balances or reusable cross-chain budget; policy validation can consume limits even when execution fails.
operationId: getSmartAccountSessionQuota
POST/api/v1/smart-accounts/sessions/{id}/activation-plans owner signature
Prepare the owner's exact session activation plan
Only the API owner can request this plan, acknowledging the exact compiledHash. Separately prepare a UserOperation from the returned plan, obtain the current Safe-owner threshold signatures, submit and refresh the session. Only the currently admitted lifecycle plan may execute. An expired plan with no admitted transport or attempt can be replaced with fresh owner consent and a new idempotency key, preserving up to 32 superseded approvals. Replacement cannot reinitialize an observed active generation. Only one generation per physical wallet may remain admitted, across keys, grants, assets and time windows. Release requires finalized disabled state with an advanced enable nonce; API revocation, unlinking or expiry alone cannot release it.
operationId: createSessionActivationPlan
POST/api/v1/smart-accounts/sessions/{id}/revocation-plans owner signature
Prepare the owner's exact session revocation plan
Only the API owner can request this plan, acknowledging the exact compiledHash. Separately prepare a UserOperation from the returned plan, obtain the current Safe-owner threshold signatures, submit and refresh the session. Only the currently admitted lifecycle plan may execute. An expired plan with no admitted transport or attempt can be replaced with fresh owner consent and a new idempotency key, preserving up to 32 superseded approvals. Replacement cannot reinitialize an observed active generation. Only one generation per physical wallet may remain admitted, across keys, grants, assets and time windows. Release requires finalized disabled state with an advanced enable nonce; API revocation, unlinking or expiry alone cannot release it.
operationId: createSessionRevocationPlan
UserOperations (3)
Reviewed EntryPoint v0.7 preparation, external owner or session-key signatures, one-time provider publication and reconciliation.
POST/api/v1/user-operations signed plan
Prepare exact EntryPoint v0.7 bytes and the appropriate signing payload
Requires configured provider/runtime policies and the source smart-account plan's creating principal. Select increasing step indices. Owner mode permits 1–16 calls on one chain and returns SafeOp typed data. Session mode requires the exact active bound bot, selects one call and returns an EIP-191 payload. Provider estimation and sponsorship are checked before signing; no execution occurs during preparation.
operationId: prepareUserOperation
POST/api/v1/user-operations/{id}/submissions signed relay
Verify and publish one externally signed UserOperation
Submit only the complete account signature envelope for the returned operation; all other fields remain immutable. Outside a session, current Safe-owner threshold signatures bind a fresh finite validity window. Inside a session, the installed bot key signs the exact operation and admission rechecks grant, generation and canonical counters. The API request signature is separate in both modes. Nonce and plan transport are reserved before publication. A timeout becomes submission_unknown and never permits an automatic second provider POST.
operationId: submitUserOperation
GET/api/v1/user-operations/{id} signed read
Reconcile a stored UserOperation using canonical execution evidence
Refreshes submitted operations. A provider receipt is a location hint; confirmed requires the exact EntryPoint operation and its scoped account-call evidence. Submitted signature bytes remain omitted. Reconcile the source plan for dependency status and distinguish bridge settlement from execution.
operationId: getUserOperation
WalletPayments (2)
Exact passkey payment reviews for typed trusted-app grants; available only with explicit pilot configuration.
POST/api/v1/wallet/payment-reviews signed plan
Prepare an exact passkey payment review for the current app
Requires a current typed wallet-app grant. The server loads its existing prepared operation and derives the payment and SafeOp digest. Neither API owners nor legacy bot grants can use this route. The saved allowlist callback supplies the return location. No signature, nonce reservation or submission occurs here.
operationId: prepareWalletPaymentReview
GET/api/v1/wallet/payment-reviews/{id} signed read
Read the original app review and any live owner approval
Only the original current app grant and incarnation can retrieve its review. Approval requires a separate explicit passkey ceremony on the central wallet origin. A winning signature is returned only while the review and authority remain live. Submit it through the original UserOperation endpoint with unchanged fields. After review expiry, reconcile the original UserOperation; expiry does not establish a safe replacement.
operationId: getWalletPaymentReview
Errors and retries
Errors use application/problem+json with code, status, requestId and retryable. Honor Retry-After. To retry the same request, keep its exact bytes and idempotency key. Use a new one-time request identifier (nonce) and API signature.
Retrying a plan step does not authorize changes to its instructions, network costs, or transaction nonce. Look up the stored transaction hash and check its state first.
Glossary
Look up a term here, then return to the step you were following.
- Project
- A set of Juicebox rules, funds, and tokens. Identify it by both its chain ID and project ID.
- Project token / cash out
- A project token records participation under a project’s rules. Cashing out gives up tokens permanently in exchange for project funds when those rules allow it. Tokens do not automatically give company ownership or a guaranteed return.
- Revnet
- A Juicebox project with token rules scheduled at launch. Operators retain limited powers; see the revnet guide.
- Smart contract
- Code stored on a blockchain that runs when called. The code and its current settings determine what a call can do.
- Ruleset
- A project's rules for a period of time, including how payments create tokens and what can be paid out.
- Terminal
- A contract that accepts and accounts for a project's payments and cash outs.
- Hook
- A contract a project calls to add behavior, such as giving a payer a collectible token.
- Mainnet / testnet
- A network for real funds / a network for testing with test funds. A chain ID identifies the network.
- Canonical block
- A block checked against the chain's current accepted history. A recent block can still be replaced by a chain reorganization.
- API / REST
- An API lets programs request data or actions from another program. Center's REST API uses HTTP requests to named URLs.
- Schema / audience
- A schema defines a request or response’s exact fields and types. The authentication audience identifies the service a signature is intended for.
- RPC
- A format for asking a remote computer to run a method. Ethereum JSON-RPC is used for blockchain reads and simulations here.
- MCP
- Model Context Protocol: a shared format for connecting AI apps to tools and data.
- SDK
- A software development kit: reusable code for building an app.
- ABI
- A contract interface that describes its methods, arguments, outputs, and events. Use the interface for the deployed contract you are calling.
- Calldata
- The encoded instructions sent to a contract: which method to run and its arguments.
- Indexer / cursor
- An indexer collects blockchain records so they can be searched. A cursor marks where the next page starts. Indexed data can lag behind the chain.
- Metadata / URI
- Project details such as a name, description, and image. A URI identifies their location, such as an HTTPS or IPFS address.
- IPFS / CID / pinning
- IPFS is a shared file network. A CID identifies content; pinning keeps a copy available. A CID does not promise someone will keep hosting the file.
- Bot grant / scope
- A grant gives one bot time-limited API access. Scopes choose what it can do: read, plan, or relay. These are not wallet spending permissions.
- The authority chain is part of a Center account's identity. A principal is the owner or bot making an API request.
- Plan / commitment
- A plan saves proposed transactions and their required earlier steps. Its commitment is a hash that binds the exact plan being reviewed.
- Idempotency key
- An identifier that lets the service recognize a repeated request. Reuse it with the same bytes when retrying an operation that supports it.
- Nonce
- A value that prevents reuse of a signed request. Each API attempt needs a fresh random nonce. A wallet transaction nonce instead orders that wallet's transactions.
- Smart wallet / Safe / EOA
- A smart wallet uses a contract to check approvals. Safe is one supported kind. An EOA is an account controlled directly by a private key.
- Wallet binding
- A verified link between a Center account and a smart wallet. Linking them does not grant a bot permission to spend.
- Relay / bundler
- A relay sends already signed transactions. A bundler submits smart-wallet UserOperations to the chain.
- UserOperation / SafeOp
- A UserOperation packages a smart-wallet action for submission. SafeOp is the exact approval document its Safe owners sign.
- Session / guard
- A session is time-limited permission to repeat specified actions. A guard is a contract that enforces its limits. API access alone does not create a session.
- Gas / wei / paymaster
- Gas measures the work a transaction uses. Wei is the smallest ETH unit: 10¹⁸ wei equals 1 ETH. A paymaster sponsors supported network costs.
- Receipt
- A blockchain record showing that a transaction was included and whether it succeeded or reverted. Check its events and resulting balances for the intended outcome.
- Reconcile
- Look up an existing submission and compare it with chain evidence to find out what happened before trying again.