Travel GDS Integration Documentation

GDSHub API documentation header

GDSHub API

Direct Galileo / Travelport integration via simple text commands. Issue tickets, manage PNRs, and automate workflows.

Version 1.0 – Production Ready ✔ Completely Free to Use

Overview

The GDSHub API provides a command‑based interface to Global Distribution Systems (Galileo / Travelport). It handles flight availability, passenger name records, payment methods, ticket issuance, and reissues. All requests are POST and responses are JSON.

To obtain your personal API key, log in to your account and navigate to your dashboard. There you can generate and manage your API credentials.

🆓 Free API: The GDSHub API is offered at no cost. There are no hidden charges, no usage limits, and no subscription fees. We believe in empowering developers and travel professionals with open access to GDS data.

Authentication

Every request must include your registered email and API key.

Parameter Description Required
emailYour registered email addressYes
api_keyYour personal API key (generate from your dashboard)Yes
actionMust be execute_commandYes
commandThe Galileo command (e.g. an26MAYSHJCAI, TTP, FPCASH)Yes
Note: The request_count is automatically incremented for each successful call. You can monitor your usage from your account dashboard.

Endpoint

POST https://gdshub.pro/account/api/v1/1t/1t

All requests must be sent via POST with Content-Type: application/x-www-form-urlencoded or application/json.

Common Commands

CommandDescription
an26MAYSHJCAISearch flights from SHJ to CAI on 26 May
NM1AHMEDAdd a passenger name
SS1Y1Select seat 1Y on segment 1
FPCASHSet payment method to Cash
APAdd agency address (required for ticketing)
TTPIssue the ticket
I or IGClear all lines
IREnd the session

Response Format

A typical success response contains success, output (the command result), and session data (current PNR, segments, etc.).

✅ Successful ticket issuance:
{
  "success": true,
  "output": "TICKET ISSUED SUCCESSFULLY\nPNR: 32JBQP\nPASSENGERS: 1 | SEGMENTS: 1\nTOTAL AMOUNT: AED 2,340.00\nBASE FARE: AED 1,650.00\nTAX: AED 690.00\n\nTICKET NUMBERS:\nPAX 1: 869-7041540806",
  "session": []
}
❌ Error response (missing payment):
{
  "success": true,
  "output": "CANNOT ISSUE TICKET - MISSING ELEMENTS:\n• NO VALID PAYMENT METHOD SET\n\nThere is messing:\nNEED NAMES , PAYMENT METHOD , AP , PRICE , TICKING",
  "session": []
}

Code Examples

Below are ready‑to‑run examples in popular languages. Replace the email and API key with your own.

curl -X POST https://gdshub.pro/account/api/v1/1t/1t \
  -d "email=your@email.com" \
  -d "api_key=YOUR_API_KEY" \
  -d "action=execute_command" \
  -d "command=an26MAYSHJCAI"
<?php
$data = [
    'email'    => 'your@email.com',
    'api_key'  => 'YOUR_API_KEY',
    'action'   => 'execute_command',
    'command'  => 'FPCASH'
];

$ch = curl_init('https://gdshub.pro/account/api/v1/1t/1t');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>
import requests

url = "https://gdshub.pro/account/api/v1/1t/1t"
payload = {
    "email": "your@email.com",
    "api_key": "YOUR_API_KEY",
    "action": "execute_command",
    "command": "TTP"
}

response = requests.post(url, data=payload)
print(response.json())
const axios = require('axios');

const params = new URLSearchParams();
params.append('email', 'your@email.com');
params.append('api_key', 'YOUR_API_KEY');
params.append('action', 'execute_command');
params.append('command', 'an26MAYSHJCAI');

axios.post('https://gdshub.pro/account/api/v1/1t/1t', params)
  .then(res => console.log(res.data))
  .catch(err => console.error(err));
#!/bin/bash
EMAIL="your@email.com"
API_KEY="YOUR_API_KEY"
COMMAND="SS1Y1"

curl -X POST https://gdshub.pro/account/api/v1/1t/1t \
  -d "email=$EMAIL" \
  -d "api_key=$API_KEY" \
  -d "action=execute_command" \
  -d "command=$COMMAND"
require 'net/http'
require 'uri'

uri = URI('https://gdshub.pro/account/api/v1/1t/1t')
params = {
  email: 'your@email.com',
  api_key: 'YOUR_API_KEY',
  action: 'execute_command',
  command: 'IG'
}

response = Net::HTTP.post_form(uri, params)
puts response.body
package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
)

func main() {
    data := url.Values{}
    data.Set("email", "your@email.com")
    data.Set("api_key", "YOUR_API_KEY")
    data.Set("action", "execute_command")
    data.Set("command", "FPCASH")

    resp, _ := http.PostForm("https://gdshub.pro/account/api/v1/1t/1t", data)
    defer resp.Body.Close()
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

Tips & Best Practices

  • Session persistence: The API maintains a session per email – you can run a sequence of commands (search → add name → payment → ticket) without losing context.
  • Command chaining: Multiple commands can be sent in one request by separating them with semicolons: command=NM1AHMED;SS1Y1;FPCASH;TTP
  • Error handling: Always check the success field. The output field contains human‑readable messages.
  • Rate limiting: Your request_count is tracked; if you need higher limits, contact support.