Your API Key



Each user has an API key, which is separated from any other API keys. To get or change the API key, send an email to it@viselio.com. After your key request is approved, our support team will contact you with the neccessary information.



Authentication



This is an HTTPS-only API. Authentication is based on the API keys. Each API key is associated with a Viselio user. Results returned from various responses are based upon the role of the user to which the API key is tied.



The API key is passed via HTTP Basic Authentication and goes in the username field. A dummy password, such as X, goes in the password field.



API Endpoints



API requests are made to https://a2.viselio.com/ and https://r.viselio.com/, all requests are served over HTTPS. The current version is v1.



Formats



The API will only support JSON at this time.



Rate Limiting



Each account is allowed to make a limited number of requests per 10 minute period. This limit is based on the number of Docs Sites the account has:



Number of Sites Rate Limit
1 2000 requests every 10 mins
2 3000 requests every 10 mins
3 or more 4000 requests every 10 mins


Headers are returned with every API response to detail the current rate limiting status:



Introduction



Welcome to Viselio for Developers! Just like you, we are enthusiastic web developers and we love to automate things. Please find below the full documentation and API reference in order to reach this goal. We wish you successful programming!

API URI = https://a2.viselio.com/API_KEY

Applications API

Get available visa types and number of entries



Required parameters: office_id, destination, nationality



Header:



GET /YOUR_API_KEY/public/visatypes/office_id/1/destination/cn/nationality/ru HTTP/1.1

{
    "code": 200,
    "status": "success",
    "action": "public:visatypes",
    "method": "get",
    "result": {
        "1": {
            "name": "Tourist",
            "entries_number": {
                "1": {
                    "name": "Single"
                },
                "2": {
                    "name": "Double"
                }
            }
        },
        "2": {
            "name": "Business",
            "entries_number": {
                "1": {
                    "name": "Single"
                },
                "2": {
                    "name": "Double"
                },
                "3": {
                    "name": "Multiple 6 months"
                },
                "4": {
                    "name": "Multiple 1 year"
                }
            }
        }
    }
}

Get available processing times



Required parameters: office_id, destination, nationality, visa_type, entries_number



Header:



GET /YOUR_API_KEY/public/proctime/office_id/1/destination/cn/nationality/ru/visa_type/1/entries_number/1 HTTP/1.1

{
    "code": 200,
    "status": "success",
    "action": "public:proctime",
    "method": "get",
    "result": [
        "Standard",
        "Express (2-3 days)",
        "Urgent (24h)"
    ]
}

Get other params id's



Required parameters: office_id, destination, nationality



Header:



GET /YOUR_API_KEY/public/other/office_id/1/destination/cn/nationality/ru HTTP/1.1

{
    "code": 200,
    "status": "success",
    "action": "public:other",
    "method": "get",
    "result": {
        "marital_status": {
            "1": "Married",
            "2": "Single"
        },
        "accommodation_type": {
            "1": "Hostel",
            "2": "Hotel"
        }
    }
}

Create Application



Required parameters: email, office_id, destination, nationality, visa_type, entries_number, expedited_service



Sample JSON Request:



POST /YOUR_API_KEY/public/appdata HTTP/1.1
Content-type: application/json



