Ada Vegas Travel
EnglishEspañolTürkçe
Acenta ve mayoristalar için Partner API

Ada Vegas turlarını kendi sitenizde satın

Basit ve güvenli bir REST API: turlarımızı listeleyin, kesin fiyat alın, rezervasyon oluşturun ve durumunu izleyin. Hepsi ön ödemeli kredi bakiyenizden işler. Ada Vegas her satıştan anında haberdar olur.

Bizimle çalışmak ister misiniz? API'yi dene Dokümantasyonu oku
Taban URL: https://api.adavegastravel.com/v1
Canlı katalog

Turlar, sezonlar, çocuk fiyatları, grup sınırları, oteller, rehberler ve fotoğraflar TR / EN / ES.

Kesin teklif

Tek çağrı; tarih, yetişkin, çocuk ve odaya göre nihai fiyatı verir. Rezervasyonla her zaman aynıdır.

Ön ödemeli kredi

Her satış bakiyenizden düşer. İstediğiniz an portalınızdan kartla bakiye yükleyin.

Webhook ve sandbox

Her rezervasyon değişikliği için imzalı webhook ve baştan sona denemek için ücretsiz sandbox anahtarı.

4 adımda başlayın

  1. Müşteri portalına girin ve API ve Entegrasyon sayfasını açın.
  2. Bir Sandbox anahtarı oluşturun ve aşağıdaki örnekleri deneyin.
  3. Canlı anahtar oluşturun, sunucu IP'lerinize kısıtlayın ve bir webhook URL'si ekleyin.
  4. Bakiye yükleyin ve yayına alın. Rezervasyonları Ada Vegas onaylar; otomatik onay sizde açıksa anında onaylanır.

Kaynaklar

Müşteri portalı →

Anahtarlar, bakiye, rezervasyonlar ve istek günlüğü

API dokümantasyonu →

Eksiksiz başvuru, örnekler ve hata kodları

Hazır web sitesi →

Kendi hostinginize yükleyeceğiniz, yalnızca önyüzden oluşan seyahat sitesi: hesap yöneticinize sorun veya portaldaki “Web sitem” bölümünü açın.

Webhook →

Olaylar, içerik ve imza doğrulama

API'yi hemen deneyin

Herkese açık demo: hesap gerekmez. Örnek turlar döner, gerçek veriye hiç dokunmaz. Bir istek seçin, isterseniz düzenleyin ve Gönder'e basın. Burada oluşturduğunuz rezervasyonlar gerçek API'deki gibi sorgulanabilir ve iptal edilebilir.

X-Api-Key: demo-key-adavegas
X-Api-Secret: demo-secret-adavegas
Yanıt: —
{}
Bizimle çalışmak ister misiniz?

Henüz iş ortağımız değil misiniz? Acentanızı veya şirketinizi kısaca anlatın; hesabınız, fiyatlarınız ve API erişiminiz için size dönelim.

Bize e-posta gönderin · info@adavegastravel.com

Dokümantasyon

1. Genel bakış

Partner API, HTTPS üzerinden çalışan JSON/REST bir API'dir. Müşteri portalınızda yapabildiğiniz her şey (turları görme, teklif alma, rezervasyon, iptal, bakiye sorgulama) programatik olarak da yapılabilir.

Siteniz turları listeler→Yolcu tarih ve kişi sayısı seçer→GET /quote kesin fiyat→POST /bookings→Tutar kredinizden düşer→Onay (anında veya Ada Vegas)→Size webhook

2. Hızlı başlangıç

  1. Portalınızda API ve Entegrasyon → Anahtarlar bölümünden anahtar oluşturun. Önce ücretsiz denemek için Sandbox anahtarı oluşturun. Secret yalnızca bir kez gösterilir.
  2. İsterseniz anahtarı sunucu IP'lerinize kısıtlayın (Güvenilen IP).
  3. API'yi çağırın:
curl "https://api.adavegastravel.com/v1/services?date=2026-11-10&pax=2" \
  -H "X-Api-Key: YOUR_KEY" \
  -H "X-Api-Secret: YOUR_SECRET" \
  -H "Accept-Language: tr"

Taban URL: https://api.adavegastravel.com/v1. Henüz hesabınız yok mu? Herkese açık demo bilgileriyle hemen deneyin: anahtar demo-key-adavegas, secret demo-secret-adavegas. Kendi canlı ve sandbox anahtarlarınız hesabınız onaylandığında verilir.

