Ji bo pêşdebiran

Belgeyên API

Hesabê xwe ji bernameyên xwe bixwîne û li bazarên spot bazirganiyê bike. Ev rûpel mifteyên API, îmzekirina daxwazan, endpointên ku mifteyek dikare bang bike û awayê ku daneyên hesabê te pê têne navnîşankirin rave dike.

Li ser vê rûpelê
Mifteyên API ji bo bernameyên ku li ser serverên te dixebitin in. Sir her daxwazê îmze dike, ji ber vê yekê wê tu carî nexe nav rûpelek webê, sepaneke mobîlê an depoyeke giştî. Fon tenê bi riya malperê, bi 2FA, ji hesabê te derdikevin: mifteya API bîlançoyan dixwîne û bazirganiyê dike, lê fonan dernaxe.

Nêrînek giştî

API ya Rojbitê REST API ye ku JSON bi kar tîne. Bernameya te her daxwazê bi mifteyeke API îmze dike ku tu li ser malperê diafirînî. Gaveke têketinê tune ye û danişîneke ku pêdivî bi nûkirinê hebe jî tune ye.

Navnîşana bingehîn (Base URL)https://api.rojbit.io

Navnîşana tevahî navnîşana bingehîn e û dû re rêya endpointê ye, û rêya her endpointê bi /api/ dest pê dike. Mînak, lîsteya cotên bazirganiyê ev e: GET https://api.rojbit.io/api/spot/exchange-info

API ji bo bikaranîna server ber bi server e. Ew ji bo malperên din headerên CORS napêşkêş dike, ji ber vê yekê rûpeleke webê di gerokê de nikare wê bi kar bîne. Ji back end a xwe bi kar bîne.

Mifteyên API tenê li ser REST API dixebitin. Streama taybet a WebSocket wan qebûl nake, ji ber vê yekê daxwazên xwe bi endpointên daxwazan bişopîne.

Daxwaz û bersiv JSON in (UTF-8). Gava laşekî dişînî, Content-Type: application/json jî bişîne.

Gava tu daxwazekê datînî, mîqdar û bihaya wê wekî hejmarên JSON têne şandin. Cureyên bersivan tevlihev in: pêkhatin û daxwazên vekirî rêzenivîsên rast vedigerînin, lê bîlançoya spot balance wekî hejmar û locked wekî rêzenivîs vedigerîne. Rêzenivîsan bi cureyê decimal bixwîne, tu carî wekî float.

Afirandin û birêvebirina mifteyên API

Tu mifteyan li ser malperê, di hesabê xwe de diafirînî. Her mifte nav, destûr û lîsteyeke spî ya IP ya bijarte dihewîne.

Afirandina miftekê

  1. Sepana piştrastkirinê (2FA) ji bo hesabê xwe çalak bike. Afirandina miftekê koda wê sepanê dixwaze.
  2. Hesab → Mifteyên API veke û Mifteya API biafirîne hilbijêre.
  3. Navekî bide miftê û destûrên wê hilbijêre. Xwendin bîlanço, daxwaz û dîrokê dihewîne. Bazirganî danîn û betalkirina daxwazên spot zêde dike û her dem Xwendinê jî dihewîne. Vekişandin wekî ne berdest tê nîşandan.
  4. Lîsteyeke spî ya IP zêde bike (pêşniyarkirî): navnîşanên giştî yên serverên ku tu daxwazan ji wan dişînî, bi komayê veqetandî (heta 20 navnîşan). Mifteyeke bi Bazirganî û bê lîsteya spî 90 roj piştî afirandinê diqede. Mifteyên tenê-Xwendinê û mifteyên bi lîsteya spî nediqedin.
  5. Koda sepana xwe ya piştrastkirinê binivîse. Piştî guhertina şîfre, e-name an 2FA, afirandina miftê ji bo demekê radiweste.
  6. Mifte û sirrê kopî bike. Sir carekê tê nîşandan û careke din nayê nîşandan. Heke te winda kir, miftê betal bike û ya nû biafirîne.

Tiştê ku tu distînî

Mifteya API nasnameya giştî ya miftê ye. Bi rjk_live_ dest pê dike û 22 karakter li pey wê tên. Tu wê di headera X-ROJ-APIKEY de dişînî.

