Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Codespace-sturdy-tribble-69v54vw5q796frp5q #166

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Recepxx34
Copy link

Ana içeriğe geç
Binance Logo

Genel Bilgi

Bu sayfada
Genel Bilgi
Genel API
Aşağıdaki temel uç noktalar mevcuttur:
https://api.binance.com
https://api1.binance.com
https://api2.binance.com
https://api3.binance.com
https://api4.binance.com
Yukarıdaki noktadaki son 4 uç nokta ( api1- api4) daha iyi performans sağlayabilir ancak daha az kararlılığa sahiptir. Lütfen kurulumunuz için en iyi hangisi işe yarıyorsa onu kullanın.
Tüm uç noktalar bir JSON nesnesi veya dizisi döndürür.
Veriler artan sırada döndürülür . En eskisi ilk, en yenisi son.
Tüm zaman ve zaman damgası ile ilgili alanlar milisaniye cinsindendir .
HTTP Dönüş
Hatalı isteklerde HTTP 4XXdönüş kodları kullanılır; sorun gönderici tarafındadır.
403WAF Limiti (Web Uygulama Güvenlik Duvarı) ihlal edildiğinde HTTP dönüş kodu kullanılır.
HTTP 409dönüş kodu, cancelReplace siparişi kısmen başarılı olduğunda kullanılır. (örneğin, siparişin iptali başarısız olursa ancak yeni sipariş yerleştirme başarılı olursa.)
429İstek oranı sınırını aşarken HTTP dönüş kodu kullanılır.
HTTP 418dönüş kodu, bir IP'nin kod aldıktan sonra istek göndermeye devam etmesi nedeniyle otomatik olarak yasaklanması durumunda kullanılır 429.
HTTP dönüş kodları dahili hatalar için kullanılır; sorun Binance'in tarafındadır. Bunu bir başarısızlık işlemi olarak değerlendirmemek5XX önemlidir ; yürütme durumu BİLİNMİYOR ve başarılı olabilirdi.
Hata Kodları ve
Bir hata varsa, API, nedenini belirten bir mesajla birlikte bir hata döndürecektir.
API ve SAPI üzerindeki hata yükü şu şekildedir:

{
"code": -1121,
"msg": "Invalid symbol."
}

Hata Kodları'nda tanımlanan belirli hata kodları ve mesajları .
Hakkında Genel Bilgiler
Uç noktalar için GETparametreler . olarak gönderilmelidir query string.
POST, PUT, ve uç noktaları için parametreler veya içerik türünde gönderilebilir DELETE. İsterseniz hem ve arasında parametreleri karıştırabilirsiniz .query stringrequest bodyapplication/x-www-form-urlencodedquery stringrequest body
Parametreler herhangi bir sırayla gönderilebilir.
query stringBir parametre hem 'de hem de ' de gönderilirse request body, query stringparametre kullanılacaktır.
Hakkında Genel Bilgiler
Başlıklar için aşağıdaki intervalLetterdeğerler:
İKİNCİ => S
DAKİKA => M
SAAT => S
GÜN => D
intervalNumaralığın miktarını tanımlar. Örneğin, M intervalNumile 5 intervalLetter"Her 5 dakikada" anlamına gelir.
Dizi /api/v3/exchangeInfo rateLimits, borsanın RAW_REQUESTS, REQUEST_WEIGHT, ve oran limitleriyle ilgili nesneleri içerir. Bunlar , altındaki bölümde ORDERSdaha ayrıntılı olarak tanımlanmıştır .ENUM definitionsRate limiters (rateLimitType)
A 429 will be returned when either request rate limit or order rate limit is violated.
IP Limits
Every request will contain X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter) in the response headers which has the current used weight for the IP for all request rate limiters defined.
Each route has a weight which determines for the number of requests each endpoint counts for. Heavier endpoints and endpoints that do operations on multiple symbols will have a heavier weight.
When a 429 is received, it's your obligation as an API to back off and not spam the API.
Repeatedly violating rate limits and/or failing to back off after receiving 429s will result in an automated IP ban (HTTP status 418).
IP bans are tracked and scale in duration for repeat offenders, from 2 minutes to 3 days.
A Retry-After header is sent with a 418 or 429 responses and will give the number of seconds required to wait, in the case of a 429, to prevent a ban, or, in the case of a 418, until the ban is over.
The limits on the API are based on the IPs, not the API keys.
We recommend using the websocket for getting data as much as possible, as this will not count to the request rate limit.
Order Rate Limits
Every successful order response will contain a X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter) header which has the current order count for the account for all order rate limiters defined.