Tam örnek: teklif, rezervasyon, sorgu

# 1. 2 yetişkin + 1 çocuk için kesin fiyat
curl "$BASE/services/12/quote?date=2026-11-10&pax=2&children=1" -H "X-Api-Key: $KEY" -H "X-Api-Secret: $SECRET"

# 2. rezervasyonu oluştur (idempotency anahtarı sayesinde tekrar denemek güvenli)
curl -X POST "$BASE/bookings" \
  -H "X-Api-Key: $KEY" -H "X-Api-Secret: $SECRET" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: order-10045" \
  -d '{"service_id":12,"pax":2,"children":1,"service_date":"2026-11-10",
       "customer_name":"Ana Pérez","customer_email":"ana@example.com",
       "customer_phone":"+34600111222","notes":"Vejetaryen"}'

# 3. sonra: durum sorgusu
curl "$BASE/bookings/AB-2026-8DB0391E" -H "X-Api-Key: $KEY" -H "X-Api-Secret: $SECRET"

3. Kimlik doğrulama ve güvenlik

BaşlıkDeğer
X-Api-KeyHerkese açık anahtarınız
X-Api-SecretGizli anahtarınız (bizde şifrelenmiş saklanır; geri alınamaz, yalnızca yeniden üretilir)

4. Genel kurallar

