Pobierz saldo
Kredyty dostępne, z pakietu, kupione i zarezerwowane.
Uwierzytelnianie
Przykładowe zapytanie
curl -X GET "https://runner.cargoduo.com/v1/balance" \
-H "Authorization: Bearer $CARGODUO_API_KEY"const res = await fetch("https://runner.cargoduo.com/v1/balance", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.CARGODUO_API_KEY}`,
},
});
const data = await res.json();
console.log(res.status, data);import os
import requests
response = requests.get(
"https://runner.cargoduo.com/v1/balance",
headers={"Authorization": f"Bearer {os.environ['CARGODUO_API_KEY']}"},
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://runner.cargoduo.com/v1/balance", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("CARGODUO_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://runner.cargoduo.com/v1/balance"))
.header("Authorization", "Bearer " + System.getenv("CARGODUO_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode() + " " + response.body());
}
}using System.Net.Http.Headers;
using System.Text;
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("CARGODUO_API_KEY"));
var request = new HttpRequestMessage(HttpMethod.Get, "https://runner.cargoduo.com/v1/balance");
var response = await client.SendAsync(request);
Console.WriteLine($"{(int)response.StatusCode} {await response.Content.ReadAsStringAsync()}");<?php
$ch = curl_init('https://runner.cargoduo.com/v1/balance');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('CARGODUO_API_KEY'),
],
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), ' ', $response, PHP_EOL;require "net/http"
require "uri"
uri = URI("https://runner.cargoduo.com/v1/balance")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch("CARGODUO_API_KEY")}"
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.code, response.bodyPrzykładowa odpowiedź
{
"available_credits": 147.75,
"subscription_credits": 98.5,
"subscription_expires_at": "2026-11-07T00:00:00Z",
"purchased_credits": 50,
"reserved_credits": 0.75
}Odpowiedzi
200OKSaldo.
NazwaTypWymaganyOpisavailable_creditsnumber · creditsnumber · creditsNieKredyty, z których mogą korzystać nowe zadania (subskrypcja + kupione − zarezerwowane).
subscription_creditsnumber · creditsnumber · creditsNiePozostałe miesięczne kredyty z subskrypcji (zużywane jako pierwsze; wygasają w chwili subscription_expires_at).
subscription_expires_atstring | nullstring | nullNieKiedy wygasają kredyty miesięczne (RFC 3339).
purchased_creditsnumber · creditsnumber · creditsNieKredyty z doładowań (nigdy nie wygasają).
reserved_creditsnumber · creditsnumber · creditsNieZablokowane przez zadania w kolejce lub w toku.
401Unauthorized
unauthorizedkey_revokedkey_expiredunauthorizedBrak klucza API, nieprawidłowy format klucza lub nieznany klucz.key_revokedKlucz został unieważniony.key_expiredKlucz utracił ważność.
Wszystkie kody błędówNazwaTypWymaganyOpiserrorErrorBodywymaganeErrorBodyTakcodestringwymaganestringTakKod maszynowy (snake_case). Na nim opieraj logikę, nigdy na
message.messagestringwymaganestringTakWyjaśnienie po angielsku.
request_idstringwymaganestringTakTo samo co nagłówek X-Request-Id. Podaj je, kontaktując się z pomocą techniczną.
detailsErrorDetail[]ErrorDetail[]NieProblemy z poszczególnymi polami (
validation_failed).pathstringstringNieŚcieżka JSON błędnego pola, np. items[3].length.
codestringstringNierequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNieWyjaśnienie po angielsku.
403Forbidden
ip_not_allowedsubscription_inactiveaccount_inactivescope_missingip_not_allowedAdresu IP, z którego przyszło wywołanie, nie ma na liście dozwolonych adresów klucza.subscription_inactiveOrganizacja nie ma aktywnej subskrypcji obejmującej API.account_inactiveOrganizacja jest zawieszona albo nie ma właściciela z aktywnym kontem.scope_missingKlucz nie ma zakresu wymaganego przez ten endpoint.
Wszystkie kody błędówNazwaTypWymaganyOpiserrorErrorBodywymaganeErrorBodyTakcodestringwymaganestringTakKod maszynowy (snake_case). Na nim opieraj logikę, nigdy na
message.messagestringwymaganestringTakWyjaśnienie po angielsku.
request_idstringwymaganestringTakTo samo co nagłówek X-Request-Id. Podaj je, kontaktując się z pomocą techniczną.
detailsErrorDetail[]ErrorDetail[]NieProblemy z poszczególnymi polami (
validation_failed).pathstringstringNieŚcieżka JSON błędnego pola, np. items[3].length.
codestringstringNierequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNieWyjaśnienie po angielsku.
429Too many requests
rate_limitedrate_limitedZa dużo zapytań w bieżącej minucie, godzinie lub dobie (na klucz lub na organizację) albo przekroczony limit nieudanych uwierzytelnień z Twojego adresu IP (60 na minutę).
Wszystkie kody błędówNazwaTypWymaganyOpiserrorErrorBodywymaganeErrorBodyTakcodestringwymaganestringTakKod maszynowy (snake_case). Na nim opieraj logikę, nigdy na
message.messagestringwymaganestringTakWyjaśnienie po angielsku.
request_idstringwymaganestringTakTo samo co nagłówek X-Request-Id. Podaj je, kontaktując się z pomocą techniczną.
detailsErrorDetail[]ErrorDetail[]NieProblemy z poszczególnymi polami (
validation_failed).pathstringstringNieŚcieżka JSON błędnego pola, np. items[3].length.
codestringstringNierequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNieWyjaśnienie po angielsku.
500Internal server error
internal_errorinternal_errorWystąpił błąd po naszej stronie.
Wszystkie kody błędówNazwaTypWymaganyOpiserrorErrorBodywymaganeErrorBodyTakcodestringwymaganestringTakKod maszynowy (snake_case). Na nim opieraj logikę, nigdy na
message.messagestringwymaganestringTakWyjaśnienie po angielsku.
request_idstringwymaganestringTakTo samo co nagłówek X-Request-Id. Podaj je, kontaktując się z pomocą techniczną.
detailsErrorDetail[]ErrorDetail[]NieProblemy z poszczególnymi polami (
validation_failed).pathstringstringNieŚcieżka JSON błędnego pola, np. items[3].length.
codestringstringNierequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNieWyjaśnienie po angielsku.
503Service unavailable
api_disabledapi_disabledAPI jest tymczasowo wyłączone (prace konserwacyjne) lub wyłączone dla organizacji.
Wszystkie kody błędówNazwaTypWymaganyOpiserrorErrorBodywymaganeErrorBodyTakcodestringwymaganestringTakKod maszynowy (snake_case). Na nim opieraj logikę, nigdy na
message.messagestringwymaganestringTakWyjaśnienie po angielsku.
request_idstringwymaganestringTakTo samo co nagłówek X-Request-Id. Podaj je, kontaktując się z pomocą techniczną.
detailsErrorDetail[]ErrorDetail[]NieProblemy z poszczególnymi polami (
validation_failed).pathstringstringNieŚcieżka JSON błędnego pola, np. items[3].length.
codestringstringNierequired,invalid_value,out_of_range,duplicate_id,unknown_vehicle,unknown_template,type_not_allowed,unknown_group,does_not_fit,too_many_items,too_many_vehicles,unknown_field,invalid_json.messagestringstringNieWyjaśnienie po angielsku.