Sir bi rjs_live_ dest pê dike û 49 karakter li pey wê tên. Ew tu carî nayê şandin: tu tenê ji bo hesabkirina îmzeyan wê bi kar tînî. Wê wekî şîfreyê biparêze.

Birêvebirina mifteyan

  • Tu dikarî navê miftekê biguherînî. Destûr, lîsteya spî ya IP û dema qedandinê nayên guhertin: mifteyeke nû biafirîne û ya kevin betal bike.
  • Tu dikarî her gav, bê kod, mifteyekê betal bikî. Mifteya betalkirî di daxwaza piştî wê de êdî naxebite.
  • Guhertina şîfre, e-name an 2FA piştî demeke kurt hemû mifteyên te yên heyî betal dike. Piştî guhertinê mifteyên nû biafirîne.
  • Hesabek dikare hejmareke sînorkirî ya mifteyên çalak bihewîne. Rûpela Mifteyên API sînor nîşan dide.

Daxwazên xwe îmze bike

Her daxwazek ji bo endpointeke ku mifteyê dixwaze çar headeran digire. Rojbit îmzeyê bi sira te dîsa hesab dike û heke li hev neyê daxwazê red dike.

Header
Ravekirin
X-ROJ-APIKEY
Mifteya te ya API, nasnameya giştî ya ku bi rjk_ dest pê dike.
X-ROJ-TIMESTAMP
Dema ku te daxwaz îmze kir, bi mîlîçirkan ji Unix epoch ve. Dibe ku ew herî zêde 1 çirke ji saeta me pêştir be û herî zêde bi qasî pencereya wergirtinê kevin be.
X-ROJ-RECV-WINDOW
Daxwaz piştî dema xwe çiqas derbasdar dimîne, bi mîlîçirkan: di GET de 1000 heta 60000, di her rêbazeke din de 1000 heta 5000. Nirxeke li derveyî vê navberê tê redkirin, ne ku were eyarkirin. 5000 nirxeke bingehîn a baş e.
X-ROJ-SIGNATURE
Îmzeya HMAC-SHA256, wekî 64 karakterên hexadecimal (herfên biçûk an mezin).

Headera Authorization bi wan re neşîne: daxwazeke ku her duyan dihewîne bi 400 API_KEY_MALFORMED tê redkirin. X-Device-Id ne pêwîst e.

Rêzenivîsa kanonîk (canonical string)

Îmze HMAC-SHA256 a rêzenivîsa kanonîk e, û hemû rêzenivîsa sirrê (UTF-8, bi pêşgira rjs_ û checksuma wê re) wekî mifte tê bikaranîn. Rêzenivîsa kanonîk heft qadan dihewîne ku bi yek rêza nû (LF) bi hev ve hatine girêdan, û di dawiyê de rêzeke nû tune.

  1. ROJ1nîşana sabît
  2. METHODrêbaza HTTP bi herfên mezin
  3. PATHrêya tam wekî ku tu dişînî, bi /api re, heta ? a yekem, bê decodekirin
  4. QUERYher tişt piştî ? a yekem, tam wekî ku tu dişînî, bê rêzkirin an dîsa encodekirin; heke tune be vala
  5. TIMESTAMPnirxa X-ROJ-TIMESTAMP
  6. RECV_WINDOWnirxa X-ROJ-RECV-WINDOW
  7. BODY_SHA256hash a SHA-256 ya laşê xav ê daxwazê, bi hexadecimal a herfên biçûk; ji bo daxwaza bê laş, hash a rêzenivîsa vala