KonuKural
BiçimJSON, UTF-8. POST isteklerinde Content-Type: application/json gönderin.
Başarı{"data": ...} (listelerde ayrıca "meta")
Hata{"error": {"code": "...", "message": "..."}}. Mantığınızı code üzerine kurun; message insanlar için yazılmış (şu an Türkçe) bir metindir ve değişebilir.
TarihYYYY-AA-GG. Zaman damgaları ISO-8601 (2026-10-26T10:44:12+00:00).
DilAccept-Language: tr | en | es tur adı ve açıklamalarının dilini seçer (varsayılan tr).
Para birimiTRY, USD, EUR. Tutarlar 2 ondalıklı sayıdır.
Sayfalamapage (1'den), per_page (1–100, varsayılan 25). meta: {page, perPage, total, totalPages}
İstek sınırıAnahtar başına dakikada 60 istek (kayan pencere). Kimlik doğrulaması başarısız istekler IP başına sayılır: bir dakikada 10 başarısız denemeden sonra o IP, geçerli anahtar olsa bile dakikanın kalanında 429 alır. 429 yanıtı Retry-After (saniye) başlığı taşır.
IdempotencyPOST /bookings isteğinde X-Idempotency-Key gönderin (en fazla 128 karakter). Aynı anahtarla 24 saat içinde tekrar gelen istek ilk yanıtı döndürür ve yeni kayıt oluşturmaz; ağ hatasında yeniden denemek çift rezervasyon veya çift kesinti yaratmaz. Her sipariş için benzersiz anahtar kullanın.
SürümHer yanıt X-Api-Version: 1 taşır. Eklemeli değişiklikler (yeni alanlar) sürümü değiştirmez: bilinmeyen alanları yok sayın.

5. Kredi ve bakiye

Her satış ön ödemeli bakiyenizden ödenir (hesap para biriminiz: TRY, USD veya EUR).

Yeni rezervasyonların onaylanıp onaylanmayacağını GET /me, GET /balance veya rezervasyon yanıtındaki credit.can_confirm alanından görebilirsiniz.

6. Rezervasyon yaşam döngüsü

DurumAnlamı
pendingAlındı ve bakiyeden düşüldü, onay bekliyor (Ada Vegas personeli, otomatik onay veya web sitesi rezervasyonlarında siz).
confirmedGaranti altında. Otel, rehber ve program Ada Vegas tarafından ayarlanır.
cancelledİptal edildi; beklemedeyken iptal edildiyse tutar bakiyenize iade edilir.

İzin verilen geçişler: pending → confirmed, pending → cancelled, confirmed → cancelled (onaylı rezervasyon iptallerini Ada Vegas yapar; bizimle iletişime geçin). Her geçiş bir webhook tetikler.

Kanallar (channel alanı): api (entegrasyonunuz), portal (portaldan yapılan), site (kendi web sitenizden yapılan, bkz. 12. bölüm; bunları portalınızda siz onaylarsınız).

7. Fiyat ve teklif

8. Uç noktalar

GET/me

Hesabınız, para biriminiz, webhook durumu ve kredi özeti.

{"data":{"id":22,"name":"Acentanız","status":"active","currency":"EUR","sandbox":false,
 "contact":{"name":"...","email":"...","phone":null},"webhook_configured":false,
 "credit":{"balance":825.28,"currency":"EUR","credit_limit":0,"available":825.28,"can_confirm":true}}}
GET/rates

Dönüşümlerde kullanılan kurlar (taban TRY).

{"data":{"base":"TRY","rates":{"USD":32.1,"EUR":35.2,"TRY":1},"supported":["TRY","USD","EUR"]}}
GET/categories

Size açık tur kategorileri ve ek alan tanımları (key, label, type, required, options).

GET/services

Satabileceğiniz turlar ve bir tarih için fiyatınız.

ParametreAçıklama
dateSezonu seçmek için seyahat tarihi (varsayılan bugün)
paxGösterge toplam için kişi sayısı (varsayılan 1)
currencyTRY|USD|EUR liste fiyatının görüntüleme dönüşümü
category_id, qKategoriye göre süz / ad ve açıklamada ara
page, per_pageSayfalama

Her tur şunları içerir:

AlanNot
id, name, duration_days, category, description, description_htmlAd ve açıklama Accept-Language diline göredir
pricingaudience (agencia veya mayorista), applicable (tarihinize denk gelen sezon: season, start_date, end_date, currency, price, child_price, min_pax, max_pax) ve tüm seasons
accommodationYalnızca otel geceli turlarda: stays[] (otel, start_day, nights, rooms) ve options[] (kişilik tipine göre oda başı fiyat), yoksa null
guidesRehber adı ve dilleri
contentcover_image, gallery[], includes_html, excludes_html, hotel_category_html, important_notes_html, cancellation_policy_html, transfer_details_html, domestic_flight_html, museum_entries_html, child_age_html
fields[]Kategoriye özel nitelikler
HTML alanları temizlenmiştir, doğrudan gösterilebilir. Görsel URL'leri mutlaktır.
GET/services/{id}

Tek tur, aynı yapıda. Yoksa veya size açık değilse 404 service_not_found.

GET/services/{id}/quote
ParametreAçıklama
dateSeyahat tarihi
paxYetişkin sayısı
childrenÇocuk sayısı (child_unit fiyatıyla)
occupancy, roomsKonaklamalı turlar
{"data":{"ok":true,"date":"2026-10-29","pax":2,"children":1,"min_pax":null,"max_pax":null,
 "currency":"EUR","season":"Sonbahar 2026",
 "tour":{"unit":58.24,"child_unit":58.24,"total":174.72},
 "options":[],"accommodation":null,"total":174.72}}

Konaklamalı turda options {occupancy,label,per_room} listeler, accommodation seçilen seçeneği otel bazında breakdown ile verir; total = tur + konaklama. Hatalar: 422 ile no_price_for_date, pax_below_min / pax_above_max (ve limit), invalid_occupancy, no_accommodation_price.

POST/bookings
AlanAçıklama
service_idzorunluTur id
paxzorunluYetişkin, 1–500
childrenisteğe bağlı0–500
service_datezorunluYYYY-AA-GG, bugün veya sonrası (geçmiş tarih → 422 date_in_past)
occupancy, roomstur konaklamalıysaoccupancy yoksa → 422 occupancy_required
customer_name, customer_email, customer_phoneisteğe bağlıYolcunuz (en fazla 190 / 190 / 50 karakter)
notesisteğe bağlıEn fazla 2000 karakter (diyet, alınış oteli, ...)
channel, customer_langyalnız web sitesiBkz. 12. bölüm

201 döner:

{"data":{"booking_ref":"AB-2026-8DB0391E","service_id":1,"service_name":"Istanbul Classics",
  "pax":2,"children":1,"currency":"EUR","unit_price":58.24,"total_price":174.72,
  "service_date":"2026-10-29","customer_name":"Ana Pérez","status":"confirmed",
  "sandbox":false,"channel":"api","sale_total":null,"customer_lang":null,
  "credit_charged":"174.72","hold_reason":null,"created_at":"2026-10-26T10:44:12+00:00"},
 "credit":{"balance":825.28,"currency":"EUR","credit_limit":0,"available":825.28,"can_confirm":true}}

credit_charged, hesap para biriminizde bakiyenizden düşen tutardır. status yalnızca sizde otomatik onay açıksa ve krediniz yeterliyse hemen confirmed olur; aksi halde pending (hold_reason'a bakın).

GET/bookings

Rezervasyonlarınız, en yeniden eskiye. Süzgeçler: status (pending|confirmed|cancelled), customer_email, channel (api|portal|site), from / to (oluşturma tarihi), page, per_page.

GET/bookings/{booking_ref}

Tek rezervasyon (aynı yapıda). 404 booking_not_found.

POST/bookings/{booking_ref}/cancel

Beklemedeki rezervasyonu iptal eder ve tutarın tamamını bakiyenize iade eder. Onaylı rezervasyon için 409 not_cancellable döner: Ada Vegas ile iletişime geçin.

GET/balance

Bakiye özeti ve son hesap hareketleri (?limit=1..100, varsayılan 20).

{"data":{"balance":825.28,"currency":"EUR","credit_limit":0,"available":825.28,"can_confirm":true,
 "transactions":[
  {"type":"charge","amount":-174.72,"currency":"EUR","balance_after":825.28,"booking_ref":"AB-2026-8DB0391E","reference":null,"created_at":"..."},
  {"type":"topup","amount":1000,"currency":"EUR","balance_after":1000,"booking_ref":null,"reference":"BANK-2210","created_at":"..."}]}}

Tipler: topup (+), charge (−), refund (+), adjust (±, Ada Vegas'ın elle düzeltmesi).

GET/site

Portalda tanımladığınız web sitesi yapılandırması (ad, diller, renkler, sayfalar, hangi turların gösterildiği ve kâr payınız). Hazır web sitesi paketi kullanır; yayına alana kadar 404 site_disabled. Bkz. 12. bölüm.

9. Webhook

Sürekli sorgulamak yerine portalda (API ve Entegrasyon → Webhook) bir Webhook URL tanımlayın. Sizin için bir imza anahtarı üretilir.

OlayNe zaman
booking.createdRezervasyon oluştu (kendi API çağrınız dahil)
booking.confirmedOnaylandı (otomatik onay, Ada Vegas personeli veya siz)
booking.cancelledİptal edildi (beklemedeyse iade uygulanır)
POST https://your-site.example/hooks/adavegas
Content-Type: application/json
X-Agency-Webhook-Event: booking.confirmed
X-Agency-Webhook-Signature: sha256=3b1f...e9

{"event":"booking.confirmed","booking_ref":"AB-2026-8DB0391E","status":"confirmed",
 "service_id":1,"service_name":"Istanbul Classics","customer_name":"Ana Pérez","customer_email":"ana@example.com",
 "channel":"api","credit_charged":"174.72","pax":2,"children":1,"service_date":"2026-10-29",
 "currency":"EUR","total_price":174.72,"sandbox":false,"occurred_at":"2026-10-26T10:44:12+00:00"}

İmzayı doğrulama

İmza = HMAC-SHA256(ham istek gövdesi, webhook secret), hex olarak, başına sha256= eklenir. Sabit zamanlı karşılaştırın ve yeniden kodlanmış JSON değil ham gövdeyi kullanın.

// PHP
$raw = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $raw, $secret);
if (!hash_equals($expected, $_SERVER['HTTP_X_AGENCY_WEBHOOK_SIGNATURE'] ?? '')) { http_response_code(401); exit; }

// Node.js (Express, express.raw({type:'application/json'}) ile)
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(req.body).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.get('X-Agency-Webhook-Signature') || ''));

