> For the complete documentation index, see [llms.txt](https://docs.trustlesswork.com/trustless-work/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest.md).

# API REST

- [Introduction](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/introduction.md): Base URLs, the build-sign-submit loop, and the conventions every endpoint follows.
- [Errors](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors.md): Every error the API can return: the Problem Details envelope, how to handle it, and the full catalog of stable error codes.
- [Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow.md)
- [ESCROW\_ADMIN\_ADDRESS\_CANNOT\_BE\_CHANGED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-admin-address-cannot-be-changed.md): Admin address cannot be changed after initialization.
- [ESCROW\_ADMIN\_ADDRESS\_OVERLAPS\_WITH\_OTHER\_ROLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-admin-address-overlaps-with-other-role.md): Admin address must not overlap with any other role.
- [ESCROW\_ALREADY\_IN\_DISPUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-already-in-dispute.md): Escrow is already in dispute.
- [ESCROW\_ALREADY\_INITIALIZED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-already-initialized.md): Escrow is already initialized.
- [ESCROW\_ALREADY\_RELEASED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-already-released.md): Escrow funds were already released.
- [ESCROW\_ALREADY\_RESOLVED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-already-resolved.md): Escrow dispute is already resolved.
- [ESCROW\_AMOUNT\_CANNOT\_BE\_ZERO](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-amount-cannot-be-zero.md): Amount must be greater than zero.
- [ESCROW\_AMOUNTS\_TO\_TRANSFER\_SHOULD\_BE\_POSITIVE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-amounts-to-transfer-should-be-positive.md): Transfer amounts must be positive.
- [ESCROW\_APPROVER\_ALREADY\_APPROVED\_MILESTONE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-approver-already-approved-milestone.md): This approver already approved this milestone.
- [ESCROW\_APPROVER\_OR\_RECEIVER\_FUNDS\_LESS\_THAN\_ZERO](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-approver-or-receiver-funds-less-than-zero.md): Approver or receiver funds cannot be negative.
- [ESCROW\_APPROVERS\_LIST\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-approvers-list-empty.md): roles.approvers must contain at least one address.
- [ESCROW\_BALANCE\_NOT\_ENOUGH\_TO\_SEND\_EARNINGS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-balance-not-enough-to-send-earnings.md): Escrow balance is insufficient to release the earnings.
- [ESCROW\_BATCH\_MILESTONE\_APPROVE\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-batch-milestone-approve-empty.md): approve\_milestones batch cannot be empty.
- [ESCROW\_BATCH\_MILESTONE\_DISPUTE\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-batch-milestone-dispute-empty.md): dispute\_milestones requires at least one milestone index.
- [ESCROW\_BATCH\_MILESTONE\_UPDATE\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-batch-milestone-update-empty.md): change\_milestone\_status batch cannot be empty.
- [ESCROW\_BATCH\_TOO\_LARGE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-batch-too-large.md): Milestone batch exceeded the maximum size of 50 entries.
- [ESCROW\_CANT\_RELEASE\_A\_MILESTONE\_IN\_DISPUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-cant-release-a-milestone-in-dispute.md): Cannot release a milestone that is in dispute.
- [ESCROW\_DISPUTE\_RESOLVER\_CANNOT\_DISPUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-dispute-resolver-cannot-dispute.md): The dispute resolver cannot initiate a dispute.
- [ESCROW\_DISPUTE\_RESOLVER\_CANNOT\_DISPUTE\_MILESTONE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-dispute-resolver-cannot-dispute-milestone.md): The dispute resolver cannot initiate a dispute on a milestone.
- [ESCROW\_DISPUTE\_RESOLVER\_OVERLAPS\_WITH\_OTHER\_ROLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-dispute-resolver-overlaps-with-other-role.md): A dispute resolver cannot also appear in approvers, service\_providers, release\_signers or be the receiver / platform.
- [ESCROW\_DISPUTE\_RESOLVERS\_LIST\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-dispute-resolvers-list-empty.md): roles.dispute\_resolvers must contain at least one address.
- [ESCROW\_DISTRIBUTIONS\_MUST\_EQUAL\_BALANCE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-distributions-must-equal-balance.md): Distributions must equal the total escrow balance.
- [ESCROW\_DIVISION\_ERROR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-division-error.md): Arithmetic division error while processing the escrow.
- [ESCROW\_DUPLICATE\_ADDRESS\_IN\_ROLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-duplicate-address-in-role.md): A role list contains duplicate addresses.
- [ESCROW\_DUPLICATE\_MILESTONE\_INDEX](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-duplicate-milestone-index.md): Duplicate milestone indices are not allowed in the batch.
- [ESCROW\_EMPTY\_MILESTONE\_STATUS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-empty-milestone-status.md): Milestone status cannot be empty.
- [ESCROW\_FILTER\_FORBIDDEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-filter-forbidden.md): Your credential cannot use the requested escrow filter (e.g. filtering another platform's escrows).
- [ESCROW\_FLAGS\_MUST\_BE\_FALSE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-flags-must-be-false.md): Escrow flags (approved, disputed, released) must all be false for this action.
- [ESCROW\_HAS\_FUNDS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-has-funds.md): Escrow still holds funds; action blocked.
- [ESCROW\_INCOMPATIBLE\_WASM\_HASH](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-incompatible-wasm-hash.md): Target contract is not an instance of the expected escrow type.
- [ESCROW\_INSUFFICIENT\_APPROVER\_FUNDS\_FOR\_COMMISSIONS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-insufficient-approver-funds-for-commissions.md): Approver has insufficient funds for commissions.
- [ESCROW\_INSUFFICIENT\_ESCROW\_FUNDS\_TO\_MAKE\_REFUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-insufficient-escrow-funds-to-make-refund.md): Insufficient escrow funds to make the refund.
- [ESCROW\_INSUFFICIENT\_FUNDS\_FOR\_FUNDING](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-insufficient-funds-for-funding.md): Insufficient funds to fund the escrow.
- [ESCROW\_INSUFFICIENT\_FUNDS\_FOR\_REFUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-insufficient-funds-for-refund.md): Insufficient funds for refund.
- [ESCROW\_INSUFFICIENT\_FUNDS\_FOR\_RESOLUTION](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-insufficient-funds-for-resolution.md): Insufficient funds to resolve the dispute.
- [ESCROW\_INSUFFICIENT\_SERVICE\_PROVIDER\_FUNDS\_FOR\_COMMISSIONS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-insufficient-service-provider-funds-for-commissions.md): Service provider has insufficient funds for commissions.
- [ESCROW\_INVALID\_MILESTONE\_INDEX](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-invalid-milestone-index.md): Milestone index is out of range.
- [ESCROW\_MILESTONE\_ALREADY\_DISPUTED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-already-disputed.md): Targeted milestone is already in dispute.
- [ESCROW\_MILESTONE\_ALREADY\_IN\_DISPUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-already-in-dispute.md): Milestone is already in dispute.
- [ESCROW\_MILESTONE\_ALREADY\_RELEASED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-already-released.md): Milestone funds were already released.
- [ESCROW\_MILESTONE\_ALREADY\_RESOLVED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-already-resolved.md): Milestone dispute is already resolved.
- [ESCROW\_MILESTONE\_APPROVED\_CANT\_CHANGE\_PROPERTIES](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-approved-cant-change-properties.md): Escrow properties cannot be modified after a milestone approval.
- [ESCROW\_MILESTONE\_HAS\_ALREADY\_BEEN\_APPROVED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-has-already-been-approved.md): Milestone was already approved.
- [ESCROW\_MILESTONE\_NOT\_COMPLETED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-not-completed.md): Milestone is not completed; action cannot proceed.
- [ESCROW\_MILESTONE\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-not-found.md): Milestone does not exist.
- [ESCROW\_MILESTONE\_NOT\_IN\_DISPUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-not-in-dispute.md): Milestone is not currently in dispute.
- [ESCROW\_MILESTONE\_OPENED\_FOR\_DISPUTE\_RESOLUTION](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-opened-for-dispute-resolution.md): Milestone is opened for dispute resolution; action blocked.
- [ESCROW\_MILESTONE\_TARGET\_OUT\_OF\_RANGE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-target-out-of-range.md): A milestone target does not fit in an unsigned 32-bit integer.
- [ESCROW\_MILESTONE\_TO\_APPROVE\_DOES\_NOT\_EXIST](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-to-approve-does-not-exist.md): Milestone to approve does not exist.
- [ESCROW\_MILESTONE\_TO\_UPDATE\_DOES\_NOT\_EXIST](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-to-update-does-not-exist.md): Milestone to update does not exist.
- [ESCROW\_MILESTONE\_UPDATE\_NOT\_ALLOWED\_WITH\_FUNDS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-milestone-update-not-allowed-with-funds.md): Milestones cannot be added or edited while the escrow holds funds; the balance must be zero.
- [ESCROW\_NO\_MILESTONE\_DEFINED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-no-milestone-defined.md): Escrow has no milestones defined.
- [ESCROW\_NOT\_COMPLETED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-not-completed.md): Escrow has pending milestones; action cannot proceed.
- [ESCROW\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-not-found.md): Escrow does not exist.
- [ESCROW\_NOT\_FULLY\_PROCESSED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-not-fully-processed.md): Escrow has not been fully processed.
- [ESCROW\_NOT\_FUNDED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-not-funded.md): Escrow has not been funded yet.
- [ESCROW\_NOT\_IN\_DISPUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-not-in-dispute.md): Escrow is not currently in dispute.
- [ESCROW\_ONLY\_ADMIN\_CAN\_EXECUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-only-admin-can-execute.md): Only the admin address can perform this action.
- [ESCROW\_ONLY\_APPROVER\_CAN\_CHANGE\_MILESTONE\_FLAG](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-only-approver-can-change-milestone-flag.md): Only the approver can change the milestone approval flag.
- [ESCROW\_ONLY\_DISPUTE\_RESOLVER\_CAN\_EXECUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-only-dispute-resolver-can-execute.md): Only the dispute resolver can perform this action.
- [ESCROW\_ONLY\_PLATFORM\_ADDRESS\_CAN\_EXECUTE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-only-platform-address-can-execute.md): Only the platform address can perform this action.
- [ESCROW\_ONLY\_RELEASE\_SIGNER\_CAN\_RELEASE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-only-release-signer-can-release.md): Only the designated release signer can release funds.
- [ESCROW\_ONLY\_SERVICE\_PROVIDER\_CAN\_CHANGE\_MILESTONE\_STATUS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-only-service-provider-can-change-milestone-status.md): Only the service provider can change a milestone status.
- [ESCROW\_OPENED\_FOR\_DISPUTE\_RESOLUTION](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-opened-for-dispute-resolution.md): Escrow is opened for dispute resolution; action blocked.
- [ESCROW\_OVERFLOW](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-overflow.md): Arithmetic overflow while processing the escrow.
- [ESCROW\_PLATFORM\_ADDRESS\_CANNOT\_BE\_CHANGED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-platform-address-cannot-be-changed.md): Platform address cannot be modified.
- [ESCROW\_PLATFORM\_FEE\_TOO\_HIGH](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-platform-fee-too-high.md): Platform fee cannot exceed 99%.
- [ESCROW\_PROPERTIES\_MISMATCH](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-properties-mismatch.md): Provided escrow properties do not match the on-chain state.
- [ESCROW\_RECEIVER\_AND\_APPROVER\_FUNDS\_NOT\_EQUAL](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-receiver-and-approver-funds-not-equal.md): Receiver and approver distributions do not match.
- [ESCROW\_RECEIVER\_MEMO\_OUT\_OF\_RANGE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-receiver-memo-out-of-range.md): receiverMemo does not fit in an unsigned 32-bit integer.
- [ESCROW\_REENTRANCY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-reentrancy.md): Reentrant call detected.
- [ESCROW\_RELEASE\_MILESTONES\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-release-milestones-empty.md): release\_funds requires at least one milestone index.
- [ESCROW\_RELEASE\_SIGNERS\_LIST\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-release-signers-list-empty.md): roles.release\_signers must contain at least one address.
- [ESCROW\_ROLE\_LIMIT\_EXCEEDED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-role-limit-exceeded.md): A role list exceeded its maximum size (5 addresses per list).
- [ESCROW\_SERVICE\_PROVIDERS\_LIST\_EMPTY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-service-providers-list-empty.md): roles.service\_providers must contain at least one address.
- [ESCROW\_SIGNER\_MUST\_BE\_APPROVER\_AND\_RELEASE\_SIGNER](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-signer-must-be-approver-and-release-signer.md): approve\_and\_release\_milestones requires the signer to be in BOTH roles.approvers and roles.release\_signers.
- [ESCROW\_STRING\_TOO\_LONG](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-string-too-long.md): A String field exceeded its on-chain maximum length.
- [ESCROW\_TARGET\_CANNOT\_BE\_ZERO](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-target-cannot-be-zero.md): A milestone approvals.target must be greater than zero.
- [ESCROW\_TARGET\_EXCEEDS\_APPROVERS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-target-exceeds-approvers.md): A milestone approvals.target cannot exceed roles.approvers.length.
- [ESCROW\_TOO\_MANY\_DISTRIBUTIONS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-too-many-distributions.md): Too many distributions; the maximum is 50.
- [ESCROW\_TOO\_MANY\_ESCROWS\_REQUESTED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-too-many-escrows-requested.md): Too many escrows requested; the maximum is 20 per call.
- [ESCROW\_TOO\_MANY\_MILESTONES](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-too-many-milestones.md): Too many milestones; the maximum is 50.
- [ESCROW\_TOTAL\_AMOUNT\_CANNOT\_BE\_ZERO](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-total-amount-cannot-be-zero.md): Total amount cannot be zero.
- [ESCROW\_TOTAL\_DISPUTE\_FUNDS\_MUST\_NOT\_EXCEED\_MILESTONE\_AMOUNT](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-total-dispute-funds-must-not-exceed-milestone-amount.md): Total dispute funds cannot exceed the milestone amount.
- [ESCROW\_UNAUTHORIZED\_APPROVER](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-unauthorized-approver.md): Caller is not in roles.approvers.
- [ESCROW\_UNAUTHORIZED\_TO\_CHANGE\_DISPUTE\_FLAG](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-unauthorized-to-change-dispute-flag.md): Caller is not authorized to change the dispute flag.
- [ESCROW\_UNDERFLOW](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/escrow/escrow-underflow.md): Arithmetic underflow while processing the escrow.
- [Stellar](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar.md)
- [STELLAR\_FACTORY\_RETURN\_SHAPE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-factory-return-shape.md): The factory returned an unexpected value shape.
- [STELLAR\_HORIZON\_UNMAPPED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-horizon-unmapped.md): Horizon answered with an error shape the API does not recognize.
- [STELLAR\_HORIZON\_UNREACHABLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-horizon-unreachable.md): Could not communicate with Horizon to submit the transaction.
- [STELLAR\_INVALID\_SIGNED\_XDR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-invalid-signed-xdr.md): The provided signedXdr is not a valid Stellar transaction envelope.
- [STELLAR\_RESTORE\_UNBUILDABLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-restore-unbuildable.md): Simulation requires a state restore but no transaction was assembled.
- [STELLAR\_RETURN\_VALUE\_SHAPE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-return-value-shape.md): A contract returned data in an unexpected shape.
- [STELLAR\_RPC\_TIMEOUT](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-rpc-timeout.md): The Soroban RPC did not answer within the deadline.
- [STELLAR\_RPC\_UNAVAILABLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-rpc-unavailable.md): Could not reach the Soroban RPC to validate the trustline contract.
- [STELLAR\_SIMULATION\_FAILED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-simulation-failed.md): Contract simulation failed.
- [STELLAR\_SIMULATION\_MISSING](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-simulation-missing.md): Contract simulation response was not returned by the RPC.
- [STELLAR\_STATE\_ARCHIVED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-state-archived.md): The contract state is archived. Sign and submit the provided restore transaction, then retry.
- [STELLAR\_TRUSTLINE\_INVALID\_FORMAT](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-trustline-invalid-format.md): trustline (code, issuer) could not be resolved to a Stellar asset contract.
- [STELLAR\_TRUSTLINE\_MISSING](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-trustline-missing.md): escrow state does not carry a readable trustline address.
- [STELLAR\_TRUSTLINE\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-trustline-not-found.md): No contract is deployed at the resolved trustline address on the configured Soroban network.
- [STELLAR\_TRUSTLINE\_NOT\_SEP41](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-trustline-not-sep41.md): The contract does not implement the SEP-41 token interface.
- [STELLAR\_TX\_BAD\_AUTH](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-bad-auth.md): The transaction signature does not match the source account, or required signers are missing.
- [STELLAR\_TX\_BAD\_AUTH\_EXTRA](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-bad-auth-extra.md): The transaction includes signatures that no operation needs.
- [STELLAR\_TX\_BAD\_SEQ](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-bad-seq.md): The transaction sequence number is not the next expected one for the source account.
- [STELLAR\_TX\_CONTRACT\_NOT\_ALLOWED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-contract-not-allowed.md): Transaction invokes a contract this API does not manage.
- [STELLAR\_TX\_FAILED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-failed.md): The network rejected the transaction with a result code the API maps in detail.
- [STELLAR\_TX\_FEE\_BUMP\_INNER\_FAILED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-fee-bump-inner-failed.md): The inner transaction wrapped by the fee-bump envelope failed.
- [STELLAR\_TX\_FEE\_BUMP\_REJECTED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-fee-bump-rejected.md): Fee-bump transactions are not accepted by this endpoint.
- [STELLAR\_TX\_HOST\_FN\_NOT\_ALLOWED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-host-fn-not-allowed.md): Only invokeContract host functions may be submitted here.
- [STELLAR\_TX\_INSUFFICIENT\_BALANCE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-insufficient-balance.md): The source account does not hold enough XLM to pay the fee or to keep its minimum reserve.
- [STELLAR\_TX\_INSUFFICIENT\_FEE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-insufficient-fee.md): The fee on the transaction is below the network minimum or the current base fee surge.
- [STELLAR\_TX\_INTERNAL\_ERROR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-internal-error.md): The network reported an internal error while processing the transaction.
- [STELLAR\_TX\_MISSING\_OPERATION](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-missing-operation.md): The transaction does not contain any operations.
- [STELLAR\_TX\_NO\_OPS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-no-ops.md): Transaction carries no operations.
- [STELLAR\_TX\_NO\_SOURCE\_ACCOUNT](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-no-source-account.md): The source account does not exist on the network.
- [STELLAR\_TX\_NOT\_SUPPORTED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-not-supported.md): The transaction type is not supported on the current network protocol version.
- [STELLAR\_TX\_OP\_NOT\_ALLOWED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-op-not-allowed.md): Only Soroban invokeHostFunction operations may be submitted here.
- [STELLAR\_TX\_OPERATION\_FAILED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-operation-failed.md): One or more operations in the transaction failed.
- [STELLAR\_TX\_TOO\_EARLY](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-too-early.md): The transaction was submitted before the lower bound of its time bounds.
- [STELLAR\_TX\_TOO\_LATE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-too-late.md): The transaction was submitted after the upper bound of its time bounds expired.
- [STELLAR\_TX\_UNPARSEABLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-unparseable.md): signedXdr is not a valid Stellar transaction envelope.
- [STELLAR\_UNKNOWN\_CONTRACT\_METHOD](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-unknown-contract-method.md): The API tried to invoke a method the target contract does not expose.
- [STELLAR\_UNSUPPORTED\_DECIMALS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-unsupported-decimals.md): The token reports decimals outside the supported range.
- [STELLAR\_TX\_DEPLOY\_FEE\_ABOVE\_CEILING](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-deploy-fee-above-ceiling.md): Hand-crafted deploy rejected: platform\_fee above the ceiling would lock every deposit in the escrow.
- [STELLAR\_TX\_DEPLOY\_MILESTONES\_OVER\_CAP](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-deploy-milestones-over-cap.md): Hand-crafted deploy rejected: milestones exceed the deploy cap.
- [STELLAR\_TX\_DEPLOY\_PRE\_APPROVED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/stellar/stellar-tx-deploy-pre-approved.md): Hand-crafted deploy rejected: milestones cannot be born approved, released, resolved or disputed.
- [Auth & API Keys](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys.md)
- [API\_KEY\_LIMIT\_REACHED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/api-key-limit-reached.md): You have reached the maximum number of active API keys. Revoke one before creating another.
- [AUTH\_BOOTSTRAP\_ALREADY\_DONE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-bootstrap-already-done.md): An admin already exists. Create additional admins via POST /admin/api-keys.
- [AUTH\_BOOTSTRAP\_EMAIL\_TAKEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-bootstrap-email-taken.md): A user with that email already exists.
- [AUTH\_BOOTSTRAP\_INVALID\_SECRET](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-bootstrap-invalid-secret.md): Invalid bootstrap secret.
- [AUTH\_BOOTSTRAP\_SECRET\_NOT\_CONFIGURED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-bootstrap-secret-not-configured.md): Bootstrap is disabled because ADMIN\_BOOTSTRAP\_SECRET is not set.
- [AUTH\_CREDENTIAL\_MISSING](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-credential-missing.md): Deploy routes require an authenticated credential.
- [AUTH\_INSUFFICIENT\_ROLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-insufficient-role.md): API key does not have permission for this operation.
- [AUTH\_INVALID\_CREDENTIAL](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-invalid-credential.md): Invalid API key.
- [AUTH\_INVALID\_FORMAT](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-invalid-format.md): Invalid API key format.
- [AUTH\_KEY\_EXPIRY\_IN\_PAST](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-key-expiry-in-past.md): expiresAt must be in the future.
- [AUTH\_KEY\_EXPIRY\_TOO\_FAR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-key-expiry-too-far.md): The requested key expiry exceeds the maximum allowed lifetime.
- [AUTH\_KEY\_NO\_ROLES](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-key-no-roles.md): At least one role is required.
- [AUTH\_KEY\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-key-not-found.md): API key not found.
- [AUTH\_ROLE\_CEILING](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-role-ceiling.md): Cannot grant a role higher than your own.
- [AUTH\_SESSION\_BAD\_ALG](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-bad-alg.md): The JWT declares an unexpected signing algorithm.
- [AUTH\_SESSION\_BAD\_SIGNATURE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-bad-signature.md): The JWT signature does not verify.
- [AUTH\_SESSION\_EXPIRED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-expired.md): The wallet-session JWT is past its expiry.
- [AUTH\_SESSION\_INVALID](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-invalid.md): The JWT payload is missing required claims or fails validation.
- [AUTH\_SESSION\_MALFORMED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-malformed.md): The bearer token is not a parseable JWT.
- [AUTH\_SESSION\_NOT\_CONFIGURED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-not-configured.md): Wallet-session auth is not configured (set SESSION\_JWT\_SECRET to at least 32 chars).
- [AUTH\_SESSION\_REVOKED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-revoked.md): Session has been revoked. Sign in again.
- [AUTH\_SESSION\_UNAVAILABLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-session-unavailable.md): Session auth is not enabled on this server.
- [AUTH\_USER\_ID\_INVALID](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-user-id-invalid.md): userId must be a valid BigInt-compatible string.
- [AUTH\_USER\_INACTIVE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-user-inactive.md): Cannot create API keys for inactive users.
- [AUTH\_USER\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/auth-and-api-keys/auth-user-not-found.md): User not found.
- [Identity & Wallets](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets.md)
- [RECOVERY\_BAD\_SIGNATURE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/recovery-bad-signature.md): Signature does not prove ownership of the address.
- [RECOVERY\_CHALLENGE\_REUSED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/recovery-challenge-reused.md): This challenge has already been used. Request a new one.
- [RECOVERY\_KEY\_LIMIT\_REACHED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/recovery-key-limit-reached.md): This account is at its active API-key limit. Revoke a key before recovering a new one.
- [RECOVERY\_WALLET\_NOT\_REGISTERED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/recovery-wallet-not-registered.md): No registered account is linked to this verified wallet. Register first.
- [REGISTRATION\_BAD\_SIGNATURE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/registration-bad-signature.md): Signature does not prove ownership of the address.
- [REGISTRATION\_CHALLENGE\_REUSED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/registration-challenge-reused.md): This challenge has already been used. Request a new one.
- [REGISTRATION\_CLOSED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/registration-closed.md): Self-registration is disabled. Contact an administrator to be provisioned.
- [REGISTRATION\_EMAIL\_TAKEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/registration-email-taken.md): A user with that email already exists.
- [REGISTRATION\_WALLET\_TAKEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/registration-wallet-taken.md): This wallet is already registered. Recover access instead of registering again.
- [SESSION\_BAD\_SIGNATURE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/session-bad-signature.md): Signature does not prove ownership of the address.
- [SESSION\_CHALLENGE\_REUSED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/session-challenge-reused.md): This challenge has already been used. Request a new one.
- [SESSION\_USER\_INACTIVE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/session-user-inactive.md): This account is deactivated.
- [SESSION\_WALLET\_NOT\_REGISTERED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/session-wallet-not-registered.md): No registered account is linked to this verified wallet. Register first.
- [SUBJECT\_EXTERNAL\_ID\_TAKEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/subject-external-id-taken.md): Another subject of this platform already uses that externalId.
- [SUBJECT\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/subject-not-found.md): Subject not found under this platform.
- [USER\_EMAIL\_TAKEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/user-email-taken.md): A user with that email already exists.
- [USER\_ID\_INVALID](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/user-id-invalid.md): userId must be a non-empty BigInt-compatible string.
- [USER\_NO\_ROLES](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/user-no-roles.md): At least one role is required.
- [USER\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/user-not-found.md): User not found.
- [WALLET\_BAD\_SIGNATURE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/wallet-bad-signature.md): Signature does not prove ownership of the address.
- [WALLET\_CANNOT\_REMOVE\_LAST](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/wallet-cannot-remove-last.md): You cannot remove your last verified wallet.
- [WALLET\_CHALLENGE\_EXPIRED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/wallet-challenge-expired.md): The challenge has expired. Request a new one.
- [WALLET\_LINK\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/wallet-link-not-found.md): No wallet-link challenge found. Request one first.
- [WALLET\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/wallet-not-found.md): No such wallet is linked to your account.
- [WALLET\_OWNED\_BY\_OTHER](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/identity-and-wallets/wallet-owned-by-other.md): This address is already linked to another account.
- [Platform](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/platform.md)
- [PLATFORM\_FEE\_TOO\_HIGH](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/platform/platform-fee-too-high.md): platformFee plus the Trustless Work fee would exceed 100%.
- [PLATFORM\_ID\_INVALID](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/platform/platform-id-invalid.md): platformId must be a numeric string.
- [PLATFORM\_NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/platform/platform-not-found.md): Platform not found for this account.
- [PLATFORM\_REQUIRED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/platform/platform-required.md): This account has no active platform to scope the recovered key to.
- [Amounts & Validation](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/amounts-and-validation.md)
- [AMOUNT\_INVALID](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/amounts-and-validation/amount-invalid.md): amount is too large to be represented exactly.
- [AMOUNT\_OUT\_OF\_RANGE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/amounts-and-validation/amount-out-of-range.md): amount is larger than the maximum on-chain value (i128).
- [AMOUNT\_PRECISION\_UNSUPPORTED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/amounts-and-validation/amount-precision-unsupported.md): An amount has more decimal places than the asset supports.
- [TRUSTLINE\_DECIMALS\_UNSUPPORTED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/amounts-and-validation/trustline-decimals-unsupported.md): The asset's declared decimals are outside the supported \[0, 18] range.
- [Generic HTTP](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http.md)
- [BAD\_REQUEST](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/bad-request.md): The request body or parameters failed basic validation before reaching domain logic.
- [CONFLICT](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/conflict.md): The request conflicts with current state.
- [FORBIDDEN](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/forbidden.md): The credential lacks permission at the transport level.
- [HTTP\_ERROR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/http-error.md): A non-standard HTTP error status was produced.
- [INTERNAL\_ERROR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/internal-error.md): An unexpected server error occurred.
- [INVALID\_CURSOR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/invalid-cursor.md): Malformed pagination cursor.
- [NOT\_FOUND](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/not-found.md): No route or resource matches the URL.
- [SERVICE\_UNAVAILABLE](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/service-unavailable.md): A dependency (database, RPC) is temporarily unavailable.
- [TOO\_MANY\_REQUESTS](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/too-many-requests.md): You exceeded the rate limit.
- [UNAUTHORIZED](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/unauthorized.md): Authentication is required or failed at the transport level.
- [VALIDATION\_ERROR](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/validation-error.md): The request body failed validation.
- [QUERY\_TOO\_COMPLEX](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/errors/generic-http/query-too-complex.md): The GraphQL query exceeds the complexity budget.
- [Single Release Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy.md): One escrow, one settlement — the full amount releases at once when the work is approved.
- [Deploy](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/initialize-escrow.md): Deploy the escrow contract and define the escrow properties.
- [Fund Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/fund-escrow.md): Deposit funds into a deployed escrow, locking them until the agreed conditions are met.
- [Approve Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/change-milestone-flag.md): Approve one or many milestones in a single transaction, signed by an approver.
- [Change Milestone Status](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/change-milestone-status.md): Update a milestone's status and attach evidence, signed by a service provider.
- [Release Funds](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/release-funds.md): Release the escrow funds to the receiver, signed by a release signer.
- [Withdraw Remaining Funds](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/withdraw-remaining-funds.md): Recover funds left in the escrow after settlement or resolution.
- [Dispute Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/change-dispute-flag.md): Open a dispute on the escrow, freezing release until the dispute resolver rules.
- [Resolve Dispute](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/resolving-disputes.md): Resolve an open dispute and distribute the funds, signed by a dispute resolver.
- [Update Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/update-escrow-properties.md): Replace the on-chain escrow properties, signed by the escrow admin.
- [Manage Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/manage-milestones.md): Add new milestones and/or edit existing milestone descriptions in one transaction, signed by the escrow admin.
- [Approve and Release Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/approve-and-release-milestones.md): Approve milestones and release the escrow in a single atomic transaction.
- [Extend TTL](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy/extend-ttl.md): Extend the escrow contract storage TTL before it expires, signed by the escrow admin.
- [Multi Release Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1.md): One escrow, many payouts — each milestone carries its own amount and settles independently.
- [Deploy](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/initialize-escrow.md): Deploy the multi-release escrow contract and define its milestone payouts.
- [Fund Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/fund-escrow.md): Deposit funds into a deployed multi-release escrow, locking them until each milestone settles.
- [Approve Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/change-milestone-flag.md): Approve one or more milestones in a single batch transaction, signed by an approver.
- [Change Milestone Status](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/change-milestone-status.md): Update the status (and optionally evidence) of one or more milestones, signed by a service provider.
- [Release Milestone Funds](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/release-funds.md): Release the funds of one or more approved milestones, signed by a release signer.
- [Withdraw Remaining Funds](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/withdraw-remaining-funds.md): Sweep the leftover balance once every milestone has been settled.
- [Dispute Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/change-dispute-flag.md): Put one or more milestones in dispute, freezing their release until resolution.
- [Resolve Dispute](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/resolving-disputes.md): Resolve the active milestone disputes and distribute their funds, signed by a dispute resolver.
- [Update Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/update-escrow-properties.md): Replace the escrow-level properties, signed by the escrow admin. Per-milestone state is preserved.
- [Manage Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/manage-milestones.md): Add new milestones and/or edit existing milestone descriptions and amounts, signed by the escrow admin.
- [Approve and Release Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/approve-and-release-milestones.md): Approve milestones and release their funds in a single atomic transaction.
- [Extend TTL](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/deploy-1/extend-ttl.md): Extend the escrow contract storage TTL before it expires, signed by the escrow admin.
- [Stellar](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/stellar.md): These endpoints provide a way to receive tokens through Trustline and send any transactions to the Stellar Blockchain.
- [Send Transaction](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/stellar/send-transaction.md): Most Trustless Work endpoints return an unsigned transaction in XDR format. This endpoint is used to sign such unsigned transactions and send them to the Stellar network.
- [Escrow Information](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information.md): The read endpoints: list, detail, events, milestones, financial and GraphQL.
- [List Escrows](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/list-escrows.md): List escrows with filters and keyset pagination via GET /escrows.
- [Get Escrow Events](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/get-escrow-events.md): Page an escrow event timeline.
- [Get Escrow Milestones](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/get-escrow-milestones.md): Read the milestones of one escrow or a batch.
- [Get Escrows Financial](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/get-multiple-escrow-balance.md): Balances, deposits, releases and fees for up to 50 escrows via GET /escrows/financial.
- [Get Escrows Details](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/get-escrow-by-contract-ids.md): Batch-read the full state of up to 50 escrows via GET /escrows/details.
- [Get Escrow](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/get-escrow.md): Read an escrow state directly from the contract (authoritative).
- [Get Escrow Balances](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/escrow-information/get-escrow-balances.md): Read token balances of up to 20 escrows directly from the chain.
- [GraphQL](https://docs.trustlesswork.com/trustless-work/v2-en/api-rest/graphql.md): Read the same escrow data with field selection over a single POST endpoint.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.trustlesswork.com/trustless-work/v2-en/api-rest.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