Tiştên ku divê rast bin

  • Laşê JSON tenê carekê serialize bike, hash a wan baytan çêke û heman baytan bişîne. Tenê application/json bi UTF-8 tê qebûlkirin; her laşekî din tê redkirin.
  • Saeta xwe rast bihêle. Demek li derveyî pencereyê 401 API_KEY_TIMESTAMP_INVALID distîne, û bersiv server_time_ms dihewîne da ku tu cudahiyê rast bikî.
  • Ji bo ceribandina dîsa, dîsa îmze bike. Daxwazeke îmzekirî ya ku ne GET e û bi heman îmzeyê dîsa tê şandin bi 401 API_KEY_REPLAYED tê redkirin. Ev ceribandina te ya xwe jî di nav xwe de dihewîne piştî timeoutekê, ji ber ku dibe ku daxwaza yekem hatibe sepandin. Pêşî daxwazên vekirî û pêkhatinên xwe bixwîne, paşê daxwazeke nû bi demeke nû îmze bike. Daxwazên GET qet ji bo dubarebûnê nayên kontrolkirin.
  • Mifteya şaş, sir an îmzeya şaş, mifteya betalkirî an qediyayî, û laşekî ku nikare were îmzekirin, hemû bi mebest heman bersiva 401 API_KEY_INVALID distînin. Heke te ev stand, mifte, sir û baytên ku te îmze kirine kontrol bike.

Mînak

Mînaka çareserkirî bi mifte û sira sexte, ji bo kontrolkirina koda te ya îmzekirinê
Key:        rjk_live_xxxxxxxxxxxxxxxxxxxxxx
Secret:     rjs_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Request:    GET /api/spot/open-orders?symbol=BTCUSDT (no body)
Timestamp:  1792000000000
Window:     5000

Canonical string (seven lines, no line feed after the last):
ROJ1
GET
/api/spot/open-orders
symbol=BTCUSDT
1792000000000
5000
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

X-ROJ-SIGNATURE:
88899c6f71568fdc593230e617c3f28b84091ce9d22e71961690db1348c9bd70
Daxwazeke GET ya îmzekirî bi curl û openssl
KEY="rjk_live_…"
SECRET="rjs_live_…"

TARGET="/api/spot/open-orders?symbol=BTCUSDT"   # path and query, exactly as you send them
TS=$(( $(date +%s) * 1000 ))                      # milliseconds since the epoch
RW=5000

REQ_PATH=$(printf '%s' "$TARGET" | cut -d'?' -f1)    # up to the first ?
QUERY=$(printf '%s' "$TARGET" | cut -s -d'?' -f2-)   # after the first ?, empty if none
BODY_SHA=$(printf '' | openssl dgst -sha256 | awk '{print $NF}')   # no body

CANON=$(printf 'ROJ1\nGET\n%s\n%s\n%s\n%s\n%s' "$REQ_PATH" "$QUERY" "$TS" "$RW" "$BODY_SHA")
SIG=$(printf '%s' "$CANON" | openssl dgst -sha256 -hmac "$SECRET" | awk '{print $NF}')

curl -sS "https://api.rojbit.io$TARGET" \
  -H "X-ROJ-APIKEY: $KEY" \
  -H "X-ROJ-TIMESTAMP: $TS" \
  -H "X-ROJ-RECV-WINDOW: $RW" \
  -H "X-ROJ-SIGNATURE: $SIG"
Node.js: GET û POST a îmzekirî
// roj.mjs · Node.js 18 or later
// run: ROJ_API_KEY=… ROJ_API_SECRET=… node roj.mjs
import { createHash, createHmac } from "node:crypto";

const BASE = "https://api.rojbit.io";
const API_KEY = process.env.ROJ_API_KEY; // rjk_live_…
const API_SECRET = process.env.ROJ_API_SECRET; // rjs_live_…

async function call(method, target, body) {
  const m = method.toUpperCase();
  const raw = body === undefined ? "" : JSON.stringify(body); // serialize once
  const q = target.indexOf("?");
  const path = q === -1 ? target : target.slice(0, q);
  const query = q === -1 ? "" : target.slice(q + 1);
  const timestamp = String(Date.now());
  const recvWindow = "5000";
  const bodyHash = createHash("sha256").update(raw, "utf8").digest("hex");
  const canonical = ["ROJ1", m, path, query, timestamp, recvWindow, bodyHash].join("\n");
  const signature = createHmac("sha256", API_SECRET).update(canonical, "utf8").digest("hex");

  const res = await fetch(BASE + target, {
    method: m,
    headers: {
      "X-ROJ-APIKEY": API_KEY,
      "X-ROJ-TIMESTAMP": timestamp,
      "X-ROJ-RECV-WINDOW": recvWindow,
      "X-ROJ-SIGNATURE": signature,
      ...(raw && { "Content-Type": "application/json" }),
    },
    body: raw || undefined, // the same bytes that were hashed
  });
  console.log("weight", res.headers.get("x-roj-used-weight-1m"), "of", res.headers.get("x-roj-weight-limit-1m"));
  return res.json();
}