Teslimat

10. Sandbox

Portalda bir Sandbox anahtarı oluşturun. Canlı gibi davranır ancak: rezervasyonlar "sandbox": true işaretlenir, bakiyenizden hiç düşülmez veya iade edilmez ve Ada Vegas personeline bildirim gitmez. Webhook'lar yine gönderilir (sandbox: true ile); böylece alıcınızı uçtan uca test edebilirsiniz. Canlıyla aynı taban URL'yi kullanır; yalnızca anahtar farklıdır. Hesap açmadan hızlıca bakmak için herkese açık demoyu kullanın (örnek veri, hiçbir şey saklanmaz).

11. Tipik entegrasyon (sunucu tarafı)

// PHP 8, cURL
function av(string $method, string $path, ?array $body = null, array $headers = []): array {
    $ch = curl_init('https://api.adavegastravel.com/v1' . $path);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_TIMEOUT => 20,
        CURLOPT_HTTPHEADER => array_merge(['X-Api-Key: ' . getenv('AV_KEY'), 'X-Api-Secret: ' . getenv('AV_SECRET'),
            'Content-Type: application/json', 'Accept-Language: tr'], $headers),
        CURLOPT_POSTFIELDS => $body ? json_encode($body, JSON_UNESCAPED_UNICODE) : null,
    ]);
    $out = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
    return [$code, json_decode((string) $out, true)];
}

