API Documentation
The Eammu Travel API provides real-time visa requirements, passport index data, embassy locations, airport information, and step-by-step visa guides for 195+ countries. Built for travel apps, visa consultancies, and developers.
✦ Visa Guides are now live
6 static guide pages under /api/v1/visa-guides/. The Passport API now returns a visa_guide_url field that links directly to the relevant guide based on visa status.
https://api.eammu.com⚡ Quick Start
Get your first API response in under 60 seconds.
curl "https://api.eammu.com/api/v1/passport?from=Bangladesh&to=Japan&api_key=eak_your_key"
{
"visa_status": "e-visa",
"visa_guide_url": "https://api.eammu.com/api/v1/visa-guides/e-visa",
"from": { "name": "Bangladesh", "code": "bd" },
"to": { "name": "Turkey", "code": "tr" }
}🔑 Authentication
Every request requires an API key. Pass it as a header (recommended) or query parameter.
x-api-key: eak_your_key
?api_key=eak_your_key
🔄 How It Works
The passport and visa-guides endpoints are designed to work together in a two-step flow. Start with the Passport API to get visa requirements, then use the returnedvisa_guide_urlto show users a full guide for their specific visa type.
?from= and ?to=GET /api/v1/passport?from=Bangladesh&to=Turkey&api_key=eak_…
{
"visa_status": "e-visa",
"visa_guide_url": "https://api.eammu.com/api/v1/visa-guides/e-visa"
}yourapp.com/visa-guides/e-visa.GET /api/v1/visa-guides/e-visa → static JSON guide
visa requiredhttps://api.eammu.com/api/v1/visa-guides/visa-requirede-visahttps://api.eammu.com/api/v1/visa-guides/e-visavisa on arrivalhttps://api.eammu.com/api/v1/visa-guides/visa-on-arrivaletahttps://api.eammu.com/api/v1/visa-guides/etano admissionhttps://api.eammu.com/api/v1/visa-guides/no-admission30 / 60 / 90…null — visa-free has no guide URLnot_applicablenull — same country / territory/api/v1/passportCore travel intelligence endpoint. Pass a passport country to get visa requirements for all destinations — or add ?to= for a single pair. The response includes a visa_guide_url field that points to the relevant visa-guides page, and a full grouped summary when no destination is specified.
fromstringrequiredPassport (origin) country name. Example: BangladeshtostringoptionalDestination country name. Omit to receive all destinations grouped by visa type.api_keystringrequiredYour API key. Can also be passed via x-api-key header.https://api.eammu.com/api/v1/passport?from=Bangladesh&to=Japan&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/passport?from=Bangladesh&api_key=YOUR_KEYcurl "https://api.eammu.com/api/v1/passport?from=Bangladesh&to=Japan&api_key=eak_your_key"
// Single destination — GET /api/v1/passport?from=Bangladesh&to=Turkey
{
"from": {
"name": "Bangladesh",
"flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg",
"code": "bd"
},
"to": {
"name": "Turkey",
"flag": "https://twemoji.maxcdn.com/2/svg/1f1f9-1f1f7.svg",
"code": "tr"
},
"visa_status": "e-visa",
"visa_guide_url": "https://api.eammu.com/api/v1/visa-guides/e-visa"
}X-RateLimit-RemainingNumber of requests remaining in the current periodX-PlanYour current plan: free | pro | enterprise/api/v1/countriesGet a full list of countries with flags and ISO codes. Supports partial name search and code filtering.
namestringoptionalPartial country name, case-insensitive. Example: bangcodestringoptionalISO 2-letter code. Example: bdapi_keystringrequiredYour API keyhttps://api.eammu.com/api/v1/countries?name=Bangladesh&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/countries?code=bd&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/countries?api_key=YOUR_KEYcurl "https://api.eammu.com/api/v1/countries?name=Bangladesh&api_key=eak_your_key"
{
"total": 1,
"countries": [
{
"country": "Bangladesh",
"flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg",
"code": "bd"
}
]
}/api/v1/embassiesFind embassy and consulate locations worldwide. Filter by operator country, host country, or city.
operatorstringoptionalEmbassy home country. Example: BangladeshcountrystringoptionalCountry where embassy is located. Example: JapancitystringoptionalCity filter. Example: Tokyoapi_keystringrequiredYour API keyhttps://api.eammu.com/api/v1/embassies?operator=Bangladesh&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/embassies?country=Japan&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/embassies?city=Tokyo&api_key=YOUR_KEYcurl "https://api.eammu.com/api/v1/embassies?operator=Bangladesh&country=Japan&api_key=eak_your_key"
{
"total": 1,
"embassies": [
{
"operator": "Bangladesh",
"country": "Japan",
"city": "Tokyo",
"type": "embassy",
"website": "https://bdembassytokyo.org",
"latitude": 35.6762,
"longitude": 139.6503
}
]
}/api/v1/airportsSearch global airport data including IATA codes, coordinates, timezone, runway info, and direct flight counts.
countrystringoptionalFilter by country name. Example: BangladeshcitystringoptionalFilter by city. Example: DhakacodestringoptionalIATA code. Example: DACapi_keystringrequiredYour API keyhttps://api.eammu.com/api/v1/airports?code=DAC&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/airports?country=Bangladesh&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/airports?city=Dhaka&api_key=YOUR_KEYcurl "https://api.eammu.com/api/v1/airports?code=DAC&api_key=eak_your_key"
{
"total": 1,
"airports": [
{
"code": "DAC",
"name": "Hazrat Shahjalal International Airport",
"city": "Dhaka",
"country": "Bangladesh",
"lat": "23.8433",
"lon": "90.3978",
"tz": "Asia/Dhaka",
"direct_flights": "37",
"runway_length": "10500"
}
]
}/api/v1/suggestAutocomplete country names with flags and ISO codes. Ideal for search inputs and dropdowns.
qstringrequiredSearch query (min 1 character). Example: banapi_keystringrequiredYour API keyhttps://api.eammu.com/api/v1/suggest?q=ban&api_key=YOUR_KEYhttps://api.eammu.com/api/v1/suggest?q=uni&api_key=YOUR_KEYcurl "https://api.eammu.com/api/v1/suggest?q=ban&api_key=eak_your_key"
{
"suggestions": [
{
"name": "Bangladesh",
"flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e9.svg",
"code": "bd"
},
{
"name": "Barbados",
"flag": "https://twemoji.maxcdn.com/2/svg/1f1e7-1f1e7.svg",
"code": "bb"
}
]
}Static guide endpoints — no parameters required
These endpoints return static JSON content describing a visa type: requirements, step-by-step process, fees, processing time, and tips. They are triggered automatically via the visa_guide_url field in Passport API responses. You can call them directly or render their content in your app's guide pages.No api_key required — these are public static info endpoints.
/api/v1/visa-guides/e-visaStatic guide page returned when a passport holder's visa_status is e-visa. Explains what e-visa is, requirements, step-by-step application process, typical fees, and processing time.
visa_status = "e-visa"in Passport API responsehttps://api.eammu.com/api/v1/visa-guides/e-visacurl "https://api.eammu.com/api/v1/visa-guides/e-visa?"
{
"visa_type": "e-visa",
"label": "E-Visa",
"color": "#00C2FF",
"description": "Apply online before travel. No embassy visit required.",
"requirements": [
"Valid passport (minimum 6 months validity)",
"Digital passport photo (JPEG, white background, under 1MB)",
"Valid email address for confirmation",
"Credit or debit card for online payment",
"Return or onward flight ticket",
"Hotel booking confirmation",
"Proof of sufficient funds"
],
"steps": [
"Visit the official e-visa portal of your destination country.",
"Create an account or proceed as a guest applicant.",
"Fill out the online application form.",
"Upload required documents.",
"Pay the e-visa fee online.",
"Wait for approval email (usually 24–72 hours).",
"Download and print your e-visa approval letter.",
"Present the printed e-visa at the port of entry."
],
"fee": "USD 20–80 (varies by country and nationality)",
"processing_time": "24–72 hours (some instant approvals)",
"validity": "Usually 30–90 days from approval date",
"tips": [
"Only apply through the official government portal.",
"Apply at least 72 hours before your travel date.",
"Print multiple copies of your e-visa approval.",
"Check if your nationality is eligible before applying."
],
"related_links": {
"check_passport": "https://api.eammu.com/api/v1/passport",
"country_details": "https://api.eammu.com/api/v1/countries"
}
}/api/v1/visa-guides/etaStatic guide returned when visa_status is eta. Covers Electronic Travel Authorization requirements, how to apply, validity, and which countries require it.
visa_status = "eta"in Passport API responsehttps://api.eammu.com/api/v1/visa-guides/etacurl "https://api.eammu.com/api/v1/visa-guides/eta?"
{
"visa_type": "eta",
"label": "Electronic Travel Authorization",
"color": "#A855F7",
"description": "An ETA is an electronic entry requirement linked to your passport. Must be obtained before boarding.",
"requirements": [
"Valid passport (min 6 months validity)",
"Valid email address",
"Credit or debit card",
"Return flight ticket"
],
"steps": [
"Go to the official ETA portal of the destination country.",
"Enter your passport details and travel dates.",
"Pay the ETA fee.",
"Receive approval by email (usually within minutes).",
"ETA is linked electronically — no printout required in most cases."
],
"fee": "USD 7–30 (varies by country)",
"processing_time": "Minutes to 72 hours",
"validity": "Usually 1–5 years or multiple trips",
"tips": [
"Apply well in advance — some processing can take up to 72 hours.",
"ETA is linked to your passport number, so carry the same passport you applied with.",
"Confirm ETA eligibility for your specific nationality."
],
"related_links": {
"check_passport": "https://api.eammu.com/api/v1/passport",
"country_details": "https://api.eammu.com/api/v1/countries"
}
}/api/v1/visa-guides/visa-on-arrivalStatic guide for visa-on-arrival destinations. Explains what to bring to the port of entry, fees to expect, and tips to avoid delays.
visa_status = "visa on arrival"in Passport API responsehttps://api.eammu.com/api/v1/visa-guides/visa-on-arrivalcurl "https://api.eammu.com/api/v1/visa-guides/visa-on-arrival?"
{
"visa_type": "visa on arrival",
"label": "Visa on Arrival",
"color": "#00E5A0",
"description": "Get your visa stamp at the airport or border crossing upon arrival. No advance application required.",
"requirements": [
"Valid passport (min 6 months validity)",
"Passport-size photo (usually 1–2 copies)",
"Completed arrival card (available on plane or at border)",
"Cash for visa fee (USD usually accepted)",
"Return or onward ticket",
"Proof of accommodation"
],
"steps": [
"Arrive at the port of entry.",
"Proceed to the Visa on Arrival counter.",
"Submit your passport, photo, and arrival card.",
"Pay the visa fee in cash.",
"Receive your visa stamp and proceed to immigration."
],
"fee": "USD 20–60 (varies by country)",
"processing_time": "10–30 minutes at the counter",
"validity": "Usually 14–30 days",
"tips": [
"Carry exact change in USD — not all counters give change.",
"Queues can be long; arrive early or use priority lanes.",
"Some countries require a separate arrival card — fill it out on the plane."
],
"related_links": {
"check_passport": "https://api.eammu.com/api/v1/passport",
"country_details": "https://api.eammu.com/api/v1/countries"
}
}/api/v1/visa-guides/no-admissionStatic guide returned when entry is not permitted. Explains what no-admission means, why it occurs, and what alternatives may exist.
visa_status = "no admission"in Passport API responsehttps://api.eammu.com/api/v1/visa-guides/no-admissioncurl "https://api.eammu.com/api/v1/visa-guides/no-admission?"
{
"visa_type": "no admission",
"label": "No Admission",
"color": "#FF3B5C",
"description": "Entry to this country is not permitted for your passport. This may be due to diplomatic restrictions or bilateral agreements.",
"reasons": [
"Absence of diplomatic relations between the two countries.",
"Active travel ban or sanction.",
"Bilateral travel restriction agreement."
],
"alternatives": [
"Check if entry is possible via a third country or special permit.",
"Contact the destination country's embassy for exceptions.",
"Consult your country's foreign affairs ministry for guidance."
],
"tips": [
"This restriction is at the country level — individual circumstances rarely override it.",
"Attempting to enter may result in deportation and future travel bans.",
"Restrictions can change — verify with official sources before planning."
],
"related_links": {
"check_passport": "https://api.eammu.com/api/v1/passport",
"embassy_lookup": "https://api.eammu.com/api/v1/embassies"
}
}/api/v1/visa-guides/visa-freeStatic guide for visa-free travel. Explains what visa-free access means, common stay limits, and what travelers still need to carry.
visa_status = "number (e.g. 30, 90)"in Passport API responsehttps://api.eammu.com/api/v1/visa-guides/visa-freecurl "https://api.eammu.com/api/v1/visa-guides/visa-free?"
{
"visa_type": "visa_free",
"label": "Visa Free",
"color": "#FEBC2E",
"description": "No visa required. You can enter and stay for the permitted number of days without any prior application.",
"requirements": [
"Valid passport (min 6 months validity beyond your stay)",
"Return or onward flight ticket",
"Proof of sufficient funds",
"Hotel booking or proof of accommodation"
],
"steps": [
"Arrive at the destination country's port of entry.",
"Proceed to immigration with your passport.",
"Present your return ticket and accommodation proof if asked.",
"Receive your entry stamp and note the permitted stay duration."
],
"tips": [
"Visa-free does not mean unlimited stay — respect the max days allowed.",
"Overstaying can result in fines, deportation, or future bans.",
"Some countries grant visa-free access but still require travel insurance."
],
"related_links": {
"check_passport": "https://api.eammu.com/api/v1/passport",
"country_details": "https://api.eammu.com/api/v1/countries"
}
}/api/v1/visa-guides/visa-requiredStatic guide for visa-required destinations. Covers embassy application steps, document checklist, and typical processing times.
visa_status = "visa required"in Passport API responsehttps://api.eammu.com/api/v1/visa-guides/visa-requiredcurl "https://api.eammu.com/api/v1/visa-guides/visa-required?"
{
"visa_type": "visa required",
"label": "Visa Required",
"color": "#FF6B35",
"description": "You must obtain a visa from the destination country's embassy or consulate before travel.",
"requirements": [
"Valid passport (min 6 months validity)",
"Completed visa application form",
"Recent passport-size photographs",
"Bank statements (last 3–6 months)",
"Confirmed flight itinerary",
"Hotel booking or invitation letter",
"Travel insurance (some countries require it)",
"Visa fee payment receipt"
],
"steps": [
"Locate the nearest embassy or consulate of your destination country.",
"Download and complete the official visa application form.",
"Gather all required supporting documents.",
"Book an appointment at the embassy (if required).",
"Submit your application and pay the visa fee.",
"Wait for processing (typically 5–15 business days).",
"Collect your passport with visa stamp or denial letter.",
"Travel within the visa validity period."
],
"fee": "USD 30–200 (varies by country and visa type)",
"processing_time": "5–15 business days",
"validity": "Varies — typically 30–180 days",
"tips": [
"Apply well in advance — at least 4–6 weeks before travel.",
"Double-check document requirements on the official embassy website.",
"Use the embassy locator to find the nearest office.",
"Some countries offer express processing for an additional fee."
],
"related_links": {
"check_passport": "https://api.eammu.com/api/v1/passport",
"embassy_lookup": "https://api.eammu.com/api/v1/embassies"
}
}⚠️ Error Codes
All errors return JSON with an error field.
400Bad RequestMissing required parameter. Example: ?from= is required on the passport endpoint.401UnauthorizedMissing or invalid API key.403ForbiddenAccount suspended. Contact support@eammu.com.404Not FoundCountry or passport not found. Check spelling — names are case-insensitive.429Too Many RequestsRate limit exceeded. Upgrade plan or wait for daily reset.500Internal ErrorServer error. Try again or contact support.{
"error": "Passport 'xyz' not found"
}📋 Visa Status Values
The visa_status field in Passport API responses is one of the following. Numeric values (30, 60, 90…) indicate visa-free entry for that many days.
📊 Rate Limits
Rate limit info is returned in response headers on every request.
X-RateLimit-RemainingRequests remaining in current periodX-PlanYour current plan: free | pro | enterprise