Hermeseus

Travel API integration in five minutes

This page takes you from nothing to your first authenticated response. Travel API integration starts with one session call, then every request rides on the session id it returns.

You work against a single REST base URL. Production is https://api.hermeseus.com/api. The sandbox, which runs the same requests without spending real funds, is https://demo.hermeseus.com/api. Every example on this page uses production.

Before you start

You need three things, all issued with your account:

  • An office id, for example OFC-4821.
  • A username for that office.
  • The matching password.

Keep the password server-side. Never ship it in a browser or mobile app.

Step 1: Create a session

Send your credentials to Authenticate/CreateSession. You get back a SessionId. That id authenticates every later call, so store it and reuse it.

POST/Authenticate/CreateSession
curl -X POST https://api.hermeseus.com/api/Authenticate/CreateSession \
  -H "Content-Type: application/json" \
  -d '{
    "OfficeId": "OFC-4821",
    "UserName": "jane.doe",
    "Password": "your-password"
  }'
const res = await fetch("https://api.hermeseus.com/api/Authenticate/CreateSession", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    OfficeId: "OFC-4821",
    UserName: "jane.doe",
    Password: "your-password"
  })
});

const data = await res.json();
const sessionId = data.SessionId;
import requests

res = requests.post(
    "https://api.hermeseus.com/api/Authenticate/CreateSession",
    json={
        "OfficeId": "OFC-4821",
        "UserName": "jane.doe",
        "Password": "your-password",
    },
)

session_id = res.json()["SessionId"]

A success looks like this:

{
  "Success": true,
  "SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f",
  "Error": null
}
Treat the SessionId like the password. Anyone holding it can act as your office until it expires. Keep it on your server and send it only over HTTPS.

If the credentials are wrong, you get Success: false and an error id such as Err0101003. The full list lives on the errors page.

Step 2: Send your first authenticated request

Now use the session. Read your wallet balance from Common/CreditBalance. Put the SessionId in the JSON body, the same way you will for flights, hotels, and activities.

POST/Common/CreditBalance
curl -X POST https://api.hermeseus.com/api/Common/CreditBalance \
  -H "Content-Type: application/json" \
  -d '{ "SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f" }'
const res = await fetch("https://api.hermeseus.com/api/Common/CreditBalance", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    SessionId: "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"
  })
});

const balance = await res.json();
import requests

res = requests.post(
    "https://api.hermeseus.com/api/Common/CreditBalance",
    json={"SessionId": "8f3c81d2-4a5b-4c6d-9e0f-1a2b3c4d5e6f"},
)

print(res.json())

The response reports the balance you can spend, already net of any held funds:

{
  "Success": true,
  "Balance": 4820.50,
  "Currency": "USD",
  "Error": null
}

That is a full round trip. You authenticated, then you called a protected endpoint with the session.

Sessions expire. When a call returns Err0101001, the session is no longer valid. Create a new one and retry the request once.

Where to go next

You now have the one pattern every endpoint follows: authenticate once, then send the SessionId with each request. From here, pick the product you are building on.

  • Flights: search live fares, revalidate, book, and issue a ticket.
  • Hotels: search availability, validate a rate, and confirm a booking.
  • Activities: browse the catalogue, check availability, and book.

The guides in the sidebar walk each of these end to end. If you need the complete legacy reference in one page while these are being built, see the legacy documentation.