[$c, $q] = av('GET', '/services/12/quote?date=2026-11-10&pax=2&children=1');
if ($c === 200) {
    [$c, $b] = av('POST', '/bookings', ['service_id' => 12, 'pax' => 2, 'children' => 1, 'service_date' => '2026-11-10',
        'customer_name' => 'Ana Pérez'], ['X-Idempotency-Key: order-10045']);
    // $b['data']['status'] "confirmed" veya "pending"; müşterinize kendi fiyatınızı gösterin, $b['data']['booking_ref']'i saklayın
}

12. Kendi web sitenizde satış

İki yol var, ikisi de aynı API'yi kullanır:

A. Hazır web sitesi paketi ("Vitrin")

Kendi hostinginize yüklediğiniz, yalnızca önyüzden oluşan bir seyahat sitesidir (PHP 8.1+, veritabanı gerekmez). Site adı, renkler, metinler (ES/EN/TR), sayfalar, hangi turların görüneceği ve kâr payı % portaldan (Web sitem) yönetilir. Ziyaretçi sizin fiyatınızı = Ada Vegas fiyatı + kâr payınız görür, bizim fiyatımızı asla görmez. Ziyaretçinin talebi hesabınızda bir rezervasyona dönüşür (Ada Vegas fiyatı üzerinden bakiyenizden düşer) ve Rezervasyonlar → Web sitem altında görünür; onayı veya iptali siz yaparsınız. Yolcu kendi dilinde e-posta alır ve "Rezervasyonlarım" sayfasını kullanır. Güncellemeler portaldan tek tıkla uygulanır.

B. Kendi siteniz veya sisteminiz

Sayfalarınızı /services ve /quote ile kendiniz yapın, rezervasyonları sunucudan oluşturun. Yayındaki web sitesi yapılandırmanızın kâr payı ve e-posta özelliklerini kullanmak için POST /bookings isteğine şunları ekleyin:

AlanAçıklama
channel: "site"Rezervasyon web sitesi rezervasyonu sayılır: onayı siz yaparsınız ve sale_total (Ada Vegas fiyatı + kâr payınız) kaydedilir ve döner. Yayında bir web sitesi gerekir (yoksa 403 site_disabled).
customer_langtr|en|es, yolcuya giden e-postaların dili
Fiyatları her zaman sunucunuzda /quote sonucundan hesaplayıp gösterin; tarayıcıdan gelen fiyata asla güvenmeyin. Bakiyenizden düşen tutar her zaman Ada Vegas fiyatıdır, sale_total değil.

13. Hatalar

HTTPcodeAnlamı
400validation_errorEksik veya geçersiz alan (service_id, pax, children; service_date zorunludur)
400invalid_bodyGövde geçerli JSON değil
400invalid_currencyPara birimi TRY/USD/EUR değil
401unauthorizedAnahtar veya secret eksik/geçersiz
403forbiddenIP'ye izin yok veya hesap askıda
403site_disabledWeb sitesi kanalı kullanıldı ama site yayında değil / tur gizli
404service_not_foundTur bilinmiyor veya size açık değil
404booking_not_foundBilinmeyen referans
409not_cancellableAPI ile yalnızca beklemedeki rezervasyon iptal edilir
413invalid_bodyGövde 64 KB'tan büyük
422date_in_pastservice_date bugünden önce
422no_price_for_dateO tarih için sezon fiyatı yok
422pax_below_min / pax_above_maxGrup büyüklüğü tur sınırlarının dışında (limit sınırı verir)
422occupancy_required / invalid_occupancy / no_accommodation_priceKonaklamalı turlar: oda tipi eksik, yanlış veya fiyatsız
429rate_limitedÇok fazla istek; Retry-After saniye bekleyin

Kabul edilip krediyi bekleyen rezervasyon bir hata değildir: 201 ve status: "pending", hold_reason: "insufficient_credit" alırsınız.

14. İyi uygulamalar

15. Destek

Sorular, onaylı rezervasyon iptali, limit artırımı, otomatik onay veya entegrasyon yardımı için Ada Vegas hesap yöneticinizle iletişime geçin. Mesajınıza booking_ref ve isteğin saatini ekleyin.

Ada Vegas Partner API v1