console.log(await call("GET", "/api/wallets/spot"));
console.log(
  await call("POST", "/api/spot/limit", { symbol: "BTCUSDT", side: "buy", baseQty: 0.002, limitPrice: 50000 }),
);

Endpoint

Ev endpointên ku mifteyeke API dikare bang bike û yên giştî yên ku mifte naxwazin in. Rêya her yekê piştî navnîşana bingehîn https://api.rojbit.io bi /api dest pê dike.

Giştî: mifte ne pêwîst e

Ev ne mifte û ne îmze naxwazin.

Rêbaz
Rê
Çi dike
GET
/api/spot/exchange-info
Cotên bazirganiyê û qaîdeyên wan (mîqdara herî kêm a daxwazê, fîlterên bihayê û mîqdarê), û gelo bazirganiya spot çalak e. Fîltera bijarte ya symbol.
GET
/api/fees/schedule
Tabloya giştî ya heqan: rêjeyên çêker (maker) û wergir (taker) ji bo her astekê heqê.
GET
/api/status
Rewşa platformê: pêkhate, bûyer û çaksaziyên ku li rûpela rewşê têne nîşandan. Herî zêde nêzîkî carekê di deqeyekê de bipirse.

Destûra Xwendinê

Ev mifteyeke bi Xwendinê dixwazin, ku scopeyên spot.read, wallet.read û account.read dihewîne.

Rêbaz
Rê
Çi dike
GET
/api/wallets/spot
Bîlançoyên te yên spot, ji bo her hebûnê yek rêz: balance ji bo bazirganiyê berdest e û locked di daxwazên vekirî de tê girtin.
GET
/api/wallets/funding
Bîlançoyên cizdanê funding, ji bo her hebûnê yek rêz.
GET
/api/spot/open-orders
Daxwazên te yên spot ên vekirî (li bendê). Fîltera bijarte ya symbol.
GET
/api/spot/orders/{clientOrderId}
Rewşa daxwazekê. Di bersivê de kind yek ji van e: resting, fill, rejected an pending.
GET
/api/spot/fills
Pêkhatinên te, yên herî nû pêşî, rûpel bi rûpel. symbol, limit û before bijarte ne.
GET
/api/history/transactions
Dîroka te ya danûstendinan, yên herî nû pêşî. Bi limit û offset rûpel dibe.
GET
/api/fees/tier
Asta te ya heqê ya heyî û rêjeyên wê yên çêker û wergir.
GET
/api/notifications
Agahdariyên te. limit, unread û before bijarte ne.
GET
/api/legal
Te kîjan belgeyên hiqûqî qebûl kirine. Qebûlkirina wan li ser malperê tê kirin.

Destûra Bazirganiyê

Ev mifteyeke bi Bazirganiyê dixwazin, ku spot.trade û her tiştê di Xwendinê de dihewîne. Daxwazeke qebûlkirî bi HTTP 202 bersiv distîne û paşê tê pêkanîn.

Rêbaz
Rê
Çi dike
POST
/api/spot/order
Daxwaza bazarê. Kirîn quoteOrderQty dişîne, firotin baseQty dişîne.
POST
/api/spot/instant
Daxwaza bazarê ya ku di nav maxSlippageBps (1 heta 1000) de pêk tê, an jî bi temamî tê redkirin.
POST
/api/spot/limit
Daxwaza sînordar bi baseQty û limitPrice.
POST
/api/spot/stop-limit
Daxwaza stop-sînordar bi baseQty, limitPrice û stopPrice.
POST
/api/spot/orders/{clientOrderId}/cancel
Yek ji daxwazên xwe yên vekirî betal bike.

Ji bo mifteyên API ne berdest e

