NAV

Introduction

Welcome to the FareUpThere Pulse API & SDK documentation. Here you will find all of the information necessary begin adding targeted touch-point surveys to your travel product.

Before you can start using our APIs, you'll need a partner API key. Complete the Pulse contact form to connect with an account manager to get onboarded. Once you’ve activated your key, you’re ready to roll.

Base URL

The FareUpThere API uses seperate URLs staging and production environment requests.

Staging

https://api.fareupthere.com/v1/pulse/

Production

https://api-staging.fareupthere.com/v1/pulse/

Response Format

All API responses are only returned in JSON.

Authentication

To authorize your request, pass your api key and targeted environment in the header:

curl "https://api-staging.fareupthere.com/v1/pulse/<endpoint>" \
  -X <POST / GET / UPDATE / DELETE>
  -H "apikey: <api key>"
  -H "environment: <environment>

Make sure to replace <api key> with your API key, and <environment> with either staging or production.

Pulse uses API keys to allow access to the API. Complete the Pulse contact form to connect with an account manager to get onboarded.

Pulse expects for the API key to be included in all API requests to the server in a header that looks like the following:

apikey: <api key>
environment: <environment>

Surveys API

Add new survey

curl "http://api.fareupthere.com/v1/surveys" \
  -X POST
  -H "apikey: <api key>"
  -H "environment: <environment>

-d

{
  "unique": "false",
  "title": "Did you enjoy the in-flight entertainment?",
  "type": "research",
  "options": [
    "yes",
    "no"
  ],
  "target": {
    "airline": "AA",
    "gender": "female"
  }
}

Response:

{
  "id": "djjmk39f9j3nkd93",
  "status": "success"
}

This endpoint adds a survey. A survey represents a single question that will be presented to user. Surveys include several attribute including answer and targeting options.

HTTP Request

POST http://api.fareupthere.com/v1/surveys

Survey Attributes

*Required

Attribute Description
unique* Boolean Unique surveys can only be answered once by a user
title* String Question for the user
type* String Type of question: research, competition or demographic
options* [String] Answer options, must have atleast 2
target Target Required attributes for user to see this survey question

Target Attributes

Attribute Description
airline Boolean Airline of the flight i.e. AA, WV
gender String Gender of the user: male/female
age_min Int Minimum age of user
age_max Int Maximum age of user
nationality String Nationality of user i.e. US, CA
career String Career of user i.e. education, military
device String OS of device i.e. android, ios
education String Highest completed education of user i.e. high school, college degree
ethnicity String Ethnicity of user i.e. black, asian
height Int Height of user in inches i.e. 72
income_min Int Minimum annual income in USD i.e. 65000
income_max Int Maximum annual income in USD i.e. 225000
marital_status String Marital status of user i.e. married, divorced
political String Politcal affiliation of user i.e. democract, green party
flight_class String Flight class of flight i.e. first_class, economy
home_airport String Airport code of user's home airport i.e. IAH, LAX
departure String Airport code of user's departure airport i.e. IAH, LAX
arrival String Airport code of user's arrival airport i.e. IAH, LAX

Get all surveys

curl "http://api.fareupthere.com/v1/surveys" \
  -X GET
  -H "apikey: <api key>"
  -H "environment: <environment>

The above command returns JSON structured like this:

{
  "surveys": [
    {
      "approved": true,
      "author": "dyhh48fu4bfh840",
      "id": "nj284bfb48f94",
      "created": "05022023",
      "last_updated": "05022023",
      "status": "active",
      "unique": "false",
      "title": "Did you enjoy the in-flight entertainment?",
      "type": "research",
      "options": [
        "yes",
        "no"
      ],
      "responses": [
        {
          "response": "yes",
          "date": "7/30/2022"
        }
      ],
      "target": {
        "airline": "AA",
        "gender": "female"
      }
    }
  ]
}

This endpoint returns a list of all of your surveys.

HTTP Request

GET http://api.fareupthere.com/v1/surveys

Response Attributes

Attribute Description
approved Boolean All surveys must be approved by our validation framework
status String Current status of a survey i.e. active, inactive
unique Boolean Unique surveys can only be answered once by a user
title String Question for the user
type String Type of question: research, competition or demographic
options [String] Answer options, must have atleast 2
target Target Required attributes for user to see this survey question
responses Response Responses collected for this survey
author String User ID of author of survey
id String ID of survey
created String Date the survey was created
last_updated String Last time and date survey was updated

Response Attributes

Attribute Description
date String Date response was submitted
response String Answer to survey question

Get survey by ID

require 'kittn'

api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.get(2)
import kittn

api = kittn.authorize('meowmeowmeow')
api.kittens.get(2)
curl "http://example.com/api/kittens/2" \
  -H "Authorization: meowmeowmeow"
const kittn = require('kittn');

