Tidepooltestnet

Submit a signed intent

POST /v0/submit-intent · 1Click-compatible

POST/v0/submit-intent

Send the signed intent from /v0/generate-intent as signedData. The request below is the real, correctly signed intent for the quote in the generate-intent example. The throwaway signer holds no tokens, so the verifier rejected it: that is the real 400. The 200 body is the spec's example, because producing a real one would mean transferring funds from a funded account (not done for these docs); it has the spec's fields intentHash and correlationId; Tidepool also adds tidepool.txHash and tidepool.explorerUrl (the relayed verifier transaction) to a successful response.

Submits a signed intent to execute. After generating an intent for a quote or limit order via /generate-intent and having the user sign it with their wallet, submit the signed intent through this endpoint. The system validates the signature, processes the intent, and returns the intent hash upon successful submission. Request Type Variants: - swap_transfer: Submit a signed swap intent (requires signedData object) Tidepool: relays the signed intent to the testnet verifier with execute_intents. The response adds tidepool.txHash and tidepool.explorerUrl.

Operation id: submitIntent · Auth: optional (X-API-Key or Authorization: Bearer, any value)

Request

curl -X POST "https://www.usetidepool.tech/v0/submit-intent" \
  -H 'content-type: application/json' \
  -d '{
  "type": "swap_transfer",
  "signedData": {
    "standard": "raw_ed25519",
    "payload": "{\"signer_id\":\"9cf39ad040a13205c3ab109a8566fd779394a548f76b1aed5107efcdfe6c7ceb\",\"verifying_contract\":\"verifier.tidepool-sandbox.testnet\",\"deadline\":\"2026-10-30T16:46:46.836Z\",\"nonce\":\"zzaNW9Xepvi5ae6mv24WI+LwgljdXAm7/aV4EbWp738=\",\"intents\":[{\"intent\":\"transfer\",\"receiver_id\":\"54e8db801fab4ec416719b8b3044c21bacb4652c698ad4c5846086e5cf27b3a4\",\"tokens\":{\"nep141:usdc.tidepool-sandbox.testnet\":\"5000000\"}}]}",
    "public_key": "ed25519:BZg3g99ye1xAzqJBHGusEk7Uv24gxY3UV95Jzf2aWuiS",
    "signature": "ed25519:sQwAfReCF77FguZu2LxNPP3KXPJ88DUPhbU1vwWUBprvmkGzkeJfSKmNfa8Gw7fJk3d5mzvFqrMpPEdG7UeTNNN"
  }
}'

Body

FieldTypeRequiredDescription
type"swap_transfer"yesThe type of intent action
signedDataMultiPayloadyes
Variant 1 of 8
signedData.payloadobjectyesSee NEP-413
signedData.payload.callbackUrlstring
signedData.payload.messagestringyes
signedData.payload.noncestringyesEncoding: base64
signedData.payload.recipientstringyes
signedData.public_keystringyesEncoding: base58
signedData.signaturestringyesEncoding: base58
signedData.standard"nep413"yes
Variant 2 of 8
signedData.payloadstringyesSee ERC-191
signedData.signaturestringyesThere is no public key member because the public key can be recovered via ecrecover() knowing the data and the signature. Encoding: base58
signedData.standard"erc191"yes
Variant 3 of 8
signedData.payloadstringyesSee TIP-191
signedData.signaturestringyesThere is no public key member because the public key can be recovered via ecrecover() knowing the data and the signature. Encoding: base58
signedData.standard"tip191"yes
Variant 4 of 8
signedData.payloadstringyes
signedData.public_keystringyesEncoding: base58
signedData.signaturestringyesEncoding: base58
signedData.standard"raw_ed25519"yes
Variant 5 of 8
signedData.authenticator_datastringyesBase64Url-encoded authenticatorData. Encoding: base64
signedData.client_data_jsonstringyesSerialized clientDataJSON
signedData.payloadstringyes
signedData.standard"webauthn"yes
signedData.public_keystringyesEncoding: base58
signedData.signaturestringyesEncoding: base58
Variant 6 of 8
signedData.authenticator_datastringyesBase64Url-encoded authenticatorData. Encoding: base64
signedData.client_data_jsonstringyesSerialized clientDataJSON
signedData.payloadstringyes
signedData.standard"webauthn"yes
signedData.public_keystringyesEncoding: base58
signedData.signaturestringyesEncoding: base58
Variant 7 of 8
signedData.addressobjectyesWallet address in either Raw representation or user-friendly format
signedData.domainstringyesdApp domain
signedData.payloadobjectyesSee <https://docs.tonconsole.com/academy/sign-data#choosing-the-right-format&#62;
signedData.payload.textstringyes
signedData.payload.type"text"yes
signedData.public_keystringyesEncoding: base58
signedData.signaturestringyesEncoding: base58
signedData.standard"ton_connect"yes
signedData.timestampobjectyesUNIX timestamp (in seconds or RFC3339) at the time of singing
Variant 1 of 2
Variant 2 of 2
Variant 8 of 8
signedData.payloadstringyes
signedData.public_keystringyesEncoding: base58
signedData.signaturestringyesEncoding: base58
signedData.standard"sep53"yes

Responses

200 Successfully submitted intent

{
  "intentHash": "44XpLRAuZKoVGs9T4qbSNv33MDKMePPAibA52geVLWFw",
  "correlationId": "550e8400-e29b-41d4-a716-446655440000"
}

400 Bad Request - Invalid signature or intent data

{
  "message": "Verifier rejected the signed intent: Smart contract panicked: insufficient balance or overflow; Smart contract panicked: insufficient balance or overflow"
}

401 Unauthorized - API key or JWT token is invalid

Tidepool does not return this: /v0/submit-intent takes no authentication.

Community-built · not affiliated with NEAR. Tidepool is community-built and not affiliated with NEAR, Defuse or 1Click. Testnet only; test tokens have no value. Built by @realchriswilder.

On this page