Her endpointeke din bi 403 API_KEY_NOT_PERMITTED bersiv dide: vekişandin, veguhastin, navnîşanên tomarkirî, navnîşanên danînê, dîroka danîn û vekişandinê, mîhengên ewlehiyê, piştrastkirina nasnameyê, profîl, hişyariyên bihayê, tîketên piştgiriyê, vexwendin û birêvebirina mifteyan. Van li ser malperê bike.

Referansên hesabê

Mifteya API ya yek hesabî ye û hesab ji miftê tê zanîn. Tu endpoint ne hejmara hesabê, ne user id û ne jî UID digire, û userId di laş an query string de tê paşguhkirin.

UIDya te

UIDya te ew hejmar e ku di Hesab → Profîl û di menuya hesabê de tê nîşandan. Gava tu bi piştgiriyê re têkilî datînî, wê bibêje. Ev ji bo mirovan e û ne mifte û ne sir e: tu carî wê ji API re naşînî, û mifteyên API nikarin endpointa profîlê ya ku wê vedigerîne bang bikin. Wê wekî xwe nîşan bide û ji hejmarên wê wateyek dernexe.

Bîlanço

GET /api/wallets/spot û GET /api/wallets/funding ji bo her hebûnê yek rêz vedigerînin, bi kurtenavê wê tê nasîn, mînak USDT. Di cizdanê spot de, balance ji bo bazirganiyê berdest e û locked di daxwazên te yên vekirî de tê girtin. Bi hev re bîlançoya te ya giştî ji bo wê hebûnê ne.

Daxwaz

Her daxwazê nasnameyek bi navê clientOrderId heye. Rojbit wê diafirîne û gava daxwaza te qebûl dike vedigerîne (HTTP 202, rewşa accepted). Ji bo xwendin û betalkirina wê daxwazê wê bi endpointên daxwazan ên li jor bi kar bîne. GET /api/spot/open-orders daxwazên te yên vekirî lîste dike.

Danûstendin

GET /api/spot/fills pêkhatinên te lîste dike, yên herî nû pêşî. Her pêkhatinekê ev hene: clientOrderId (nasnameya daxwaza wê, dikare null be), symbol, side û liquidity (maker an taker). Ji bo rûpela din a kevintir, nirxa nextCursor a di bersivê de wekî before bişîne; heke null be êdî tune ye.

Cotên bazirganiyê

Cot di API de wekî yek peyv tê nivîsandin, mînak BTCUSDT. Wê wekî symbol bi kar bîne.

Sînor û headerên bersivê

Her miftê sê budçe hene: giraniya daxwazan di deqeyekê de, û danîna daxwazan di 10 çirkeyan de û di rojekê de. Her daxwaz giranî dixwe: xwendineke tenê kêm dixwe û rûpelek dîrokê zêdetir. Sînor dikarin biguherin, û yên te her dem di headerên bersivê de ne.

Her bersivek ji bo daxwazeke bi miftê îmzekirî van headeran digire (hemû hejmarên tam in).

Header
Ravekirin
X-ROJ-USED-WEIGHT-1M
Giraniya daxwazan a di 60 çirkeyên dawî de hatî bikaranîn.
X-ROJ-WEIGHT-LIMIT-1M
Sînorê giraniyê yê vê miftê di her 60 çirkeyan de.
X-ROJ-ORDER-COUNT-10S
Daxwazên ku di 10 çirkeyên dawî de hatine danîn.
X-ROJ-ORDER-LIMIT-10S
Sînorê daxwazan yê vê miftê di her 10 çirkeyan de.
X-ROJ-ORDER-COUNT-1D
Daxwazên ku di 24 saetên dawî de hatine danîn.
X-ROJ-ORDER-LIMIT-1D
Sînorê daxwazan yê vê miftê di her 24 saetan de.

Gava budçeyek diqede, bersiv 429 e bi headera Retry-After (bi çirkeyan) û laşekî ku tê de code RATE_LIMITED e û bucket sînorê derbasbûyî destnîşan dike. Ji daxwaza redkirî tiştek nayê hesabkirin. Betalkirina daxwazekê tê hesabkirin lê tu carî ji ber derbasbûna sînorekî nayê redkirin.