let api = kittn.authorize('meowmeowmeow');
let max = api.kittens.get(2);

The above command returns JSON structured like this:

{
  "id": 2,
  "name": "Max",
  "breed": "unknown",
  "fluffiness": 5,
  "cuteness": 10
}

This endpoint retrieves a specific kitten.

HTTP Request

GET http://example.com/kittens/<ID>

URL Parameters

Parameter Description
ID The ID of the kitten to retrieve

Update survey

require 'kittn'

api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.delete(2)
import kittn

api = kittn.authorize('meowmeowmeow')
api.kittens.delete(2)
curl "http://example.com/api/kittens/2" \
  -X DELETE \
  -H "Authorization: meowmeowmeow"
const kittn = require('kittn');

let api = kittn.authorize('meowmeowmeow');
let max = api.kittens.delete(2);

The above command returns JSON structured like this:

{
  "id": 2,
  "deleted" : ":("
}

This endpoint deletes a specific kitten.

HTTP Request

DELETE http://example.com/kittens/<ID>

URL Parameters

Parameter Description
ID The ID of the kitten to delete

Delete survey

require 'kittn'

api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.delete(2)
import kittn

api = kittn.authorize('meowmeowmeow')
api.kittens.delete(2)
curl "http://example.com/api/kittens/2" \
  -X DELETE \
  -H "Authorization: meowmeowmeow"
const kittn = require('kittn');

let api = kittn.authorize('meowmeowmeow');
let max = api.kittens.delete(2);

The above command returns JSON structured like this:

{
  "id": 2,
  "deleted" : ":("
}

This endpoint deletes a specific kitten.

HTTP Request

DELETE http://example.com/kittens/<ID>

URL Parameters

Parameter Description
ID The ID of the kitten to delete

Pulse Android SDK

Requirements

Pulse iOS SDK

Pulse iOS SDK info

Pulse Dashboard

Pulse dashboard info

Visa API

The Visa API provides all the relevant information required for travelers to travel internationally including but not limited vaccinations and entry requirements.

Currently the following coutries are supported: US, CA, MX, BR, UK, IE, NL, DE, FR, CH, IT, ES, AU, NZ, IN, VN, JP, SG

Coming soon: South Africa, Malaysia

Base URL

https://api.visaasaservice.com/v1/

Get required vaccinations

curl "https://api.visaasaservice.com/v1/vaccinations?country=QA" \
  -X GET
  -H "apikey: <api key>"
  -H "environment: <environment>

The above command returns JSON structured like this:

{
    "country": "India",
    "Vaccinations": "Recommended all: Routine vaccines, Covid-19, Hepatitis A, Hepatitis B, Measles (for infants). Most: Typhoid. Malaria is a risk in some areas.",
    "Country_ISO_Code": "IN",
    "Last_Updated": "01_03_2022"
}

HTTP Request

GET https://api.visaasaservice.com/v1/vaccinations

Query Parameters

*Required

Parameter Description
country* String 2 letter country code i.e. US, QA

Get travel advisory

curl "https://api.visaasaservice.com/v1/travel-advisory?country=IN" \
  -X GET
  -H "apikey: <api key>"
  -H "environment: <environment>

The above command returns JSON structured like this:

{
    "country": "Qatar",
    "Travel_Advisory": "Air border open without restriction. Land borders remain closed. ",
    "Covid_Health_Form": "",
    "Country_ISO_Code": "QA"
}

HTTP Request

GET https://api.visaasaservice.com/v1/travel-advisory

Query Parameters

*Required

Parameter Description
country* String 2 letter country code i.e. US, QA

Get visa details

curl "https://api.visaasaservice.com/v1/visa-exemption?nationality=US&destination=QA" \
  -X GET
  -H "apikey: <api key>"
  -H "environment: <environment>

The above command returns JSON structured like this:

{
    "passport_requirement_for_entry": "Your passport must be valid at least six months from the date of arrival.",
    "Visa_Required": true,
    "Visa_On_Arrival": false,
    "Visa_Online": false,
    "Travel_Authorization": "none",
    "Exemptions": "none"
}

HTTP Request

GET https://api.visaasaservice.com/v1/visa-exemption

Query Parameters

*Required

Parameter Description
nationality* String 2 letter country code i.e. US, QA
destination* String 2 letter country code i.e. US, QA

Get entry requirements

curl "https://api.visaasaservice.com/v1/requirements?location=US&destination=QA&type=tourist" \
  -X GET
  -H "apikey: <api key>"
  -H "environment: <environment>

The above command returns JSON structured like this:

