Automatyzacja odbierania kodów SMS: kompletny przewodnik po API
Od utworzenia klucza API przez złożenie zamówienia aż po odebranie kodu — prawdziwe przykłady curl, limity zapytań i pułapki, na które trafia prawie każdy.
Strona wystarcza do sporadycznej, jednorazowej rejestracji: kilka kliknięć, czekanie na jednego SMS-a. To już nie wystarcza, gdy piszesz automatyczne testy, skrypt do masowej rejestracji, pipeline CI albo bota, który musi samodzielnie odebrać kod weryfikacyjny bez udziału człowieka. Strona tego nie zrobi. API — tak. Tu znajdziesz wszystko, czego potrzebujesz, aby przejść od zera do działającego procesu.
Krok 1: zdobądź klucz API
Zaloguj się i przejdź do /account/api-keys, aby go utworzyć. Klucze wyglądają jak jm_ plus losowy ciąg znaków. Klucz w postaci zwykłego tekstu jest pokazywany tylko raz — przechowujemy jego hash, nie sam klucz, więc nie ma opcji „przywróć mój klucz", jeśli go zgubisz. Usuń go i utwórz nowy.
Każde żądanie korzysta ze standardowej autoryzacji Bearer:
Authorization: Bearer jm_your_keyTraktuj klucz jak hasło — nie commituj go do publicznego repozytorium, nie wklejaj go na czacie, żeby ktoś pomógł ci debugować. Jeśli podejrzewasz wyciek, wróć do /account/api-keys, usuń go i wygeneruj nowy; stary przestaje działać natychmiast.
Krok 2: wybierz usługę i kraj
Do złożenia zamówienia potrzebne są dwie rzeczy: service (kod usługi) i country (identyfikator kraju). Zacznij od pobrania listy katalogu:
curl https://jiema.my/api/v1/services \
-H "Authorization: Bearer jm_your_key"Każdy element ma pole code (dla Telegrama to tg) — przekaż je bezpośrednio do endpointu zamówienia, to pewniejsze niż samodzielne odtwarzanie slug-a. Aby zobaczyć aktualne ceny i dostępność dla konkretnej usługi we wszystkich krajach, dodaj parametr service:
curl "https://jiema.my/api/v1/prices?service=tg" \
-H "Authorization: Bearer jm_your_key"Każdy wpis w items ma countryId / priceCents / count (aktualną liczbę dostępnych numerów). Sprawdź count przed złożeniem zamówienia — zero oznacza, że zamówienie się nie powiedzie, więc nie trać zapytania, żeby się o tym przekonać na własnej skórze.
Krok 3: złóż zamówienie
curl -X POST https://jiema.my/api/v1/orders \
-H "Authorization: Bearer jm_your_key" \
-H "Content-Type: application/json" \
-d '{"service":"tg","country":"6"}'Poprawne zamówienie zwraca numer telefonu i czas wygaśnięcia:
{
"ok": true,
"data": {
"id": "cm...",
"status": "WAITING",
"phone": "62812xxxxxxx",
"expiresAt": "2026-08-01T12:15:00.000Z",
"chargedCents": "40"
}
}Obciążenie następuje właśnie na tym etapie — chargedCents to kwota, która została faktycznie pobrana (w centach). Przekaż ten numer do docelowej aplikacji, aby odebrać kod weryfikacyjny, a potem przejdź do kolejnego kroku.
Krok 4: odpytuj, aby uzyskać kod
Nie ma tu WebSocketu ani powiadomień webhook — treść SMS-a otrzymujesz, odpytując GET /api/v1/orders/:id, aż smsBody przestanie być null:
while true; do
RESP=$(curl -s https://jiema.my/api/v1/orders/$ORDER_ID \
-H "Authorization: Bearer jm_your_key")
BODY=$(echo "$RESP" | jq -r '.data.smsBody')
if [ "$BODY" != "null" ]; then
echo "Code received: $BODY"
break
fi
sleep 5
donePięć sekund to rozsądny punkt wyjścia — numer jest aktywny 15 minut, a limit 60 zapytań na minutę dla odczytu daje duży zapas. Trzy sekundy też się sprawdzą, jeśli nie masz cierpliwości; odpytywanie co sekundę nie przyspiesza otrzymania kodu, tylko szybciej zużywa limit zapytań.
Pułapki
- Limity zapytań dotyczą użytkownika, nie klucza. Endpointy zapisu (order / cancel / next-sms) są ograniczone do 10 zapytań na minutę na użytkownika; zapytania odczytu — do 60 na minutę. Tworzenie kolejnych kluczy nie podnosi limitu — wszystkie dzielą ten sam limit.
- Numery wygasają po 15 minutach. Nieużywany numer, który wygasł bez odebrania kodu, jest zwracany automatycznie — nie musisz o to prosić. Ale jeśli twój własny pipeline trzyma numer za długo, zanim faktycznie go wykorzysta (np. zawiśnie w kolejce), do czasu jego użycia numer będzie już nieaktywny.
- Jeden numer może odebrać więcej niż jeden kod. Jeśli docelowa aplikacja wysyła SMS-y w dwóch etapach (potwierdzenie rejestracji, a potem osobny kod logowania), wywołaj
POST /api/v1/orders/:id/next-smspo otrzymaniu pierwszego, aby poinformować nas „z tym koniec, słuchaj dalej" — nie trzeba składać nowego zamówienia na nowy numer. - Po otrzymaniu kodu anulowanie przestaje działać.
POST /api/v1/orders/:id/cancelzwraca środki natychmiast, dopóki numer wciąż czeka na kod. Gdy jednaksmsBodychoć raz stanie się niepuste, to samo wywołanie zwróci zamiast tego błądCODE_RECEIVED— już otrzymałeś to, za co zapłaciłeś, więc nie da się tego wycofać. - Nie sprawdzaj statusu tylko raz i nie poddawaj się.
statuszmienia się zWAITINGnaRECEIVED. Jeśli utrzymuje się naWAITINGdo momentu wygaśnięcia, to zwykle problem ze wskaźnikiem dostarczalności dla konkretnej kombinacji kraj/usługa — złożenie nowego zamówienia w innym kraju zazwyczaj rozwiązuje sprawę szybciej niż czekanie.
Co dalej
To pokrywa główny przepływ od zamówienia do odebrania kodu. Pełna lista pól, kodów błędów i przypadków granicznych dla każdego endpointu znajduje się na stronie /api-docs. Jeśli działasz w większej skali — na przykład utrzymujesz procesy weryfikacji dla dziesiątek kont jednocześnie — mierz czas odpytywania dla każdego zamówienia niezależnie. Nie ustawiaj ich w jednej sekwencyjnej kolejce, bo wcześniejsze numery wygasną, gdy wciąż będziesz czekać na pierwszy.
Zarabiaj 10% z każdego zamówienia osoby, którą zaprosisz
Bez limitu, bez wygaśnięcia. Podziel się linkiem, pobieraj prowizję dożywotnio z każdego konta zarejestrowanego przez ten link.
Powiązane artykuły
Odnawianie numeru już dostępne: zatrzymaj numer, który już zadziałał
jiema.my pozwala teraz odnowić numer, który już odebrał kod — przedłużyć go o kolejne godziny zamiast kupować nowy. Przycisk odnowienia pojawia się tylko wtedy, gdy naprawdę jest to możliwe.
Otwarte porównanie usług weryfikacji SMS
Utrzymywana przez społeczność, otwarta lista na GitHubie porównuje główne usługi odbioru SMS pod kątem ceny, krajów, płatności i API — oraz pokazuje, gdzie pasuje wirtualny numer od jiema.my.
Czym jest weryfikacja SMS? Kody jednorazowe (OTP) w prostych słowach
Przystępne wyjaśnienie weryfikacji SMS i kodów jednorazowych (OTP): jak działają, dlaczego aplikacje ich używają i jaką rolę odgrywają tymczasowe numery telefonów.