API pakietów i współpraca dla firm z branży podróży
Porównywarki, wydawcy, resellerzy i biura podróży mogą prezentować lub sprzedawać nasze eSIM-y na podróż. API pakietów zwraca wszystkie pakiety, które sprzedajemy online — z cenami końcowymi, zasięgiem i linkami do produktów — w jednym dokumencie JSON.
Ta strona jest dostępna po angielsku i po polsku.
Wybierz model, który do Ciebie pasuje. Jeśli żaden nie pasuje, i tak napisz — opisz, co masz na myśli.
Prezentuj nasze pakiety z aktualnymi cenami przez API. Jeden klucz na serwis, linki do produktów z Twoimi parametrami śledzenia.
Własny kod rabatowy i prowizja od każdego zakupu — w ramach naszego programu partnerskiego.
Sprzedajesz eSIM-y własnym klientom albo wyposażasz zespół? Podaj rynki i wolumen, a przygotujemy propozycję.
Wysyłaj podróżnym link do eSIM-a na dany kierunek z Twoim kodem partnerskim. Sprzedaż, dostawę i pomoc przy instalacji bierzemy na siebie.
Endpoint REST tylko do odczytu, który zwraca jeden dokument JSON: wszystkie pakiety dostępne online na esimpark.com, z tymi samymi cenami, które pokazuje strona produktu i które pobiera kasa.
https://uj684erdvk.execute-api.eu-central-1.amazonaws.com/v1x-api-key, jeden klucz na partneraKażde zapytanie wymaga klucza API w nagłówku x-api-key. Klucze wydajemy partnerom po rozpatrzeniu wniosku — złóż go poniżej albo napisz na partner@esimpark.com.
403.Dwa endpointy GET. Nie ma parametrów zapytania: jedna odpowiedź zawiera wszystkie pakiety we wszystkich walutach.
GET/v1/plans | Wszystkie kierunki i pakiety (dokument opisany poniżej). |
GET/v1/schema | JSON Schema (2020-12) odpowiedzi /plans. |
Przykładowe zapytanie
curl --compressed \
-H "x-api-key: $ESIMPARK_API_KEY" \
-H 'If-None-Match: "<last ETag>"' \
https://uj684erdvk.execute-api.eu-central-1.amazonaws.com/v1/plansPrzykładowa odpowiedź (skrócona: jeden kierunek i dwa jego pakiety)
{
"apiVersion": 1,
"updatedAt": "2026-10-27T10:50:12Z",
"dataVersion": "92291e58d693d2be",
"schema": "/v1/schema",
"provider": {
"name": "eSIM Park",
"website": "https://www.esimpark.com/",
"contact": "partner@esimpark.com"
},
"currencies": [
"USD",
"EUR",
"GBP",
"PLN",
"RON",
"HUF"
],
"pricesIncludeVat": true,
"esimFee": {
"amount": {
"USD": 1.63,
"EUR": 1.36,
"GBP": 1.23,
"PLN": 6.19,
"RON": 7.42,
"HUF": 490
},
"appliesTo": "Purchases that need a new eSIM profile (normally the first purchase). Top-ups onto an eSIM Park eSIM the traveller already has are exempt.",
"waived": {
"from": "2026-09-16T00:00:00+02:00",
"until": "2027-01-01T00:00:00+01:00"
}
},
"planTerms": {
"validityStarts": "first connection to a supported network at the destination",
"delivery": "QR code by e-mail right after payment",
"hotspot": true,
"topUps": true,
"refund": "full refund within 15 days if the eSIM was not installed and no data was used"
},
"linkParameters": {
"cur": "ISO currency code to open the page in, e.g. ?cur=EUR",
"ref": "partner code for attribution, e.g. ?ref=CODE (ask us for one)",
"utm_*": "utm_source / utm_medium / utm_campaign / utm_content are recorded"
},
"destinations": [
{
"id": "torokorszag",
"name": "Turkey",
"type": "country",
"countries": [
{
"iso2": "TR",
"name": "Turkey",
"networks": [
"Turk Telekom Turkey",
"Vodafone Turkey"
]
}
],
"url": "https://www.esimpark.com/esim-turkey.html",
"localizedUrls": {
"en": "https://www.esimpark.com/esim-turkey.html",
"pl": "https://www.esimpark.com/pl/esim-turcja.html"
}
}
],
"plans": [
{
"id": "torokorszag-m-5gb-15d",
"destinationId": "torokorszag",
"name": "Turkey 5 GB / 15 days",
"countries": [
"TR"
],
"dataType": "fixed",
"dataGb": 5,
"dailyDataGb": null,
"validityDays": 15,
"throttling": null,
"prices": {
"USD": 5.9,
"EUR": 4.9,
"GBP": 4.9,
"PLN": 22.9,
"RON": 27.9,
"HUF": 1790
},
"url": "https://www.esimpark.com/esim-turkey.html"
},
{
"id": "torokorszag-xl-3gbday-5d",
"destinationId": "torokorszag",
"name": "Turkey 3 GB/day / 5 days",
"countries": [
"TR"
],
"dataType": "daily",
"dataGb": null,
"dailyDataGb": 3,
"validityDays": 5,
"throttling": {
"afterPercentOfDailyData": 80,
"speedKbps": 128,
"dailyDataCarriesOver": false
},
"prices": {
"USD": 13.9,
"EUR": 11.9,
"GBP": 9.9,
"PLN": 50.9,
"RON": 60.9,
"HUF": 3990
},
"url": "https://www.esimpark.com/esim-turkey.html"
}
]
}Wartości pochodzą z aktualnego dokumentu z chwili budowania tej strony.
Nowe pola opcjonalne mogą pojawić się w każdej chwili — ignoruj te, których nie znasz. Kwoty są w jednostkach głównych (22.9 = 22,90); HUF nie ma części ułamkowej.
Poziom główny
| Pole | Typ | Znaczenie |
|---|---|---|
apiVersion | integer | W tej wersji zawsze 1. |
updatedAt | string (date-time) | Kiedy treść ostatnio się zmieniła — nie kiedy plik zbudowano ponownie. |
dataVersion | string | Odcisk treści; ta sama wartość oznacza brak zmian. Wysyłany też jako ETag. |
schema | string | Ścieżka JSON Schema w tym API (/v1/schema). |
provider | object | nazwa, strona i e-mail kontaktowy. |
currencies | string[] | Kody ISO 4217; każdy obiekt prices ma dokładnie te klucze. |
pricesIncludeVat | boolean | true: ceny są cenami końcowymi z VAT. |
esimFee | object | Jednorazowa opłata za nowy profil eSIM, doliczana do ceny pakietu. |
esimFee.amount | object | Opłata w każdej walucie. |
esimFee.appliesTo | string | Kiedy jest pobierana: przy zakupie wymagającym nowego profilu eSIM (zwykle pierwszym). Doładowania są zwolnione. |
esimFee.waived | object | null | from / until (bez until): w tym okresie opłata nie jest pobierana. |
planTerms | object | Warunki wspólne dla wszystkich pakietów: start ważności, dostawa, hotspot, doładowania, zwrot. |
linkParameters | object | Parametry zapytania obsługiwane przez strony produktów (cur, ref, utm_*). |
destinations | object[] | Jeden wpis na kierunek. |
plans | object[] | Jeden wpis na pakiet, płasko. |
destinations[]
| Pole | Typ | Znaczenie |
|---|---|---|
id | string | Nieprzejrzysty, stały identyfikator — nie parsuj go. |
name | string | Nazwa angielska, jak na stronie produktu. |
type | string | country, region lub global. |
countries | object[] | Każdy objęty kraj. |
countries[].iso2 | string | ISO 3166-1 alpha-2, wielkie litery. |
countries[].name | string | Angielska nazwa kraju. |
countries[].networks | string[] | Sieci partnerskie w tym kraju. |
url | string | Angielska strona produktu. |
localizedUrls | object | Strona produktu w innych językach, według kodu języka. |
plans[]
| Pole | Typ | Znaczenie |
|---|---|---|
id | string | Stały, dopóki pakiet istnieje; inny limit danych lub ważność to nowy id. |
destinationId | string | Wskazuje destinations[].id. |
name | string | np. Turkey 5 GB / 15 days. |
countries | string[] | Objęte kody ISO alpha-2 (te same co kierunku). |
dataType | string | fixed: dataGb na cały okres ważności. daily: dailyDataGb każdego dnia. |
dataGb | number | null | Łączny limit danych w GB (pakiety fixed). |
dailyDataGb | number | null | Dane na dzień w GB (pakiety daily). |
validityDays | integer | Dni od pierwszego połączenia na miejscu. |
throttling | object | null | null: pełna prędkość do wyczerpania danych. |
throttling.afterPercentOfDailyData | number | Po zużyciu tej części dziennego limitu prędkość spada. |
throttling.speedKbps | number | Prędkość po spadku, do następnego dnia. |
throttling.dailyDataCarriesOver | boolean | Niewykorzystane dane dzienne nie przechodzą na kolejny dzień (false). |
prices | object | Cena końcowa w każdej walucie. |
url | string | Strona produktu, na którą kierujesz podróżnego. |
Limity obowiązują na klucz: 5 zapytań na sekundę (krótkie skoki do 10) i 1 000 zapytań dziennie. Licznik dzienny zeruje się o 00:00 UTC. Treść błędu to JSON: {"message": "…"}.
| Status | Kiedy | Odpowiedź |
|---|---|---|
200 | OK | Dokument. |
304 | Wysłano aktualny ETag w If-None-Match | Bez treści — zachowaj swoją kopię. |
403 | Brak, błędny lub wyłączony x-api-key | Missing or invalid x-api-key header. Request a key at partner@esimpark.com. |
403 | Nieznana ścieżka lub metoda | Forbidden. Endpoints: GET /v1/plans, GET /v1/schema with an x-api-key header. |
429 | Ponad 5 zapytań na sekundę | Too many requests (limit: 5 per second). Retry after a short pause. Retry-After: 1 |
429 | Wyczerpany dzienny limit 1 000 zapytań | Daily quota (1000 requests) exceeded; it resets at 00:00 UTC. |
5xx | Chwilowy błąd po naszej stronie | Spróbuj ponownie później z wykładniczym odstępem. |
ETag, Last-Modified i Cache-Control: private, max-age=3600.If-None-Match: jeśli nic się nie zmieniło, dostaniesz 304 bez treści.dataVersion pokazuje, czy coś się ruszyło./v1/./v2/).Korzystając z klucza, akceptujesz poniższe zasady:
Napisz, kim jesteś i jak chcesz korzystać z danych. Zwykle odpowiadamy w ciągu dwóch dni roboczych z adresu partner@esimpark.com.