# Introduction

> FX-Port is a unified travel API for flights, hotels, eSIMs and more: one integration, many suppliers, best available prices.

Source: https://fx-port.com/docs

**FX-Port** is a unified travel API. One integration gives you **flights, hotels, eSIMs, and more**,
sourced across many suppliers and returned with the best available prices — no per-supplier code.


- [Flights](https://fx-port.com/docs/flights.md): Search, price and book across GDS, NDC, LCC and direct airlines; hold and pay later, tickets and ACD documents.
- [Hotels](https://fx-port.com/docs/hotels.md): Geo search around a point, hotel content, rates, and bookings that confirm at once; vouchers and cancellation.
- [eSIMs](https://fx-port.com/docs/esims.md): Data packages in 190+ countries: order, top up, usage and installation instructions.
- [Account](https://fx-port.com/docs/account.md): Balances, the financial ledger, booking history across products and the supplier list.


More products are on the way.


> [!WARNING]
> **Work in progress.** FX-Port is actively expanding: more suppliers, more GDS/NDC connections,
> and new products. We aim to **avoid breaking changes** — any breaking or major change ships under
> a **new API version** so your current integration keeps working. Have feedback, a feature request,
> or found a bug? Email us at [dev@fx-port.com](mailto:dev@fx-port.com).

> [!CAUTION]
> **API keys can trigger real financial debits.** A Read+Write key creates bookings and charges your
> agency balance. **Never** expose keys in front-end code, mobile apps, or public repos — always call
> the API from your backend. See [Security](https://fx-port.com/docs/security.md) for the full guide.


## Get API access in minutes

There is **no approval queue, no agreement to sign, and no deposit** required to start building:
the sandbox is self-serve from day one. (Live keys work once your agency is approved.)


**Step 1**

**Create an account** — sign up at [fx-port.com/register](https://fx-port.com/register).
Takes about a minute.

**Step 2**

**Generate your API keys** — open the [API page](https://fx-port.com/dashboard/api) in your
dashboard and create a key. Start with a sandbox key (`fxp_test_`) to build and test for free.

**Step 3**

**Start building** — your first search call works immediately. See the
[quick start](#quick-start-flights-in-3-calls) below.

> [!NOTE]
> **Sandbox is free and unlimited to explore.** You only need a funded balance when you want to
> issue real bookings with a `fxp_live_` key — see [Environments](https://fx-port.com/docs/environments.md).


## Base URL

~~~
https://api.fx-port.com
~~~

All paths are prefixed with `/api/v1/`. **One URL for all environments** — live vs sandbox is
determined by your API key prefix (`fxp_live_` or `fxp_test_`).

## Where to start


- [Quickstart](https://fx-port.com/docs/quickstart.md): Get a sandbox key, then search, price and book a flight in about ten minutes.
- [Security](https://fx-port.com/docs/security.md): Key handling, booking-ownership authorization, and API security best practices. Read this first.
- [Authentication](https://fx-port.com/docs/authentication.md): API keys, permission levels, and environments.
- [Conventions and naming](https://fx-port.com/docs/conventions.md): Names, ids, money, dates, and the legacy names that still work.
- [Errors](https://fx-port.com/docs/errors.md): One error body for every endpoint, every code, and how to retry safely.
- [Rate limits](https://fx-port.com/docs/rate-limits.md): The limits per key, what a 429 means and how to stay below them.
- [Streaming](https://fx-port.com/docs/streaming.md): Receive flight offers supplier by supplier as server-sent events.
- [Environments & Postman](https://fx-port.com/docs/environments.md): Live vs sandbox, and downloadable Postman collections.
- [Suppliers](https://fx-port.com/docs/suppliers.md): Discover every active supplier and its capabilities.


## Quick start (flights, in 3 calls)


**Step 1**

**Search** — `POST /api/v1/get_flights`. Offers are in `suppliers[].results.offers[]`. Save the `searchId` of the supplier entry and the `id` of the offer.

**Step 2**

**Price** — `POST /api/v1/flights/price_flight` with that `search_id` and `offer_id`. Required
before booking.

**Step 3**

**Book** — `POST /api/v1/flights/book_flight` with `booking_type: "issue"`, the passengers, and
contact details. Tickets are issued immediately.


~~~bash
# 1. Search
curl --request POST \
  --url https://api.fx-port.com/api/v1/get_flights \
  --header 'Authorization: Bearer fxp_test_YOUR_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "origin": "ALG",
    "destination": "CDG",
    "departure_date": "2026-12-15",
    "cabin_class": "economy",
    "passengers": {
      "adults": 1
    }
  }'
~~~

Continue with the [Quickstart](https://fx-port.com/docs/quickstart.md) (a complete, tested program) and the full [Flight booking flow →](https://fx-port.com/docs/flights/booking-flows.md)

## Quick start (eSIMs, in 3 calls)


**Step 1**

**List packages** — `GET /api/v1/esims/packages?country=france`. Save a package `id` (also returned as `package_id`).

**Step 2**

**Create the order** — `POST /api/v1/esims/orders` with that `package_id` plus the traveler's
`email` and `phone` (both required — the traveler receives the QR code and setup instructions
by email). Returns the eSIM `iccid` immediately (`data.iccid`, also `data.sim.iccid`).

**Step 3**

**Top up later** — `GET /api/v1/esims/topup-packages/{iccid}` to see what's available for that
exact eSIM, then `POST /api/v1/esims/topups` with one of the returned package IDs.


~~~bash
# 1. List packages
curl --request GET \
  --url 'https://api.fx-port.com/api/v1/esims/packages?country=france' \
  --header 'Authorization: Bearer fxp_test_YOUR_KEY'
~~~

Continue with the full [eSIMs overview →](https://fx-port.com/docs/esims.md)

## Built with AI tools?

Point your AI coding assistant at these machine-readable files for accurate, up-to-date context:

| URL | Content |
|---|---|
| [`/llms.txt`](https://fx-port.com/llms.txt) | Page index — titles, URLs, descriptions (lightweight) |
| [`/llms-full.txt`](https://fx-port.com/llms-full.txt) | Full documentation text |
| [`/openapi.json`](https://fx-port.com/openapi.json) | OpenAPI 3.1 description of every endpoint |
| `<page>.md` | Any page as Markdown, for example `/docs/flights/book.md` |

See [Use these docs with AI](https://fx-port.com/docs/ai-tools.md) for a ready-to-paste prompt and how to build an agent on the API.

## Contact

Questions, feedback, or issues? Email the developer team at
[dev@fx-port.com](mailto:dev@fx-port.com). Get your API keys at
[fx-port.com/dashboard/api](https://fx-port.com/dashboard/api).