{
    "email": "hello@viselio.com",
    "destination": "CH",
    "office_id": 1,
    "nationality": "DE",
    "visa_type": 1,
    "entries_number": 1,
    "expedited_service": 0,
    "lang": "en",
    "email_send": true,
    "first_name": "Friedrich",
    "middle_name": "von",
    "last_name": "Hans",
    "contact_phone": "49 114567890",
    "contact_address_street": "Strasse",
    "contact_address_number": "456b",
    "contact_address_zip": "11000",
    "contact_address_city": "Munich",
    "contact_address_country": "DE",
    "school_name": "7 Schuller",
    "school_street_name": "Strasse Zwei",
    "school_street_num": "123",
    "school_zip": "10115",
    "school_city": "Berlin",
    "school_country": "DE",
    "school_phone": "49 114567890",
    "marital_status": 1,
    "birth_date": "02.05.2017",
    "birth_city": "Berlin",
    "birth_country": "DE",
    "passport_number": "123456789",
    "passport_valid_from": "02.05.2017",
    "passport_valid_to": "02.05.2018",
    "place_of_issue": "Berlin",
    "entry_date": "02.07.2017",
    "exit_date": "12.07.2017",
    "cities_visit_list": [
        {
            "city_name": "Berlin",
            "date_from": "02.07.2017",
            "date_to": "12.07.2017",
            "accommodation": 1,
            "accommodation_name": "Some hotel",
            "street_name": "Strasse Drei",
            "street_number": "32323",
            "zip": "23423"
        }
    ],
    "shipp_name": "Hans Bulger",
    "shipp_street": "Strasse View",
    "shipp_street_number": "546z",
    "shipp_zip": "10115",
    "shipp_city": "Berlin",
    "shipp_country": "DE"
}

{
    "code": 200,
    "status": "success",
    "action": "public:appdata",
    "method": "post",
    "result": {
        "app_id": "48b61cfc-740c-4003-b26e-aa9c2bbf51bf"
    }
}

Get nationalities



Required parameters:



Header:



GET /YOUR_API_KEY/public/nationalites/



     
      {
    "code": 200,
    "status": "success",
    "action": "public:nationalities",
    "method": "get",
    "result": {
        "3": {
            "name": "Albania"
        },
        "11": {
            "name": "Argentina"
        },
        "12": {
            "name": "Armenia"
        },
        "14": {
            "name": "Australia"
        },
        "15": {
            "name": "Austria"
        },
        "21": {
            "name": "Belarus"
        },
        "22": {
            "name": "Belgium"
        },
        "27": {
            "name": "Bolivia"
        },
        "28": {
            "name": "Bosnia And Herzegovina"
        },
        "31": {
            "name": "Brazil"
        },
        "34": {
            "name": "Bulgaria"
        },
        "37": {
            "name": "Cambodia"
        },
        "39": {
            "name": "Canada"
        },
        "44": {
            "name": "Chile"
        },
        "45": {
            "name": "China"
        },
        "48": {
            "name": "Colombia"
        },
        "53": {
            "name": "Costa Rica"
        },
        "55": {
            "name": "Croatia"
        },
        "57": {
            "name": "Cyprus"
        },
        "58": {
            "name": "Czech Republic"
        },
        "59": {
            "name": "Denmark"
        },
        "62": {
            "name": "Dominican Republic"
        },
        "63": {
            "name": "Ecuador"
        },
        "64": {
            "name": "Egypt"
        },
        "65": {
            "name": "El Salvador"
        },
        "68": {
            "name": "Estonia"
        },
        "73": {
            "name": "Finland"
        },
        "74": {
            "name": "France"
        },
        "80": {
            "name": "Georgia"
        },
        "81": {
            "name": "Germany"
        },
        "84": {
            "name": "Greece"
        },
        "89": {
            "name": "Guatemala"
        },
        "97": {
            "name": "Honduras"
        },
        "98": {
            "name": "Hong Kong"
        },
        "99": {
            "name": "Hungary"
        },
        "100": {
            "name": "Iceland"
        },
        "101": {
            "name": "India"
        },
        "102": {
            "name": "Indonesia"
        },
        "105": {
            "name": "Ireland"
        },
        "107": {
            "name": "Israel"
        },
        "108": {
            "name": "Italy"
        },
        "110": {
            "name": "Japan"
        },
        "112": {
            "name": "Jordan"
        },
        "113": {
            "name": "Kazakhstan"
        },
        "117": {
            "name": "Kuwait"
        },
        "120": {
            "name": "Latvia"
        },
        "121": {
            "name": "Lebanon"
        },
        "125": {
            "name": "Liechtenstein"
        },
        "126": {
            "name": "Lithuania"
        },
        "127": {
            "name": "Luxembourg"
        },
        "128": {
            "name": "Macao"
        },
        "129": {
            "name": "Macedonia"
        },
        "132": {
            "name": "Malaysia"
        },
        "133": {
            "name": "Maldives"
        },
        "135": {
            "name": "Malta"
        },
        "141": {
            "name": "Mexico"
        },
        "144": {
            "name": "Monaco"
        },
        "146": {
            "name": "Montenegro"
        },
        "154": {
            "name": "Netherlands"
        },
        "157": {
            "name": "New Zealand"
        },
        "158": {
            "name": "Nicaragua"
        },
        "164": {
            "name": "Norway"
        },
        "165": {
            "name": "Oman"
        },
        "171": {
            "name": "Paraguay"
        },
        "172": {
            "name": "Peru"
        },
        "173": {
            "name": "Philippines"
        },
        "175": {
            "name": "Poland"
        },
        "176": {
            "name": "Portugal"
        },
        "180": {
            "name": "Romania"
        },
        "181": {
            "name": "Russian Federation"
        },
        "195": {
            "name": "Serbia"
        },
        "198": {
            "name": "Singapore"
        },
        "199": {
            "name": "Slovakia"
        },
        "200": {
            "name": "Slovenia"
        },
        "203": {
            "name": "South Africa"
        },
        "116": {
            "name": "South Korea"
        },
        "205": {
            "name": "Spain"
        },
        "206": {
            "name": "Sri Lanka"
        },
        "211": {
            "name": "Sweden"
        },
        "212": {
            "name": "Switzerland"
        },
        "214": {
            "name": "Taiwan"
        },
        "217": {
            "name": "Thailand"
        },
        "229": {
            "name": "Ukraine"
        },
        "230": {
            "name": "United Arab Emirates"
        },
        "231": {
            "name": "United Kingdom"
        },
        "232": {
            "name": "United States"
        },
        "234": {
            "name": "Uruguay"
        },
        "238": {
            "name": "Vietnam"
        }
    }
}


   

