Internal Transfer
Changed onSubmit a signed internal ledger transfer between two exchange accounts. Sign with the source account owner or a non-expired trading key registered to the source account. Trading-key signatures require both accounts to belong to the same nonzero, exchange-managed account group. Owner signatures remain valid regardless of group membership.
Expired trading keys receive proxy_expired; other authorization failures receive signer_does_not_match_account. An unknown destination receives 400 destination account not found.
A 503 does not prove that the transfer was not submitted. Retry with backoff, honoring Retry-After when present, and resend the exact original signed request. Do not create a fresh signature, salt, or timestamp for the retry: it would identify a separate transfer. A signature_already_used rejection does not confirm whether the original transfer completed.
Request
- Base URL: https://api.perpetuals.polymarket.com
- URL: https://api.perpetuals.polymarket.com/v1/account/internal-transfer
- Auth: none required
Request body
Example request
{
"op": {
"args": {
"account": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
"token": "0xaf88d065e77c8cc2239327c5edb3a432268e5831",
"amount": "100",
"to": "0x1234567890abcdef1234567890abcdef12345678"
}
},
"sig": "0x1234567890...",
"salt": 1234567890,
"ts": 1767225600000,
"label": "trading-bot"
}Response
The accepted transfer, carrying its transfer_id.
Changes
- breaking
added
subschema #2to the response bodyoneOflist for the response status - breaking
the response's body type changed from
objectto no type for status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - breaking
removed the required property
from the response with the status - info
added the non-success response with the status
- breaking