{
    "ISO_Code": "QA_Tourist",
    "Requirements": "Passport and a copy of passport biopage, a visa form, passport-style photo, ID card (resident card if not a US citizen), proof of employment, proof of address (bill or bank statement), letter of invitation or hotel reservation, cover-letter, and filing fees (www.qatarembassy.us/visa/).",
    "Procedures": "You can apply by mail or in person with an appointment. Mail-in applications must be notarized prior to submission. You can request expedited service for an additional $50. Fees are paid by Money Order, payable to the consulate where you are submitting the application. You must also include a prepaid envelope for the return of your passport. Processing time is approximately 7-10 business days.",
    "Contacts": "Embassy of Qatar in Washington, DC\nAddress: 2341 Wyoming Ave, NW\nWashington, DC 20008\nTél.: (+1) 202-483-6410\nFax: (+1) 202-483-6488\nEmail: info@embassyofqatar.org; Consular: consulate@embassyofqatar.org\nWeb: www.embassyofqatar.org\n\nConsulate General of Qatar in New York\nAddress: 241-02 Northern Blvd. 3rd Floor\nLittle Neck, NY 11362\nTél.: (+1) 212 972 2276\nFax: (+1) 718 279 9046\nEmail: visa.new york@mfa.af; info.newyork@mfa.af\nWeb: https://www.newyork.mfa.af/the-general-consulate/contact-us.html\n\nConsulate General of Qatar in Los Angeles\nAddress: 120 South Doheny Drive\nBeverly Hills, CA 90211\nTél.: (+1) 310-288-8334\nFax: (+1) 310-288-8355\nEmail: Question_la@qatarconsulategeneral.org\nWeb: www.qatarconsulategeneral.org",
    "Filing_Tips": "Best Practices for Submitting a Visa Application:\n\n1.        Passport:  Have a valid biometric passport, usually with at least six months of validity remaining, and with free space for visas, usually at least two blank visa pages. If you are not a citizen of the country from which you are applying, you should also submit proof of your residency in the country. This proof may be a work visa, a residence permit, or a long-stay visa. Normally short-term visas like tourist and business visas are not permitted as proof.\n\n2.        Application:  Fill out the electronic/paper visa application form completely, and it must be signed by the applicant.  However, if the applicant is a minor (younger than 18), the parents (or custodial parent) may sign the application on behalf of the minor child. If the child is traveling alone or with only one parent, a minor consent form is normally required by the consulate in order for a visa to be issued.  Some consulates may require an affidavit in lieu of the form, so check the consulate links or contact the consulate if you need a visa for a minor. \n\n3.        Photo: This is usually referred to as a passport-sized photo, even if the consulates provide varying dimensions for the photos. \n\n4.        Letter of support/letter of invitation: This is a letter you or your sponsor write to the consulate requesting the visa you seek, providing details about yourself, your sponsor (if applicable), the purpose of your visit, your time frame, and arrangements you have made. Some countries require that this letter be notarized with a copy of the ID of the sponsor\n\n5.        Proof of sufficient funds: This may include a letter of employment showing you are employed, a copy of your bank statement, an affidavit from your local sponsor guaranteeing your funds for your stay, proof of assets or any other sources of funding to show that you will be accounted for financially during your stay. \n\n6.        Police Reports: The requirements for a police report usually means an FBI report in the US.  FBI reports are obtained through one of the vendors accredited by the FBI to conduct the report: https://www.fbi.gov/services/cjis/compact-council/list-of-approved-channelers.  For other countries, please confirm report requirements with the embassy or consulate before your submission. \n\n7.        Other official documents: Birth certificates and marriage certificates are usually submitted if your spouse and children are seeking a visa based on your approved application, or if you are applying as a family.  Copies of the certificates must normally be certified. Additionally, if the documents are not in one of the official languages of the country to which you are traveling, they must also contain a certified translation into the country’s language. A document in English or translated into English is usually acceptable, unless specifically indicated in the filing procedures. \n\n8.        All required documents, other than identity documents or passports, such as letters of invitation, bank statements, police reports, medical examinations, and proof of medical insurance, must have an issue date not later than three months from the date of your visa application.  \n\n9.        For filing fees, and as good practice, please check the links provided for the embassy or consulate in your jurisdiction to review the detailed requirements and, if necessary, to contact the embassy or consulate. \n\n10.        During the pandemic, many embassies and consulates have reduced their work hours or adopted contactless submission methods. Be sure to contact the embassy or consulate about their preferred submission procedures prior to submitting your visa application. \n",
    "forms": [
        "https://visaasaservice.com/file.pdf"
    ]
}

HTTP Request

GET https://api.visaasaservice.com/v1/requirements

Query Parameters

*Required

Parameter Description
location* String 2 letter country code i.e. US, QA
destination* String 2 letter country code i.e. US, QA
type* String tourist / business

Errors

The Kittn API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The kitten requested is hidden for administrators only.
404 Not Found -- The specified kitten could not be found.
405 Method Not Allowed -- You tried to access a kitten with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The kitten requested has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- You're requesting too many kittens! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.