Get offices



Required parameters:



Header:



GET /YOUR_API_KEY/public/proctime/offices/


    {
    "code": 200,
    "status": "success",
    "action": "public:offices",
    "method": "get",
    "result": {
        "1": {
            "city": "Bern",
            "country": "Switzerland"
        },
        "2": {
            "city": "Berlin",
            "country": "Germany"
        },
        "3": {
            "city": "Vienna",
            "country": "Austria"
        },
        "4": {
            "city": "Paris ",
            "country": "France"
        },
        "5": {
            "city": "London",
            "country": "United Kingdom"
        }
    }
}

Get destinations



Required parameters: office_id



Header:



GET /YOUR_API_KEY/public/destinations/office_id/1


    {
    "code": 200,
    "status": "success",
    "action": "public:destinations",
    "method": "get",
    "result": {
        "4": {
            "name": "Algeria"
        },
        "7": {
            "name": "Angola"
        },
        "11": {
            "name": "Argentina"
        },
        "16": {
            "name": "Azerbaijan"
        },
        "18": {
            "name": "Bahrain"
        },
        "19": {
            "name": "Bangladesh"
        },
        "24": {
            "name": "Benin"
        },
        "31": {
            "name": "Brazil"
        },
        "35": {
            "name": "Burkina Faso"
        },
        "36": {
            "name": "Burundi"
        },
        "37": {
            "name": "Cambodia"
        },
        "38": {
            "name": "Cameroon"
        },
        "40": {
            "name": "Cape Verde"
        },
        "45": {
            "name": "China"
        },
        "51": {
            "name": "Congo, Democratic Republic"
        },
        "54": {
            "name": "Cote D'Ivoire"
        },
        "62": {
            "name": "Dominican Republic"
        },
        "64": {
            "name": "Egypt"
        },
        "69": {
            "name": "Ethiopia"
        },
        "78": {
            "name": "Gabon"
        },
        "79": {
            "name": "Gambia"
        },
        "82": {
            "name": "Ghana"
        },
        "101": {
            "name": "India"
        },
        "102": {
            "name": "Indonesia"
        },
        "105": {
            "name": "Ireland"
        },
        "107": {
            "name": "Israel"
        },
        "110": {
            "name": "Japan"
        },
        "112": {
            "name": "Jordan"
        },
        "113": {
            "name": "Kazakhstan"
        },
        "114": {
            "name": "Kenya"
        },
        "117": {
            "name": "Kuwait"
        },
        "118": {
            "name": "Kyrgyzstan"
        },
        "121": {
            "name": "Lebanon"
        },
        "130": {
            "name": "Madagascar"
        },
        "131": {
            "name": "Malawi"
        },
        "134": {
            "name": "Mali"
        },
        "145": {
            "name": "Mongolia"
        },
        "149": {
            "name": "Mozambique"
        },
        "150": {
            "name": "Myanmar"
        },
        "151": {
            "name": "Namibia"
        },
        "153": {
            "name": "Nepal"
        },
        "159": {
            "name": "Niger"
        },
        "160": {
            "name": "Nigeria"
        },
        "165": {
            "name": "Oman"
        },
        "166": {
            "name": "Pakistan"
        },
        "181": {
            "name": "Russian Federation"
        },
        "182": {
            "name": "Rwanda"
        },
        "198": {
            "name": "Singapore"
        },
        "116": {
            "name": "South Korea"
        },
        "206": {
            "name": "Sri Lanka"
        },
        "207": {
            "name": "Sudan"
        },
        "214": {
            "name": "Taiwan"
        },
        "215": {
            "name": "Tajikistan"
        },
        "216": {
            "name": "Tanzania"
        },
        "217": {
            "name": "Thailand"
        },
        "219": {
            "name": "Togo"
        },
        "224": {
            "name": "Turkey"
        },
        "228": {
            "name": "Uganda"
        },
        "229": {
            "name": "Ukraine"
        },
        "235": {
            "name": "Uzbekistan"
        },
        "237": {
            "name": "Venezuela"
        },
        "238": {
            "name": "Vietnam"
        },
        "244": {
            "name": "Zambia"
        },
        "245": {
            "name": "Zimbabwe"
        }
    }
}

