Universe Public API

Universe Developer Portal

Welcome to the Universe Developer Portal. You'll find comprehensive guides and documentation to help you start working with Universe as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started
Suggest Edits

Authorize

 
gethttps://www.universe.com/oauth/authorize
curl --request GET \
  --url 'https://www.universe.com/oauth/authorize?client_id=your_client_id&response_type=code&redirect_uri=https%3A%2F%2Fyour_app.com%2Fcallback'
var request = require("request");

var options = { method: 'GET',
  url: 'https://www.universe.com/oauth/authorize',
  qs: 
   { client_id: 'your_client_id',
     response_type: 'code',
     redirect_uri: 'https://your_app.com/callback' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/oauth/authorize?client_id=your_client_id&response_type=code&redirect_uri=https%3A%2F%2Fyour_app.com%2Fcallback")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://www.universe.com/oauth/authorize?client_id=your_client_id&response_type=code&redirect_uri=https%3A%2F%2Fyour_app.com%2Fcallback");

xhr.send(data);
import requests

url = "https://www.universe.com/oauth/authorize"

querystring = {"client_id":"your_client_id","response_type":"code","redirect_uri":"https://your_app.com/callback"}

response = requests.request("GET", url, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Query Params

client_id
string
required

Your application client id

response_type
string
required
redirect_uri
string
required

Your application's registered redirect URI

 

Browser Only

Note that, like all OAuth 2.0 implementations, the GET /authorize request must be performed in a user's browser directly. Typically, this means redirecting them to this URL. Please refer to our in depth guide for more details if you are unfamiliar.

posthttps://www.universe.com/oauth/token
curl --request POST \
  --url https://www.universe.com/oauth/token
var request = require("request");

var options = { method: 'POST', url: 'https://www.universe.com/oauth/token' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/oauth/token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://www.universe.com/oauth/token");

xhr.send(data);
import requests

url = "https://www.universe.com/oauth/token"

response = requests.request("POST", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
    "access_token": "844...bbb",
    "token_type":"bearer",
    "expires_in": 2592000,
    "refresh_token": "006...686",
    "scope": "public", 
    "created_at": 1494964915
}
{
  "error": "invalid_grant",
  "error_description": "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client."
}

Form Data

code
string
required

Auth code received from /authorize flow

grant_type
string
required
client_id
string
required

Your application client id

client_secret
string
required

Your application client secret

redirect_uri
string
required

Your application redirect URI. This must match the redirect_uri value provided in the authorize step.

 
Suggest Edits

Token Info

 
gethttps://www.universe.com/oauth/token/info
curl --request GET \
  --url https://www.universe.com/oauth/token/info \
  --header 'authorization: Beare YOUR_TOKEN'
var request = require("request");

var options = { method: 'GET',
  url: 'https://www.universe.com/oauth/token/info',
  headers: { authorization: 'Beare YOUR_TOKEN' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/oauth/token/info")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Beare YOUR_TOKEN'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://www.universe.com/oauth/token/info");
xhr.setRequestHeader("authorization", "Beare YOUR_TOKEN");

xhr.send(data);
import requests

url = "https://www.universe.com/oauth/token/info"

headers = {'authorization': 'Beare YOUR_TOKEN'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "resource_owner_id": String,
  "scopes": Array<String>,
  "expires_in_seconds": Integer,
  "application": {
    "uid": String
  },
  "created_at": UnixEpochInteger
}
{
  "error":"invalid_request",
  "error_description": "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed."
}

Headers

Authorization
string
required
 

Returns information about the access token, including the user and application it belongs to.

Suggest Edits

Guestlists

Authentication required

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://www.universe.com/api/v2/guestlists
curl --request GET \
  --url https://www.universe.com/api/v2/guestlists \
  --header 'authorization: Bearer YOUR_TOKEN'
var request = require("request");

var options = { method: 'GET',
  url: 'https://www.universe.com/api/v2/guestlists',
  headers: { authorization: 'Bearer YOUR_TOKEN' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/api/v2/guestlists")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer YOUR_TOKEN'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://www.universe.com/api/v2/guestlists");
xhr.setRequestHeader("authorization", "Bearer YOUR_TOKEN");

xhr.send(data);
import requests

url = "https://www.universe.com/api/v2/guestlists"

headers = {'authorization': 'Bearer YOUR_TOKEN'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "data": {
    "guestlist": [{
      "id": String,
      "token": String
      "state": StateEnum,
      "updated_at": ISO8601String,
      "created_at": ISO8601String,
      "buyer": {
        "email": String,
        "name": String,
        "id": String
      },
      "attendee": {
        "email": String,
        "name": String,
        "id": String
      },
      "ticket_type": {
        "name": String,
        "price": Float,
        "id": String
      },
      "order": {
        "discount_code": String,
        "id": String,
        "currency": String
      },
      "listing": {
        "title": String,
        "id": String
      },
      "event": {
        "id": String,
        "start_stamp": UnixEpochInteger,
        "end_stamp": UnixEpochInteger
      },
      "answers": {
        "name": String,
        "value": String
      }
    }]
  },
  "meta": {
    "count": Int, 
    "limit": Int,
    "offset": Int
  }
} 

Query Params

limit
string

The limit on the number of returned documents, max 1000

offset
string

The number of documents to skip in the result set (the starting point for the set returned)

since
string

An ISO8601 timestamp, which filters for documents updated/created after this moment in time.

event_id
string

Restrict the Guestlist to just one Event

listing_id
string

Restrict the Guestlist to just one Listing

Headers

Authorization
string
required
 

The guestlists resource returns a structured response of objects representing tickets for which the authenticated user is the event host. By default, this API returns paginated results for all the objects ever created meeting that requirement - without respect to the specific event, or state of the ticket. Filtering by Listing (the object for which tickets are purchased) or by Event (the specific date of the Listing, which can have many dates). A music festival, for example, may have one Listing with many Events such as Saturday and Sunday.

Note that this API response will return all tickets - including those with a state of cancelled.

A developer wishing to use this resource to synchronize tickets with another system should pay careful attention to the state of each ticket, an enum described below, as well as the event the ticket was purchased for.

In the response, each ticket object will include a state. This may be one of the following possible values

State
Description

closed

The ticket has been paid, and the funds have been transferred to the host

unapproved

The ticket has not yet been approved by the host (configurable via a setting)

unpaid

The ticket is awaiting processing by the payment gateway

pending

The ticket payment has been processed by the gateway, which has not yet confirmed its status

paid

The ticket has been paid using Universe Payments and the event is still in the future, valid

failed

The ticket payment failed, not valid

cancelled

The ticket has been cancelled, any transaction has been reversed, not valid

ended

The ticket has been paid, the event is in the past, but the funds have not yet been transferred to the host

expired

The ticket was originally failed, and the window for retrying has expired (such as the event being in the past)

error

A general error state, not valid

partially_paid

The ticket was purchased with a payment plan, and has been partially paid

Suggest Edits

Current User

Authentication required

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
gethttps://www.universe.com/api/v2/current_user
curl --request GET \
  --url https://www.universe.com/api/v2/current_user \
  --header 'authorization: Bearer YOUR_TOKEN'
var request = require("request");

var options = { method: 'GET',
  url: 'https://www.universe.com/api/v2/current_user',
  headers: { authorization: 'Bearer YOUR_TOKEN' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/api/v2/current_user")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer YOUR_TOKEN'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://www.universe.com/api/v2/current_user");
xhr.setRequestHeader("authorization", "Bearer YOUR_TOKEN");

xhr.send(data);
import requests

url = "https://www.universe.com/api/v2/current_user"

headers = {'authorization': 'Bearer YOUR_TOKEN'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

{
  "current_user": {
    "id": String,
    "slug": String,
    "first_name": String,
    "last_name": String,
    "created_at": ISO8601String,
    "updated_at": ISO8601String,
    "email": String
  }
}

Headers

Authorization
string
required
 

Confirming details about the user who has granted your application is often a critical piece of designing an OAuth integration. The Current User resource is available to enrich your application with user data.

Because this resource requires authentication, it will always return information about the user who owns the access token you are sending with the request.

Deprecation Notice

Some fields returned in this response will be deprecated in the near future. Not to worry, the fields documented here will all continue to be available for the duration of the API lifetime. Extra fields, not documented here, are subject to deprecation without further notice.

 
gethttps://www.universe.com/api/v2/listings
curl --request GET \
  --url 'https://www.universe.com/api/v2/listings?user_id=user_id' \
  --header 'authorization: Bearer YOUR_TOKEN'
var request = require("request");

var options = { method: 'GET',
  url: 'https://www.universe.com/api/v2/listings',
  qs: { user_id: 'user_id' },
  headers: { authorization: 'Bearer YOUR_TOKEN' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/api/v2/listings?user_id=user_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer YOUR_TOKEN'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://www.universe.com/api/v2/listings?user_id=user_id");
xhr.setRequestHeader("authorization", "Bearer YOUR_TOKEN");

xhr.send(data);
import requests

url = "https://www.universe.com/api/v2/listings"

querystring = {"user_id":"user_id"}

headers = {'authorization': 'Bearer YOUR_TOKEN'}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "listings": [
    {
      "id": String,
      "title": String
    }
  ],
  "meta": {
    "count": Int, 
    "limit": Int,
    "offset": Int
  }
} 

Query Params

user_id
string
required

Headers

Authorization
string
required
 

Listings are the core business object of the Universe event host experience. A Listing consists of one or many Events (dates) for which tickets can be purchased. A music festival, for example, may have one Listing with many Events for which tickets are sold.

While authentication is not required on this resource, unauthenticated requests will only return publicly visible data. To retrieve private data, for example Listings which are not yet publicly posted by a user, you must authenticate this request with a user account who does have access.

Deprecation Notice

Some fields returned in this response will be deprecated in the near future. Not to worry, the fields documented here will all continue to be available for the duration of the API lifetime. Extra fields, not documented here, are subject to deprecation without further notice.

Suggest Edits

Discount Codes

Authentication required

 

OAuth2 Auth

Bearer
 Authentication is required for this endpoint.
posthttps://www.universe.com/api/v2/discount_codes
curl --request POST \
  --url https://www.universe.com/api/v2/discount_codes \
  --header 'authorization: Bearer YOUR_TOKEN'
var request = require("request");

var options = { method: 'POST',
  url: 'https://www.universe.com/api/v2/discount_codes',
  headers: { authorization: 'Bearer YOUR_TOKEN' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://www.universe.com/api/v2/discount_codes")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["authorization"] = 'Bearer YOUR_TOKEN'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://www.universe.com/api/v2/discount_codes");
xhr.setRequestHeader("authorization", "Bearer YOUR_TOKEN");

xhr.send(data);
import requests

url = "https://www.universe.com/api/v2/discount_codes"

headers = {'authorization': 'Bearer YOUR_TOKEN'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

Your OAuth2 token is incorrect or has expired

Try the API to see results

Body Params

discount_code
object
 
discount_code.listing_id
string
required

The Listing ID to which the Discount Code will apply

discount_code.code
string
required

The user-facing string that functions as the Diiscount Code itself

discount_code.discount_type
string

Must be either 'percent' or 'fixed'

discount_code.quantity
int32

The number of times the Discount Code can be redemeed

discount_code.rate_ids
array of strings

A list of the Rate IDs (ticket types) for which the Discount Code is redeemable

discount_code.percent
float
required

A percent amount of the discount from 0 to 1. Either this field or discount_code[fixed] must be submitted - only one is actually required

discount_code.fixed
float
required

A dollar-amount of the discount. Either this field or discount_code[percent] must be submitted - only one is actually required

Headers

Authorization
string
required
 

Discount Codes are user-redeemable discounts on tickets. Use this end-point to generate new ones for your event listings.

Authentication Required

Authentication is required to use this resource, additionally Discount Codes can only be created for Listings for which you have management access.