Piştrastkirina têkçûyî jî tê sînorkirin. Piştî têkçûnên dubare ji yek navnîşana IP an ji bo yek miftê, daxwazên din ên miftê ji bo çend deqeyan 429 bi Retry-After distînin. Îmzekerê xwe rast bike û bisekine: dubarekirina îmzeyeke şaş tenê li bendê dirêj dike.

Çewtî û kodên redkirinê

Daxwazeke têkçûyî laşekî JSON vedigerîne: ok false ye û code kodeke sabît e. Li gorî ok û code biryar bide, ne li gorî nivîsa peyamê ya ku dikare biguhere. Peyam di msg an error de ye. Laşê 429 qada ok nahewîne, ji ber vê yekê ji bo wê koda rewşê kontrol bike.

Mînak: daxwazeke pir dereng hatî îmzekirin
{
  "ok": false,
  "msg": "Unauthorized — request timestamp outside the accepted window",
  "reason": "api_key_ts_stale",
  "server_time_ms": 1792000000123,
  "code": "API_KEY_TIMESTAMP_INVALID"
}
Kod
HTTP
Wate û tiştê ku divê were kirin
API_KEY_MALFORMED
400
Te hem headera Authorization hem jî X-ROJ-APIKEY şandine. Tenê headerên miftê bişîne.
API_KEY_INVALID
401
Mifte nehat piştrastkirin: mifteya nenas, betalkirî an qediyayî, îmzeya şaş, headerên xirab an laşekî ku nikare were îmzekirin. Hemû van bi mebest heman bersivê didin. Mifte, sir û baytên ku te îmze kirine kontrol bike.
API_KEY_TIMESTAMP_INVALID
401
Dem pir li pêş e an ji pencereya wergirtinê kevintir e, an jî pencere ji navberê derve ye. server_time_ms ji bersivê bi kar bîne da ku saeta xwe rast bikî.
API_KEY_REPLAYED
401
Ev daxwaza îmzekirî ya tam jixwe hatibû wergirtin. Rewşa heyî bixwîne, paşê daxwazeke nû bi demeke nû îmze bike.
API_KEY_NOT_PERMITTED
403
Ev endpoint bi mifteya API nayê bangkirin.
API_KEY_SCOPE_DENIED
403
Mifte destûra ku endpoint dixwaze tune; requiredScope wê nav dike. Destûr nayên guhertin, ji ber vê yekê mifteyeke nû biafirîne.
API_KEY_IP_NOT_ALLOWED
403
Mifte lîsteyeke spî ya IP heye û daxwaz ji navnîşaneke din hat, an jî navnîşana wê nehat destnîşankirin.
RATE_LIMITED
429
Sînorek hat derbaskirin. Bi qasî hejmara çirkeyên di Retry-After de bisekine.
API_KEYS_PAUSED
503
Rojbit gihîştina mifteyên API ji bo niha rawestandiye. Wekî ku Retry-After dibêje bisekine û dîsa biceribîne; betalkirina daxwazan hîn dixebite. Malper bandor nabe.
API_KEY_CHECK_UNAVAILABLE
503
Mifte niha nehat kontrolkirin. Dîsa ceribandin ewle ye.
SPOT_TRADING_DISABLED
503
Bazirganiya spot niha hatiye girtin. Daxwaz têne redkirin heta ku dîsa were vekirin.

Daxwaz pêşî tê qebûlkirin û paşê tê pêkanîn. Heke daxwazek neyê pêkanîn, endpointa rewşa daxwazê bersiv dide ku tê de kind rejected e û code yek ji wan e, mînak SPOT_INSUFFICIENT_FUNDS, SPOT_SLIPPAGE_EXCEEDED an SPOT_HALTED.

Endpointên daxwazan dikarin bi 403 û koda rewşa hesabê jî bersiv bidin, mînak ACCOUNT_FROZEN, GEO_RESTRICTED_IP an LEGAL_ACCEPTANCE_REQUIRED. Ev li ser malperê têne çareserkirin, ne bi riya API.

Heke kodeke ku tu nas nakî bigihîje te, li gorî rewşa wê ya HTTP tevbigere: 4xx tê wateya ku daxwazê rast bike, 5xx tê wateya ku paşê dîsa biceribîne.

Pirs der barê API de?Bi me re têkilî daynin