[{"data":1,"prerenderedAt":667},["ShallowReactive",2],{"docs-nav:1.0.0":3,"docs:\u002Fdocs\u002Fapi-summary":91},[4,10,14,18,22,26,30,34,38,44,48,52,55,58,61,64,67,70,73,76,80,84,87],{"path":5,"title":6,"section":7,"order":8,"generated":9},"\u002Fdocs\u002Faccount-groups","Account groups","overview",15,false,{"path":11,"title":12,"section":7,"order":13,"generated":9},"\u002Fdocs\u002Fapi-keys","API keys",20,{"path":15,"title":16,"section":7,"order":17,"generated":9},"\u002Fdocs\u002Fapi-summary","What the API covers",5,{"path":19,"title":20,"section":7,"order":21,"generated":9},"\u002Fdocs\u002Fauthentication","Authentication",25,{"path":23,"title":24,"section":7,"order":25,"generated":9},"\u002Fdocs\u002Fenvironments","Environments",10,{"path":27,"title":28,"section":7,"order":29,"generated":9},"\u002Fdocs","API documentation",1,{"path":31,"title":32,"section":7,"order":33,"generated":9},"\u002Fdocs\u002Fmaking-requests","Making requests",30,{"path":35,"title":36,"section":7,"order":37,"generated":9},"\u002Fdocs\u002Fsigned-intent","Signed order intent",27,{"path":39,"title":40,"section":41,"order":42,"generated":43},"\u002Fdocs\u002Freference\u002Faccount-groups","Reading account groups","websocket",3,true,{"path":45,"title":46,"section":47,"order":17,"generated":43},"\u002Fdocs\u002Freference\u002Favailable-instruments","Available instruments","rest",{"path":49,"title":50,"section":47,"order":51,"generated":43},"\u002Fdocs\u002Freference\u002Fbalances","Balances",8,{"path":53,"title":54,"section":47,"order":21,"generated":43},"\u002Fdocs\u002Freference\u002Fclient-withdrawals","Withdrawals",{"path":56,"title":57,"section":41,"order":33,"generated":43},"\u002Fdocs\u002Freference\u002Ferror-codes","Trade error codes",{"path":59,"title":60,"section":47,"order":21,"generated":43},"\u002Fdocs\u002Freference\u002Forder-lookup","Reading orders back",{"path":62,"title":63,"section":41,"order":25,"generated":43},"\u002Fdocs\u002Freference\u002Forder-sessions","Order sessions and recovery",{"path":65,"title":66,"section":41,"order":13,"generated":43},"\u002Fdocs\u002Freference\u002Forder-status","Order status",{"path":68,"title":69,"section":41,"order":17,"generated":43},"\u002Fdocs\u002Freference\u002Fprice-channel","Price channel",{"path":71,"title":72,"section":47,"order":13,"generated":43},"\u002Fdocs\u002Freference\u002Fsettlement-parties","Settlement parties",{"path":74,"title":75,"section":47,"order":8,"generated":43},"\u002Fdocs\u002Freference\u002Ftrades","Trades",{"path":77,"title":78,"section":47,"order":79,"generated":43},"\u002Fdocs\u002Freference\u002Ftrading-limit","Trading limit",9,{"path":81,"title":82,"section":83,"order":33,"generated":43},"\u002Fdocs\u002Freference\u002Ftransaction-codes","Transaction code tables","shared",{"path":85,"title":86,"section":47,"order":25,"generated":43},"\u002Fdocs\u002Freference\u002Ftransactions","Transactions",{"path":88,"title":89,"section":47,"order":90,"generated":43},"\u002Fdocs\u002Freference\u002Ftransfers","Internal transfers",7,{"page":92,"elsewhere":9},{"path":15,"title":16,"description":93,"body":94,"examples":666},"Which of the three interfaces to reach for, and the technical limits on each.",{"type":95,"value":96,"toc":655},"minimark",[97,101,201,208,211,266,273,278,321,335,339,358,361,368,416,431,442,445,448,474,496,499,532,535,546,550,563,579,581,629,632,636,639,651],[98,99,100],"p",{},"There are three interfaces, and they divide cleanly by whether you are asking a\nquestion, acting on a price, or waiting to be told something happened.",[102,103,104,117],"table",{},[105,106,107],"thead",{},[108,109,110,114],"tr",{},[111,112,113],"th",{},"You want to",[111,115,116],{},"Use",[118,119,120,129,136,143,151,158,165,172,179,186,193],"tbody",{},[108,121,122,126],{},[123,124,125],"td",{},"Stream live prices",[123,127,128],{},"WebSocket",[108,130,131,134],{},[123,132,133],{},"Execute against a streamed price",[123,135,128],{},[108,137,138,141],{},[123,139,140],{},"Name a beneficiary for delivery on execution",[123,142,128],{},[108,144,145,148],{},[123,146,147],{},"Query account balances",[123,149,150],{},"REST",[108,152,153,156],{},[123,154,155],{},"Retrieve trade or transaction history",[123,157,150],{},[108,159,160,163],{},[123,161,162],{},"Query your credit limit and how much of it is used",[123,164,150],{},[108,166,167,170],{},[123,168,169],{},"Retrieve settlement parties, their bank accounts and wallets",[123,171,150],{},[108,173,174,177],{},[123,175,176],{},"Move funds between your own accounts",[123,178,150],{},[108,180,181,184],{},[123,182,183],{},"Request a withdrawal, or cancel one you have raised",[123,185,150],{},[108,187,188,191],{},[123,189,190],{},"List tradable instruments",[123,192,150],{},[108,194,195,198],{},[123,196,197],{},"Be notified of a trade, deposit, withdrawal or settlement",[123,199,200],{},"Webhook",[98,202,203,204],{},"The short version: ",[205,206,207],"strong",{},"REST for state, WebSocket for prices and execution,\nwebhooks for what happened while you were not looking.",[209,210,150],"h2",{"id":47},[102,212,213,221],{},[105,214,215],{},[108,216,217,219],{},[111,218],{},[111,220],{},[118,222,223,231,238,246,254],{},[108,224,225,228],{},[123,226,227],{},"Protocol",[123,229,230],{},"HTTPS",[108,232,233,235],{},[123,234,20],{},[123,236,237],{},"API key and HMAC signature on every request",[108,239,240,243],{},[123,241,242],{},"Format",[123,244,245],{},"JSON, both directions",[108,247,248,251],{},[123,249,250],{},"Rate limit",[123,252,253],{},"30 requests per second per IP",[108,255,256,259],{},[123,257,258],{},"Versioning",[123,260,261,262],{},"In the path — ",[263,264,265],"code",{},"\u002Fapi\u002F3\u002F",[98,267,268,269,272],{},"Almost everything is a ",[263,270,271],{},"POST",", including reads, because the signature is\ncomputed over the request body.",[274,275,277],"h3",{"id":276},"positions-and-history","Positions and history",[279,280,285],"pre",{"className":281,"code":282,"language":283,"meta":284,"style":284},"language-http shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POST \u002Fapi\u002F3\u002Faccount           # balances, per account and account group\nPOST \u002Fapi\u002F3\u002Fuser\u002Flimit        # credit limit, exposure and utilisation\nPOST \u002Fapi\u002F3\u002Ftrades            # executed trades\nPOST \u002Fapi\u002F3\u002Ftransaction\u002Flist  # transactions\n","http","",[263,286,287,298,306,313],{"__ignoreMap":284},[288,289,291,294],"span",{"class":290,"line":29},"line",[288,292,271],{"class":293},"s7zQu",[288,295,297],{"class":296},"sTEyZ"," \u002Fapi\u002F3\u002Faccount           # balances, per account and account group\n",[288,299,301,303],{"class":290,"line":300},2,[288,302,271],{"class":293},[288,304,305],{"class":296}," \u002Fapi\u002F3\u002Fuser\u002Flimit        # credit limit, exposure and utilisation\n",[288,307,308,310],{"class":290,"line":42},[288,309,271],{"class":293},[288,311,312],{"class":296}," \u002Fapi\u002F3\u002Ftrades            # executed trades\n",[288,314,316,318],{"class":290,"line":315},4,[288,317,271],{"class":293},[288,319,320],{"class":296}," \u002Fapi\u002F3\u002Ftransaction\u002Flist  # transactions\n",[98,322,323,326,327,330,331,334],{},[205,324,325],{},"Trades return one record per trade; transactions return one record per leg.","\nA single trade therefore appears once under ",[263,328,329],{},"trades"," and at least twice under\n",[263,332,333],{},"transaction\u002Flist",", as a debit and a credit. Reconcile against transactions;\nreport against trades.",[274,336,338],{"id":337},"moving-your-own-funds","Moving your own funds",[279,340,342],{"className":281,"code":341,"language":283,"meta":284,"style":284},"POST \u002Fapi\u002F3\u002Ftransfer          # move funds between your accounts\nPOST \u002Fapi\u002F3\u002Ftransfer\u002Flist     # history of those movements\n",[263,343,344,351],{"__ignoreMap":284},[288,345,346,348],{"class":290,"line":29},[288,347,271],{"class":293},[288,349,350],{"class":296}," \u002Fapi\u002F3\u002Ftransfer          # move funds between your accounts\n",[288,352,353,355],{"class":290,"line":300},[288,354,271],{"class":293},[288,356,357],{"class":296}," \u002Fapi\u002F3\u002Ftransfer\u002Flist     # history of those movements\n",[274,359,54],{"id":360},"withdrawals",[98,362,363,364,367],{},"Withdrawals are ",[205,365,366],{},"requests",": you submit one, it is reviewed, and you can list\nor cancel it while it is outstanding. Crypto and fiat are separate endpoints\nthroughout.",[279,369,371],{"className":281,"code":370,"language":283,"meta":284,"style":284},"POST \u002Fapi\u002F3\u002Fwithdrawal\u002Fcrypto              # request a digital-asset withdrawal\nPOST \u002Fapi\u002F3\u002Fwithdrawal\u002Ffiat                # request a fiat withdrawal\nPOST \u002Fapi\u002F3\u002Fwithdrawal\u002Fcrypto\u002Flist         # outstanding and past crypto requests\nPOST \u002Fapi\u002F3\u002Fwithdrawal\u002Ffiat\u002Flist           # outstanding and past fiat requests\nPOST \u002Fapi\u002F3\u002Fwithdrawal\u002Fcrypto\u002F{uuid}\u002Fcancel\nPOST \u002Fapi\u002F3\u002Fwithdrawal\u002Ffiat\u002F{uuid}\u002Fcancel\n",[263,372,373,380,387,394,401,408],{"__ignoreMap":284},[288,374,375,377],{"class":290,"line":29},[288,376,271],{"class":293},[288,378,379],{"class":296}," \u002Fapi\u002F3\u002Fwithdrawal\u002Fcrypto              # request a digital-asset withdrawal\n",[288,381,382,384],{"class":290,"line":300},[288,383,271],{"class":293},[288,385,386],{"class":296}," \u002Fapi\u002F3\u002Fwithdrawal\u002Ffiat                # request a fiat withdrawal\n",[288,388,389,391],{"class":290,"line":42},[288,390,271],{"class":293},[288,392,393],{"class":296}," \u002Fapi\u002F3\u002Fwithdrawal\u002Fcrypto\u002Flist         # outstanding and past crypto requests\n",[288,395,396,398],{"class":290,"line":315},[288,397,271],{"class":293},[288,399,400],{"class":296}," \u002Fapi\u002F3\u002Fwithdrawal\u002Ffiat\u002Flist           # outstanding and past fiat requests\n",[288,402,403,405],{"class":290,"line":17},[288,404,271],{"class":293},[288,406,407],{"class":296}," \u002Fapi\u002F3\u002Fwithdrawal\u002Fcrypto\u002F{uuid}\u002Fcancel\n",[288,409,411,413],{"class":290,"line":410},6,[288,412,271],{"class":293},[288,414,415],{"class":296}," \u002Fapi\u002F3\u002Fwithdrawal\u002Ffiat\u002F{uuid}\u002Fcancel\n",[98,417,418,419,422,423,426,427,430],{},"A request names an account group, a currency, an amount, an optional comment,\nand a ",[205,420,421],{},"destination held on file"," — ",[263,424,425],{},"walletParticipantUuid"," for crypto,\n",[263,428,429],{},"bankAccountUuid"," for fiat.",[98,432,433,434,437,438,441],{},"You do not send a raw wallet address or account number. The destination is one\nof the wallets or bank accounts already registered against a settlement party,\nwhich is why those records carry ",[263,435,436],{},"whitelisted"," and ",[263,439,440],{},"verified"," per address: a\ndestination that is not in good standing cannot be the target of a request.",[274,443,72],{"id":444},"settlement-parties",[98,446,447],{},"Three endpoints, one shape. They return the same record and differ only in\nwhich party they describe:",[279,449,451],{"className":281,"code":450,"language":283,"meta":284,"style":284},"POST \u002Fapi\u002F3\u002Foriginator        # you, as onboarded\nPOST \u002Fapi\u002F3\u002Fbeneficiaries     # who may receive from you\nPOST \u002Fapi\u002F3\u002Fsenders           # who may deliver on your behalf\n",[263,452,453,460,467],{"__ignoreMap":284},[288,454,455,457],{"class":290,"line":29},[288,456,271],{"class":293},[288,458,459],{"class":296}," \u002Fapi\u002F3\u002Foriginator        # you, as onboarded\n",[288,461,462,464],{"class":290,"line":300},[288,463,271],{"class":293},[288,465,466],{"class":296}," \u002Fapi\u002F3\u002Fbeneficiaries     # who may receive from you\n",[288,468,469,471],{"class":290,"line":42},[288,470,271],{"class":293},[288,472,473],{"class":296}," \u002Fapi\u002F3\u002Fsenders           # who may deliver on your behalf\n",[475,476,477,484,490],"ul",{},[478,479,480,483],"li",{},[205,481,482],{},"Originator"," is your own side of the relationship.",[478,485,486,489],{},[205,487,488],{},"Beneficiaries"," receive from your trades.",[478,491,492,495],{},[205,493,494],{},"Senders"," — collection accounts — deliver to Zodia Markets on your behalf,\nwith the contra-currency settling to your named account.",[98,497,498],{},"Each record carries both settlement rails:",[102,500,501,510],{},[105,502,503],{},[108,504,505,507],{},[111,506],{},[111,508,509],{},"Includes",[118,511,512,522],{},[108,513,514,519],{},[123,515,516],{},[263,517,518],{},"bankAccounts",[123,520,521],{},"Bank and branch name, account number, IBAN, SWIFT\u002FBIC, currency, holder name, bank address, memo, and intermediary bank details",[108,523,524,529],{},[123,525,526],{},[263,527,528],{},"wallets",[123,530,531],{},"Blockchain, asset, address, alias, type, memo, VASP, execution provider, and which is the default",[98,533,534],{},"Alongside those sit the party's own details — entity or individual, contact\ndetails, identification documents, associated persons, and whether the party is\na VASP.",[98,536,537,540,541,437,543,545],{},[263,538,539],{},"enabled",", ",[263,542,440],{},[263,544,436],{}," appear at both levels: on the party and\non each individual account or address. A party can be verified while a\nparticular wallet is not whitelisted, so check the one you intend to settle to\nrather than the party alone — that is the difference between finding out now\nand finding out at settlement.",[274,547,549],{"id":548},"instruments","Instruments",[279,551,553],{"className":281,"code":552,"language":283,"meta":284,"style":284},"GET \u002Fzm\u002Frest\u002Favailable-instruments\n",[263,554,555],{"__ignoreMap":284},[288,556,557,560],{"class":290,"line":29},[288,558,559],{"class":293},"GET",[288,561,562],{"class":296}," \u002Fzm\u002Frest\u002Favailable-instruments\n",[98,564,565,566,422,569,572,573,575,576,578],{},"The tradable set, as ",[263,567,568],{},"\u003Cbase>.\u003Cquote>",[263,570,571],{},"BTC.USD",". Note it is a ",[263,574,559],{},", and that\nit sits outside ",[263,577,265],{},".",[209,580,128],{"id":41},[102,582,583,591],{},[105,584,585],{},[108,586,587,589],{},[111,588],{},[111,590],{},[118,592,593,600,607,614,621],{},[108,594,595,597],{},[123,596,227],{},[123,598,599],{},"WSS",[108,601,602,604],{},[123,603,20],{},[123,605,606],{},"A token obtained over REST, then passed on connect",[108,608,609,611],{},[123,610,242],{},[123,612,613],{},"JSON messages",[108,615,616,618],{},[123,617,250],{},[123,619,620],{},"30 messages per second per account",[108,622,623,626],{},[123,624,625],{},"Update rate",[123,627,628],{},"4 updates per second per connection",[98,630,631],{},"Connecting is a two-step exchange rather than a direct handshake: authenticate\nover REST to get a token, then open the socket with it. Long-lived connections\nrefresh the token periodically.",[209,633,635],{"id":634},"webhooks","Webhooks",[98,637,638],{},"Registered against an API key, and delivered as transactions reach a terminal\nstate — trade legs, and crypto and fiat deposits and withdrawals.",[98,640,641,642,646,647,650],{},"A webhook tells you ",[643,644,645],"em",{},"that"," something happened. Reconciling ",[643,648,649],{},"what"," it was is a\nREST call, and the codes on the payload are the same ones the transaction\nendpoints use.",[652,653,654],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":284,"searchDepth":42,"depth":42,"links":656},[657,664,665],{"id":47,"depth":300,"text":150,"children":658},[659,660,661,662,663],{"id":276,"depth":42,"text":277},{"id":337,"depth":42,"text":338},{"id":360,"depth":42,"text":54},{"id":444,"depth":42,"text":72},{"id":548,"depth":42,"text":549},{"id":41,"depth":300,"text":128},{"id":634,"depth":300,"text":635},[],1787826505452]