Weryfikuje numery kontenerów transportowych ISO 6346 (kod właściciela
Weryfikuje numery kontenerów transportowych ISO 6346 (kod właściciela, kategoria wyposażenia, cyfra kontrolna Modulo 11) oraz numery statków IMO (cyfra kontrolna Modulo 10)
Żądanie
- x-api-key: <your-api-key>
- Content-Type: application/json
Odpowiedź
{
"containerResult": {
"checkDigit": "<check digit>",
"equipmentCategoryCode": "ABC-123",
"equipmentCategoryDescription": "Generated from the endpoint's own schema.",
"formattedPrint": "PL61 1090 1014 0000 0712 1981 2874",
"isValid": true,
"normalized": "PL61109010140000071219812874",
"ownerCode": "ABC-123",
"rawInput": "PL61109010140000071219812874",
"reason": "checksum ok",
"serialNumber": "<serial number>"
},
"imoResult": {
"checkDigit": "<check digit>",
"formattedPrint": "PL61 1090 1014 0000 0712 1981 2874",
"isValid": true,
"normalized": "PL61109010140000071219812874",
"rawInput": "PL61109010140000071219812874",
"reason": "checksum ok",
"sequentialNumber": "<sequential number>"
},
"isValid": true,
"status": "success",
"tokensDeducted": 1
}Co robi
Weryfikuje numery kontenerów transportowych ISO 6346 (kod właściciela, kategoria wyposażenia, cyfra kontrolna Modulo 11) oraz numery statków IMO (cyfra kontrolna Modulo 10)
Żądanie
Treść
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
containerNumber | string | nie | ISO 6346 shipping container number (e.g. "CSQU3054383" or "CSQU 305438 3") |
identifier | string | nie | Auto-detected single identifier (auto-routes to Container or IMO verification) |
imoNumber | string | nie | IMO vessel identification number (e.g. "IMO 9176187" or "9176187") |
Przykładowe żądanie
{
"containerNumber": "CSQU3054383",
"identifier": "<identifier>",
"imoNumber": "9074729"
}Odpowiedź
| Pole | Typ | Opis |
|---|---|---|
containerResult | object | |
↳ checkDigit | string | |
↳ equipmentCategoryCode | string | |
↳ equipmentCategoryDescription | string | |
↳ formattedPrint | string | |
↳ isValid | boolean | |
↳ normalized | string | |
↳ ownerCode | string | |
↳ rawInput | string | |
↳ reason | string | |
↳ serialNumber | string | |
imoResult | object | |
↳ checkDigit | string | |
↳ formattedPrint | string | |
↳ isValid | boolean | |
↳ normalized | string | |
↳ rawInput | string | |
↳ reason | string | |
↳ sequentialNumber | string | |
isValid | boolean | |
status | string | |
tokensDeducted | integer |
Przykładowa odpowiedź
{
"containerResult": {
"checkDigit": "<check digit>",
"equipmentCategoryCode": "ABC-123",
"equipmentCategoryDescription": "Generated from the endpoint's own schema.",
"formattedPrint": "PL61 1090 1014 0000 0712 1981 2874",
"isValid": true,
"normalized": "PL61109010140000071219812874",
"ownerCode": "ABC-123",
"rawInput": "PL61109010140000071219812874",
"reason": "checksum ok",
"serialNumber": "<serial number>"
},
"imoResult": {
"checkDigit": "<check digit>",
"formattedPrint": "PL61 1090 1014 0000 0712 1981 2874",
"isValid": true,
"normalized": "PL61109010140000071219812874",
"rawInput": "PL61109010140000071219812874",
"reason": "checksum ok",
"sequentialNumber": "<sequential number>"
},
"isValid": true,
"status": "success",
"tokensDeducted": 1
}Błędy
Każdy błąd ma tę samą kopertę: status HTTP, kod maszynowy i jedno zdanie.
400 | Treść albo parametr nie przeszły walidacji. Tablica details wskazuje pole. |
401 | Brak klucza, klucz cofnięty albo zły nagłówek. Wyślij x-api-key. |
402 | Portfel nie pokrywa tego wywołania. Doładuj albo poczekaj na miesięczny przydział. |
404 | Zasób nie istnieje albo nie jest Twój. Obie sytuacje odpowiadają identycznie i nic nie kosztują. |
429 | Przekroczony limit na minutę dla Twojego planu. Odczekaj i ponów. |
5xx | Usługa nadrzędna odmówiła albo przekroczyła czas. Wywołanie nie jest rozliczane. |
Kod
curl -X POST 'https://app.castomapi.com/v1/verify/container-imo' \
-H 'x-api-key: <your-api-key>' \
-H 'Content-Type: application/json' \
-d '{"containerNumber": "CSQU3054383", "identifier": "<identifier>", "imoNumber": "9074729"}'const res = await fetch('https://app.castomapi.com/v1/verify/container-imo', {
method: 'POST',
headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
body: JSON.stringify({"containerNumber": "CSQU3054383", "identifier": "<identifier>", "imoNumber": "9074729"})
});
const data = await res.json();
console.log(data);import { request } from 'node:https';
// Node 18+ has fetch built in
const res = await fetch('https://app.castomapi.com/v1/verify/container-imo', {
method: 'POST',
headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
body: JSON.stringify({"containerNumber": "CSQU3054383", "identifier": "<identifier>", "imoNumber": "9074729"})
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
'https://app.castomapi.com/v1/verify/container-imo',
headers={'x-api-key': '<your-api-key>'},
json={"containerNumber": "CSQU3054383", "identifier": "<identifier>", "imoNumber": "9074729"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://app.castomapi.com/v1/verify/container-imo');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['x-api-key: <your-api-key>', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['containerNumber' => 'CSQU3054383', 'identifier' => '<identifier>', 'imoNumber' => '9074729']),
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);Koszt i limity
Ta operacja nie wymaga klucza API i nic nie kosztuje: wywołana bez klucza odpowiada 200 i pobiera zero tokenów, do 10 żądań na minutę z jednego adresu IP.
Limity żądań na minutę
| Bez klucza | 10 |
| Free | 60 |
| Pro | 300 |
| Enterprise | 1200 |
Pytania
Ile kosztuje Weryfikuje numery kontenerów transportowych ISO 6346 (kod właściciela?
Ta operacja nie wymaga klucza API i nic nie kosztuje: wywołana bez klucza odpowiada 200 i pobiera zero tokenów, do 10 żądań na minutę z jednego adresu IP.
Jak się uwierzytelnić?
Wyślij klucz w nagłówku x-api-key. Jeden klucz obejmuje każdy rozliczany endpoint; niczego nie trzeba włączać osobno.
Czy mogę wysłać nagłówek Authorization: Bearer zamiast klucza?
Nie dla rozliczanego endpointu — te przyjmują wyłącznie nagłówek x-api-key. Tokeny Bearer należą do strony konta: panel i API konta przyjmują sesję JWT, a castomapi-auth wydaje je standardowym uzgodnieniem OAuth2, z grantami authorization code, client credentials i refresh. Opisuje to strona usługi auth.
Jakie są limity?
10 żądań na minutę z jednego IP zupełnie bez klucza, 60 na minutę w planie Free, 300 w Pro, 1200 w Enterprise. Powyżej poziomu bez klucza limit jest na konto, łącznie dla wszystkich endpointów.
OpenAPI: https://app.castomapi.com/docs/json