API dokümantasyonuAPI documentation
RapidoPro, standart SMM Panel API v2 sözleşmesini kullanır. Perfect Panel ve benzeri paneller, sağlayıcı (provider) olarak aşağıdaki adres ve size verilen API key ile doğrudan bağlanabilir.
RapidoPro implements the standard SMM Panel API v2 contract. Perfect Panel and compatible panels can connect directly as a provider using the URL below and the API key issued to you.
https://panelv2.rapidopro.com/api/v2
BaşlarkenGetting started
- Bizimle iletişime geçip hesap açtırın. Size özel bir API key verilir. Key'i kimseyle paylaşmayın; key'e sahip olan herkes bakiyenizle sipariş verebilir.
- Contact us to open an account. You will receive a personal API key. Keep it secret: anyone holding the key can place orders with your balance.
- Hesabınıza bakiye yükletin. Bakiye USD cinsindendir; her siparişte otomatik düşülür.
- Top up your balance. Balances are in USD and are deducted automatically for each order.
- Panelinizde yeni bir provider ekleyin: API URL olarak yukarıdaki adresi, API key olarak size verilen key'i girin. Ardından servisleri senkronize edin.
- Add a new provider in your panel: use the address above as the API URL and your key as the API key. Then sync services.
POST ve application/x-www-form-urlencoded gövdeyle gönderilir. Her istekte key ve action zorunludur. Yanıtlar JSON'dur.POST with an application/x-www-form-urlencoded body. key and action are required on every request. Responses are JSON.Servis listesiService list
action=services
| ParametreParameter | AçıklamaDescription |
|---|---|
key * | API key'inizYour API key |
action * | services |
[
{
"service": "10",
"name": "TikTok Views",
"category": "TikTok",
"rate": "0.0050",
"min": "100",
"max": "100000",
"type": "default",
"dripfeed": false,
"refill": false,
"cancel": true
}
]rate, 1000 adet başına USD fiyattır. min ve max sipariş başına adet sınırlarıdır. Drip-feed ve refill desteklenmez; iptal desteklenir.
rate is the price in USD per 1000. min and max are per-order quantity limits. Drip-feed and refill are not supported; cancel is supported.
Sipariş oluşturmaCreate order
action=add
| ParametreParameter | AçıklamaDescription |
|---|---|
key * | API key'inizYour API key |
action * | add |
service * | Servis ID (services yanıtındaki service)Service ID (service from the services response) |
link * | TikTok video linki. Yalnızca https:// ve tiktok.com, www.tiktok.com, m.tiktok.com, vm.tiktok.com, vt.tiktok.com adresleri kabul edilir. En fazla 300 karakter.TikTok video link. Only https:// links on tiktok.com, www.tiktok.com, m.tiktok.com, vm.tiktok.com, vt.tiktok.com are accepted. Max 300 characters. |
quantity * | Adet; servisin min ile max değerleri arasında olmalıQuantity; must be between the service's min and max |
{ "order": 23501 }Ücret sipariş anında bakiyeden düşülür. runs veya interval gönderilirse sipariş Drip-feed is not supported hatasıyla reddedilir.
The charge is deducted from your balance when the order is placed. If runs or interval is sent, the order is rejected with Drip-feed is not supported.
Sipariş durumuOrder status
action=status tek siparişsingle order
| ParametreParameter | AçıklamaDescription |
|---|---|
key * | API key'inizYour API key |
action * | status |
order * | Sipariş IDOrder ID |
{
"charge": "0.2000",
"start_count": "0",
"status": "In progress",
"remains": "40000",
"currency": "USD"
}action=status toplumultiple orders
| ParametreParameter | AçıklamaDescription |
|---|---|
orders * | Virgülle ayrılmış sipariş ID'leri, istek başına en fazla 100Comma-separated order IDs, up to 100 per request |
{
"23501": {
"charge": "0.2000",
"start_count": "0",
"status": "Completed",
"remains": "0",
"currency": "USD"
},
"23502": { "error": "Incorrect order id" }
}remains, henüz teslim edilmemiş adettir. start_count şu anda raporlanmaz ve her zaman 0 döner.
remains is the quantity not yet delivered. start_count is not reported at the moment and always returns 0.
Sipariş iptaliCancel orders
action=cancel
| ParametreParameter | AçıklamaDescription |
|---|---|
key * | API key'inizYour API key |
action * | cancel |
orders * | Virgülle ayrılmış sipariş ID'leri, en fazla 100Comma-separated order IDs, up to 100 |
[
{ "order": 23501, "cancel": 1 },
{ "order": 23502, "cancel": { "error": "Order cannot be canceled" } }
]Yalnızca henüz işlenmeye başlamamış (Pending) siparişler iptal edilebilir. İptal edilen siparişin ücretinin tamamı bakiyenize iade edilir.
Only orders that have not started yet (Pending) can be canceled. The full charge of a canceled order is refunded to your balance.
BakiyeBalance
action=balance
{ "balance": "12.5000", "currency": "USD" }Sipariş durumlarıOrder statuses
| DurumStatus | AnlamıMeaning |
|---|---|
| Pending | Sırada, henüz başlamadı. İptal edilebilir.Queued, not started yet. Can be canceled. |
| In progress | İşleniyor. remains teslim ilerledikçe azalır.Being processed. remains decreases as delivery progresses. |
| Completed | Tamamı teslim edildi.Fully delivered. |
| Partial | Bir kısmı teslim edildi. Teslim edilmeyen remains adedinin ücreti otomatik iade edildi.Partially delivered. The charge for the undelivered remains was refunded automatically. |
| Canceled | İptal edildi (sizin isteğinizle ya da link işlenemediği için). Ücretin tamamı iade edildi.Canceled (by your request or because the link could not be processed). The full charge was refunded. |
Ücret ve iadeBilling & refunds
- Ücret sipariş anında bakiyeden düşülür; bakiye yetmezse sipariş
not enough balancehatasıyla reddedilir. - The charge is deducted when the order is placed; if the balance is insufficient the order is rejected with
not enough balance. - İadeler otomatiktir ve sipariş sonuçlandığı anda bakiyenize yansır. Toplam iade hiçbir zaman ödenen ücreti aşmaz.
- Refunds are automatic and are credited as soon as the order is finalized. A refund never exceeds the amount charged.
HatalarErrors
Hatalar SMM v2 standardına uygun olarak HTTP 200 ve {"error": "..."} gövdesiyle döner. Tek istisna limit aşımıdır (HTTP 429).
Following the SMM v2 convention, errors are returned with HTTP 200 and a {"error": "..."} body. The only exception is rate limiting (HTTP 429).
| MesajMessage | NedenCause |
|---|---|
Incorrect API key | Key yanlış ya da hesap durdurulmuşWrong key or account disabled |
Incorrect service id | Servis yok ya da kapalıService does not exist or is disabled |
quantity invalid | Adet pozitif bir tam sayı değilQuantity is not a positive integer |
quantity must be between … | Adet servisin min ile max sınırı dışındaQuantity outside the service's min/max |
Incorrect link | Link geçerli bir https TikTok adresi değilLink is not a valid https TikTok URL |
not enough balance | Bakiye sipariş ücretine yetmiyorBalance does not cover the charge |
Drip-feed is not supported | runs veya interval gönderildiruns or interval was sent |
Refill is not supported | refill / refill_status desteklenmezrefill / refill_status are not supported |
Incorrect order id | Sipariş yok ya da size ait değilOrder does not exist or is not yours |
Order cannot be canceled | Sipariş başlamış ya da zaten sonuçlanmışOrder already started or finalized |
Unknown action | Geçersiz actionInvalid action |
Too many requests | Limit aşıldı (HTTP 429); bir süre sonra tekrar deneyinRate limit exceeded (HTTP 429); retry later |
Kullanım limitleriRate limits
Durum kontrolü için tek tek istek yerine toplu orders= sorgusunu kullanın; tek istekte 100 sipariş sorgulanabilir.
Use the bulk orders= query for status checks instead of one request per order; up to 100 orders per request.
Örnek kodCode examples
curl -X POST https://panelv2.rapidopro.com/api/v2 \ -d key=YOUR_API_KEY \ -d action=add \ -d service=10 \ -d link=https://www.tiktok.com/@user/video/1234567890 \ -d quantity=1000
<?php
function rapido(array $params) {
$params['key'] = 'YOUR_API_KEY';
$ch = curl_init('https://panelv2.rapidopro.com/api/v2');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$res = curl_exec($ch);
curl_close($ch);
return json_decode($res, true);
}
$order = rapido(['action' => 'add', 'service' => 10,
'link' => 'https://www.tiktok.com/@user/video/1234567890',
'quantity' => 1000]);
$status = rapido(['action' => 'status', 'orders' => '23501,23502']);
$money = rapido(['action' => 'balance']);import requests
API = "https://panelv2.rapidopro.com/api/v2"
KEY = "YOUR_API_KEY"
def call(**params):
r = requests.post(API, data={"key": KEY, **params}, timeout=30)
return r.json()
order = call(action="add", service=10,
link="https://www.tiktok.com/@user/video/1234567890", quantity=1000)
print(call(action="status", order=order["order"]))