Vughy
Developer API

Build visa-powered travel apps with the Vughy API.

A REST API for travel agencies and partners. Look up countries, fetch visa options between any two countries, render dynamic application forms, list required documents and quote fees — all from one consistent interface.

Domain-restricted keys150+ countriesJSON in / JSON out
Introduction

Vughy Visa & Country API

The Vughy API powers visa workflows for thousands of travel agents. Every endpoint returns JSON, uses simple GET or POST requests, and is authenticated with a single domain-restricted API key.

Simple auth

Single header, x-api-key.

Global coverage

Visas across 150+ countries.

Backend-first

Call from your server, never the browser.

Authentication

Authenticate every request

All API requests require an API key sent in the x-api-key header. Keys are domain-restricted, so make sure to register each domain you plan to use.

Required headers

Headers
{
  "Content-Type": "application/json",
  "x-api-key": "YOUR_API_KEY"
}

Best practice

Always call the API from your backend. Exposing your API key from a browser bypasses the domain restriction and risks abuse.

Base URL

One base, every endpoint

All endpoints are relative to:

Base URL
https://migrate.vughy.com/visaclapapi/api
Endpoints

API Reference

Nine endpoints cover the entire visa journey, from picking a destination to quoting service fees.

01GET/visacountry

🌍 Get Countries List

Returns a list of all countries with basic details (id, name, currency, capital, time zone). Use this to populate country dropdowns across your app.

Endpoint
GET /visacountry
Use case
Populate country dropdowns and pickers.

Request

No parameters required.

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">GET "https://migrate.vughy.com/visaclapapi/api/visacountry" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY"

Sample response

200 OK
{
  "code": 200,
  "message": [
    {
      "id": "1",
      "name": "Andorra",
      "currency": "Euro (EUR)",
      "capital": "Andorra la Vella",
      "time_zone": "UTC+1"
    }
  ]
}
02POST/Getcountryname

🌍 Get Country Details

Fetch detailed info of a country using its country ID. Returns the full record including a long-form description.

Endpoint
POST /Getcountryname
Use case
Show country information on a UI page.

Request body

Request
{
  "countryid": 2
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/Getcountryname" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "countryid": 2 }'

Sample response

200 OK
{
  "status": true,
  "countrydata": [
    {
      "id": "2",
      "name": "United Arab Emirates",
      "currency": "Dirham (AED)",
      "capital": "Abu Dhabi",
      "description": "..."
    }
  ]
}
03POST/visacountry

✈️ Get Visa List

Returns all visa options between two countries. This is the most important endpoint for showing available visa types.

Endpoint
POST /visacountry
Use case
Show available visa types (tourist, business, etc.) between two countries.

Important note

This endpoint is overloaded. GET returns the country list, POST returns the visa data. Document this clearly in your UI.

Request body

Request
{
  "from_country": 107,
  "to_country": 235
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/visacountry" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "from_country": 107, "to_country": 235 }'

Sample Response (trimmed)

200 OK
{
  "status": true,
  "message": [
    {
      "visa_type_id": "1",
      "type_of_visa": "Visiting Visa",
      "price": "17390.00",
      "visa_validity": "10-Year",
      "length_of_stay": "6-Month",
      "time_to_get_visa": "2-Month"
    }
  ]
}
04POST/getvisadetail

📄 Get Visa Details

Fetch detailed information for a specific visa type, including validity and entry type.

Endpoint
POST /getvisadetail
Use case
Display the full visa details page.

Request body

Request
{
  "value": 1,
  "origin_country": 107,
  "destination_country": 235
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/getvisadetail" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "value": 1, "origin_country": 107, "destination_country": 235 }'

Sample response

200 OK
{
  "status": true,
  "country_visa": [
    {
      "type_of_visa": "Visiting Visa",
      "visa_validity": "10-Year",
      "entry_type": "Multiple"
    }
  ]
}
05POST/getform_visa

📝 Get Visa Form

Returns the dynamic form fields required to submit a visa application. Use this to render the application form on the fly.

Endpoint
POST /getform_visa
Use case
Dynamic visa application form generation.

Request body

Request
{
  "gid": 1,
  "visatype": 1,
  "visaid": 1,
  "origincountry": 107,
  "destinationcountry": 235
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/getform_visa" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "gid": 1, "visatype": 1, "visaid": 1, "origincountry": 107, "destinationcountry": 235 }'

Sample response

200 OK
{
  "status": true,
  "formdata": {
    "General information": [
      {
        "label_name": "person name visiting",
        "field_type": "text"
      }
    ]
  }
}
06POST/getvisadocument

📂 Get Visa Documents

Returns the document groups required for a visa application.

Endpoint
POST /getvisadocument
Use case
Show required document categories to the applicant.

Request body

Request
{
  "value": 1,
  "origin_country": 107,
  "destination_country": 235
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/getvisadocument" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "value": 1, "origin_country": 107, "destination_country": 235 }'

Sample response

200 OK
{
  "status": true,
  "documentid": [
    {
      "name": "USA Visiting Visa Documents"
    }
  ]
}
07POST/getlistofdocument

📑 Get Document Details

Returns details of a specific document by ID.

Endpoint
POST /getlistofdocument
Use case
Show individual document details.

Request body

Request
{
  "value": 3
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/getlistofdocument" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "value": 3 }'

Sample response

200 OK
{
  "status": true,
  "listdocument": {
    "name": "passport front and back"
  }
}
08POST/getvisatypename

🏷 Get Visa Type Name

Returns the visa type name from a given type ID.

Endpoint
POST /getvisatypename
Use case
Display visa type labels.

Request body

Request
{
  "typeid": 3
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/getvisatypename" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "typeid": 3 }'

Sample response

200 OK
{
  "status": true,
  "visaname": {
    "name": "Tourist Visa"
  }
}
09POST/Getvisaservicefees

💰 Get Visa Service Fees

Returns visa pricing and service charges for the chosen visa and destination country.

Endpoint
POST /Getvisaservicefees
Use case
Show pricing breakdown to the customer.

Request body

Request
{
  "visaid": 1,
  "intersted_country": 235
}

Sample cURL

cURL
"text-violet-300 font-semibold">curl "text-sky-300">-X "text-violet-300 font-semibold">POST "https://migrate.vughy.com/visaclapapi/api/Getvisaservicefees" \
  "text-sky-300">-H "Content-Type: application/json" \
  "text-sky-300">-H "x-api-key: YOUR_API_KEY" \
  "text-sky-300">-d '{ "visaid": 1, "intersted_country": 235 }'

Sample response

200 OK
{
  "status": true,
  "visaservice": {
    "amount": "17390.00",
    "service_amount": "10000.00"
  }
}

Need help integrating?

Our team helps Scale customers go live in days, not weeks.