API reference

List plans

Returns the catalogue you can sell, priced at your tier in your account currency.

GEThttps://app.journeystack.co/api/public/v1/plans

Query parameters

FieldTypeDescription
countrystringISO 3166-1 alpha-2 country code, e.g. SG. Case-insensitive.
regionstringRegion code for multi-country packs, e.g. EU, AS, ME.
typestringfixed (a data bundle) or unlimited (billed per day).
searchstringSubstring match on the plan name.
min_daysintegerOnly plans with validity of at least this many days.
max_daysintegerOnly plans with validity of at most this many days.
pageintegerdefault 11-based page number.
limitintegerdefault 50Results per page, 1–100.

Behaviour you should rely on

  • The type filter is applied after the page is fetched, so a page may return fewer rows than limit when filtering by type.
  • Plans are ordered cheapest first and only active plans are returned.

Request

cURL
curl "https://app.journeystack.co/api/public/v1/plans?country=SG&region=SG" \
  -H "Authorization: Bearer $JS_KEY"

Response

200 OK
{
  "data": [{
      "id": "0f4c1c2e-6f8a-4a09-9f0d-2f1b8c7d5e41",
      "name": "Singapore Unlimited",
      "type": "unlimited",
      "data": {
        "unlimited": true,
        "bytes": null,
        "daily_allowance": "500 MB",
        "throttled_speed": "1 Mbps"
      },
      "validity": { "days": null, "billed_per_day": true, "min_days": 1, "max_days": 365 },
      "coverage": { "type": "country", "code": "SG", "name": "Singapore" },
      "price": { "amount": 2.45, "currency": "USD", "per": "day" }
    }],
  "pagination": { "page": 1, "limit": 50, "total": 2271 }
}

Selected response fields

FieldTypeDescription
iduuidJourney Stack plan ID. Pass this as plan_id when ordering.
typestringfixed or unlimited.
data.bytesinteger|nullTotal data for fixed plans. null on unlimited plans.
data.daily_allowancestring|nullFull-speed allowance per day on unlimited plans.
data.throttled_speedstring|nullSpeed after the daily allowance is used.
validity.daysinteger|nullFixed validity. null when the plan is billed per day.
validity.billed_per_daybooleanWhen true, send days on the order.
price.amountnumberYour price. For per-day plans this is the price for one day.
price.perstringesim or day.

Errors

CodeHTTPWhat to do
unauthorized401Check the Authorization header and that the key is still active in your portal.
account_inactive403Nothing to retry. Contact support@journeystack.co.
rate_limited429Honour `Retry-After` (60 seconds) and back off. Ask support for a higher limit.
internal_error500Retry with the same idempotency key — it can never double-charge you.

Sandbox console

Run this endpoint against the sandbox with your own test key. Nothing is provisioned on the live network and no real money moves.

Try it

/api/public/v1/plans