When the order count exceeds the limit, you will receive a 429 error without the Retry-After header. Please check the Order Rate Limit rules using GET api/v3/exchangeInfo and wait for reactivation accordingly.

Rejected/unsuccessful orders are not guaranteed to have X-MBX-ORDER-COUNT-** headers in the response.

The order rate limit is counted against each account.

To monitor order count usage, refer to GET api/v3/rateLimit/order

Websocket Limits
WebSocket connections have a limit of 5 incoming messages per second. A message is considered:
A PING frame
A PONG frame
A JSON controlled message (e.g. subscribe, unsubscribe)
A connection that goes beyond the limit will be disconnected; IPs that are repeatedly disconnected may be banned.
A single connection can listen to a maximum of 1024 streams.
There is a limit of 300 connections per attempt every 5 minutes per IP.
/api/ and /sapi/ Limit Introduction
The /api/* and /sapi/* endpoints adopt either of two access limiting rules, IP limits or UID (account) limits.

Endpoints related to /api/*:

According to the two modes of IP and UID (account) limit, each are independent.
Endpoints share the 6000 per minute limit based on IP.
Responses contain the header X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter), defining the weight used by the current IP.
Successful order responses contain the header X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter), defining the order limit used by the UID.
Endpoints related to /sapi/*:

Endpoints are marked according to IP or UID limit and their corresponding weight value.
Each endpoint with IP limits has an independent 12000 per minute limit.
Each endpoint with UID limits has an independent 180000 per minute limit.
Responses from endpoints with IP limits contain the header X-SAPI-USED-IP-WEIGHT-1M, defining the weight used by the current IP.
Responses from endpoints with UID limits contain the header X-SAPI-USED-UID-WEIGHT-1M, defining the weight used by the current UID.
Data Sources
The API system is asynchronous, so some delay in the response is normal and expected.
Each endpoint has a data source indicating where the data is being retrieved, and thus which endpoints have the most up-to-date response.
These are the three sources, ordered by which is has the most up-to-date response to the one with potential delays in updates.

Matching Engine - the data is from the matching Engine
Memory - the data is from a server's local or external memory
Database - the data is taken directly from a database
Some endpoints can have more than 1 data source. (e.g. Memory => Database)

This means that the endpoint will check the first Data Source, and if it cannot find the value it's looking for it will check the next one.
Endpoint security type
Each endpoint has a security type that determines how you will interact with it. This is stated next to the NAME of the endpoint.
If no security type is stated, assume the security type is NONE.
API-keys are passed into the Rest API via the X-MBX-APIKEY header.
API-keys and secret-keys are case sensitive.
API-keys can be configured to only access certain types of secure endpoints. For example, one API-key could be used for TRADE only, while another API-key can access everything except for TRADE routes.
By default, API-keys can access all secure routes.
Security Type Description
NONE Endpoint can be accessed freely.
TRADE Endpoint requires sending a valid API-Key and signature.
MARGIN Endpoint requires sending a valid API-Key and signature.
USER_DATA Endpoint requires sending a valid API-Key and signature.
USER_STREAM Endpoint requires sending a valid API-Key.
MARKET_DATA Son nokta geçerli bir API Anahtarı gönderilmesini gerektirir.
TRADEve MARGINuç USER_DATAnoktalar SIGNEDuç noktalardır.
İMZALANMIŞ (TİCARET, KULLANICI_VERİLERİ VE MARJ) Uç nokta
SIGNEDuç noktaların, veya signatureiçinde gönderilecek ek bir parametreye, , ihtiyacı vardırquery stringrequest body.
HMAC SHA256Uç noktalar imzaları kullanır . HMAC SHA256 signatureAnahtarlı bir işlemdir. Anahtar olarak HMAC SHA256sizinkini kullanın vesecretKeytotalParams as the value for the HMAC operation.
signatureBüyük / küçük harfe duyarlı değildir.
totalParamsquery string, ile birleştirilmiş olarak tanımlanır request body.
Zamanlama
Bir SIGNEDuç noktanın ayrıca bir parametreye ihtiyacı vardır,timestamp, to be sent which should be the millisecond timestamp of when the request was created and sent.
Ek bir parametre, , isteğin geçerli olduğu recvWindowmilisaniye sayısını belirtmek için gönderilebilir . Gönderilmezse, varsayılan olarak 5000 olur .timestamprecvWindow
Mantık şu şekildedir:

if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow)
{
// process request
}
else
{
// reject request
}

Ciddi ticaret zamanlamayla ilgilidir. Ağlar istikrarsız ve güvenilmez olabilir, bu da isteklerin sunuculara ulaşmasının farklı miktarlarda zaman almasına yol açabilir. ile recvWindowisteğin belirli sayıda milisaniye içinde işlenmesi gerektiğini veya sunucu tarafından reddedileceğini belirtebilirsiniz.

5000 veya daha az küçük bir recvWindow kullanılması önerilir! Maksimum 60.000'i geçemez!
POST /api/v3/order için İMZALANMIŞ Uç Nokta Örnekleri - HMAC
echoİşte Linux komut satırından , openssl, ve kullanarak geçerli imzalı bir yükün nasıl gönderileceğine dair adım adım bir örnek curl.

Anahtar Değer
apiAnahtarı vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
gizliAnahtar NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
Parametre Değer
sembol LTCBTC
taraf SATIN ALMAK
tip SINIR
zamanGüçlü Genel Şartlar
miktar 1
fiyat 0,1
almaPenceresi 5000
zaman damgası 1499827319559
Örnek 1: Bir istek gövdesi olarak

Örnek 1

HMAC SHA256 imzası:

$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

curl komutu:

(HMAC SHA256)
$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order' -d 'symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'

istekGövdesi:
sembol=LTCBTC
&side=SATIN AL
&type=LIMIT
&timeInForce=GTC
&miktar=1
&fiyat=0.1
&recvWindow=5000
×tamp=1499827319559

Örnek 2: Bir sorgu dizesi olarak

Örnek 2

HMAC SHA256 imzası:

$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

curl komutu:

(HMAC SHA256)

$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'

sorguDizesi:
sembol=LTCBTC
&side=SATIN AL
&type=LIMIT
&timeInForce=GTC
&miktar=1
&fiyat=0.1
&recvWindow=5000
×tamp=1499827319559

Örnek 3: Karma sorgu dizesi ve istek gövdesi

Örnek 3

HMAC SHA256 imzası:

$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTCquantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
(stdin)= 0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77

curl komutu:

(HMAC SHA256)
$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC' -d 'quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=0fd168b8ddb4876a0358a8d14d0c9f3da0e9b20c5d52b2a00fcf7d1c602f9a77'

sorguDizesi:
sembol=LTCBTC&yan=SATIN AL&tür=SINIR&YürürlüktekiZaman=GTC

istekGövdesi:
miktar=1&fiyat=0.1&alınacakPencere=5000&zaman damgası=1499827319559

Örnek 3'te imzanın farklı olduğuna dikkat edin. "GTC" ile "quantity=1" arasında & yok.

POST /api/v3/order için İMZALANMIŞ Uç Nokta Örneği - RSA
Bu, geçerli bir imzalı yük göndermek için imza yükünün nasıl oluşturulacağına dair adım adım bir işlem olacaktır.
Şu anda destekliyoruz PKCS#8.
API anahtarınızı alabilmeniz için RSA Genel Anahtarınızı hesabınıza yüklemeniz gerekmektedir; buna karşılık gelen API anahtarı size sağlanacaktır.
Bu örnek için özel anahtar şu şekilde referans alınacaktır:test-prv-key.pem

Anahtar Değer
apiKey CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ
Parametre Değer
sembol BTCUSDT
taraf SATMAK
tip SINIR
zamanGüçlü Genel Şartlar
miktar 1
fiyat 0,2
almaPenceresi 5000
zaman damgası 1668481559918
İmza yükü (listelenen parametrelerle):

symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2&timestamp=1668481559918&recvWindow=5000

Adım 1: Yükü oluşturun

Parametre listesini bir dizgeye düzenleyin. Her parametreyi bir &. ile ayırın.

Adım 2: İmzayı hesaplayın:

2.1 - İmza yükünü ASCII verisi olarak kodlayın.

Adım 2.2

$ echo -n 'symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2&timestamp=1668481559918&recvWindow=5000' | openssl dgst -sha256 -sign ./test-prv-key.pem

2.2 - SHA-256 karma fonksiyonu ile RSASSA-PKCS1-v1_5 algoritmasını kullanarak yükü imzalayın.

Adım 2.3

$ echo -n 'symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2&timestamp=1668481559918&recvWindow=5000' | openssl dgst -sha256 -sign ./test-prv-key.pem | openssl enc -base64 -A
HZ8HOjiJ1s/igS9JA+n7+7Ti/ihtkRF5BIWcPIEluJP6tlbFM/Bf44LfZka/iemtahZAZzcO9TnI5uaXh3++lrqtNonCwp6/245UFWkiW1elpgtVAmJPbogcAv6rSlokztAfWk296ZJXzRDYAtzGH0gq7CgSJKfH+XxaCmR0WcvlKjNQnp12/eKXJYO4tDap8UCBLuyxDnR7oJKLHQHJLP0r0EAVOOSIbrFang/1WOq+Jaq4Efc4XpnTgnwlBbWTmhWDR1pvS9iVEzcSYLHT/fNnMRxFc7u+j3qI//5yuGuu14KR0MuQKKCSpViieD+fIti46sxPTsjSemoUKp0oXA==

2.3 - Çıktıyı base64 string olarak kodla.

Adım 2.4

HZ8HOjiJ1s%2FigS9JA%2Bn7%2B7Ti%2FihtkRF5BIWcPIEluJP6tlbFM%2FBf44LfZka%2FiemtahZAZzcO9TnI5uaXh3%2B%2BlrqtNonCwp6%2F245UFWkiW1elpgtVAmJPbogcAv6rSlokztAfWk296ZJXzRDYAtzGH0gq7CgSJKfH%2BXxaCmR0WcvlKjNQnp12%2FeKXJYO4tDap8UCBLuyxDnR7oJKLHQHJLP0r0EAVOOSIbrFang%2F1WOq%2BJaq4Efc4XpnTgnwlBbWTmhWDR1pvS9iVEzcSYLHT%2FfNnMRxFc7u%2Bj3qI%2F%2F5yuGuu14KR0MuQKKCSpViieD%2BfIti46sxPTsjSemoUKp0oXA%3D%3D

/2.4 - İmza ve içerebileceğinden =, bu isteğin gönderilmesinde sorunlara neden olabilir. Bu yüzden imzanın URL kodlu olması gerekir.

Adım 2.5

curl -H "X-MBX-APIKEY: CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ" -X POST 'https://api.binance.com/api/v3/order?symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2&timestamp=1668481559918recvWindow=5000&signature=HZ8HOjiJ1s%2FigS9JA%2Bn7%2B7Ti%2FihtkRF5BIWcPIEluJP6tlbFM%2FBf44LfZka%2FiemtahZAZzcO9TnI5uaXh3%2B%2BlrqtNonCwp6%2F245UFWkiW1elpgtVAmJPbogcAv6rSlokztAfWk296ZJXzRDYAtzGH0gq7CgSJKfH%2BXxaCmR0WcvlKjNQnp12%2FeKXJYO4tDap8UCBLuyxDnR7oJKLHQHJLP0r0EAVOOSIbrFang%2F1WOq%2BJaq4Efc4XpnTgnwlBbWTmhWDR1pvS9iVEzcSYLHT%2FfNnMRxFc7u%2Bj3qI%2F%2F5yuGuu14KR0MuQKKCSpViieD%2BfIti46sxPTsjSemoUKp0oXA%3D%3D'

2.5 - curl komutu

Bash betiği

#!/usr/bin/env bash

Set up authentication:

API_KEY="put your own API Key here"
PRIVATE_KEY_PATH="test-prv-key.pem"

Set up the request:

API_METHOD="POST"
API_CALL="api/v3/order"
API_PARAMS="symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2"

Sign the request:

timestamp=$(date +%s000)
api_params_with_timestamp="$API_PARAMS&timestamp=$timestamp"
signature=$(echo -n "$api_params_with_timestamp"
| openssl dgst -sha256 -sign "$PRIVATE_KEY_PATH"
| openssl enc -base64 -A)

Send the request:

curl -H "X-MBX-APIKEY: $API_KEY" -X "$API_METHOD"
"https://api.binance.com/$API_CALL?$api_params_with_timestamp"
--data-urlencode "signature=$signature"

Benzer adımları içeren örnek Bash betiği sağ tarafta mevcuttur.

Öncesi
giriiş
Sonraki
Sanal Alt Hesap Oluşturun (Ana Hesap İçin)
Telif Hakkı © 2024 Binance.

@rasine
Copy link

rasine commented Nov 14, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants