reference
API reference
The public WebSoroban backend endpoints, request bodies, responses, and which ones sign with your wallet.
Every endpoint is under the base path /api and requires a Bearer token unless
marked otherwise. All operations run against the Stellar testnet, mainnet is
never used.
Reading the badges
read-only never signs.
signed signs with your testnet wallet and pays a fee.
queued returns a jobId; poll the job for the result.
Compile#
POST /api/compile#
queuedQueue a build of a project to Wasm. Does not sign. Unlimited on every plan.
projectIdstringrequiredfilesobjectrequiredsuccessbooleantrue when the job is queued (HTTP 202).jobIdstringlogsarrayDeploy#
POST /api/deploy#
signed queuedQueue a deploy: upload the Wasm hash, then instantiate a contract id. The worker signs with your wallet. Counts one deploy against your quota.
projectIdstringrequiredwasmBase64stringrequiredsuccessbooleantrue when the job is queued (HTTP 202).jobIdstringlogsarrayThe network is fixed to testnet server-side. Two non-202 cases:
- Over the plan limit, HTTP
403with{ error, current, limit, upgradeRequired: true }. See Plans and limits. - Workspace needs a target, HTTP
400with{ code: "DEPLOY_TARGET_REQUIRED", choices }when the workspace has more than one deployable crate. See Troubleshooting.
Invoke#
GET /api/contracts/:contractId/spec#
read-onlyReturn the parsed function list used to render the typed Invoke form. Auth is optional.
successbooleantrue on success.contractIdstringfunctionsarrayname, inputs (name + type), and return type.Returns 404 if no spec is stored or recoverable from chain.
POST /api/contracts/:contractId/invoke#
read-only signedInvoke a function. Always simulates first. A read returns immediately; a write
submits a signed transaction only when execute is true.
functionNamestringrequiredargsobjectScVal.executebooleanfalse (default) simulates only. true signs and submits a state-changing call.clientRefstringsubmitted → pending → confirmed status.successbooleantrue on success, false with a humanized error on failure.readOnlybooleanstatusstringsimulated, submitted, success, or failed.returnValueanyresourceFeestringtxHashstringeventsarrayinvocationIdstringTest#
POST /api/test#
queuedQueue cargo test over the project. Does not sign and does not touch the network.
Unlimited on every plan.
projectIdstringrequiredfilesobjectrequiredsuccessbooleantrue when the job is queued (HTTP 202).jobIdstringlogsarrayPOST /api/contracts/:contractId/tests/run#
read-onlyReplay the requesting user's saved function tests by simulation and assert each expected return. Counts one function-test run against your quota when at least one test runs.
functionNamestringsuccessbooleantrue on completion.totalnumberpassednumberresultsarray{ testId, name, functionName, status, actual, expected, error }.Returns 403 with upgradeRequired: true when over the function-test limit. See
Plans and limits.
Wallet#
POST /api/wallet/fund#
queuedTop up your testnet wallet from Friendbot if its balance is low. No body.
successbooleantrue on success.publicKeystringG…).fundedbooleanbalancestringGET /api/wallet/me#
read-onlyReturn the public details of your server-managed wallet. The secret key is never returned.
successbooleantrue on success.publicKeystringG…).fundedbooleanbalancestringUsage#
GET /api/usage#
read-onlyReturn your current usage and limits, plus recent activity. No body.
successbooleantrue on success.usageobjectdeployments and functionTests, each { count, limit, remaining, lastResetDate }. limit is -1 and remaining is "unlimited" on uncapped plans.statisticsobjectlogsarrayNext#
- Glossary, terms used across these docs.
- Plans and limits, what the quotas mean.