Requirements API

Get All Nationalities



Header:



GET https://r.viselio.com/api/allNationalities/4597065b0f5abc60b0311cf28f317229

{
      "code": 200,
      "status": "success",
      "action": "public:other",
      "method": "get",
      "result": 
              {
                "id":"1",
                "name":"Afghanistan"
              },
              {
                "id":"3",
                "name":"Albania"
              },
              {
                "id":"4",
                "name":"Algeria"
              },
              {
                "id":"6",
                "name":"Andorra"
              },
              {
                "id":"7",
                "name":"Angola"
              },
              {
                "id":"8",
                "name":"Anguilla"
              }...
  }

Check If User needs a Visa



Required parameters: country_from_id, country_to_id



Header:



GET https://r.viselio.com/api/timShort/4597065b0f5abc60b0311cf28f317229/country_from_id/country_to_id

{
  "data":{
    "note_en":"Please contact office.",
    "visa_required":"Yes"
  }
}

Get price calculation



Required parameters: office_id, destination, nationality, visa_type, entries_number, expedited_service



Header:



GET /API_KEY/public/prices/office_id/1/destination/cn/nationality/ru/visa_type/1/entries_number/1/expedited_service/0 HTTP/1.1

{
                        "code": 200,
                        "status": "success",
                        "action": "public:prices",
                        "method": "get",
                        "result": {
                            "without_vat": {
                                "price_total": 109.6379,
                                "price_ambassy_fee": 40,
                                "price_vsh_fee": 0,
                                "price_fee": 69.6379
                            },
                            "with_vat": {
                                "price_total": 115,
                                "price_ambassy_fee": 40,
                                "price_vsh_fee": 0,
                                "price_fee": 75
                            },
                            "vat_percent": 7.7,
                            "currency": "CHF"
                          }
                        }