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.

I need data →Read current values or search project history.I need a transaction →Prepare, review, sign, then check the result.I am building an integration →Find request formats and supported actions.

Your first request

Explore supported chains and execution options. No account required.

curl https://juicebox.center/api/v1/capabilities

For 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.json

The client handles authentication. Your wallet separately approves spending.

Complete quickstart → / Client workflows

Choose a data source

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

  1. Create a saved set of proposed transactions: a plan. Use a named preparation or contract_calls. Sign the API request and include an Idempotency-Key so a retry can find the same result.
  2. 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.
  3. 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.
  4. Retrieve the plan with refresh=true to 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 public

Find API entry points

operationId: apiDiscovery

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.
Authority chain / principal
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.