viagogo API Documentation

website·Indexed 34 days ago

https://developer.viagogo.net

Official documentation for the viagogo API, connecting applications to the ticket marketplace. Includes guides and references for the Catalog API (1.0.0.40), Sales API (2.249.0.0), Account API (2.249.0.0), Inventory API (2.249.0.0), and Webhooks API (2.249.0.0). Covers OAuth2 authentication, HAL-based responses, barcode allocation, and the GogoKit client library.

Tokens
23.5K
Snippets
82
Records
129
Agent score
50%

What's inside viagogo

  1. Overview of the viagogo API technical specifications

    The viagogo API allows applications to search for events, view event details, purchase tickets, and list tickets on the viagogo platform.

    Technical requirements:

    • Protocol: All API access is over HTTPS via the api.viagogo.net domain.
    • Payload Format: Requests and responses use application/hal+json (JSON with hyperlinks).
    • CORS: Cross-origin resource sharing is supported for secure interaction from client-side web applications.
    • Authentication: All requests must be authenticated using OAuth2. Unauthenticated requests will return a 401 Unauthorized error.
  2. Seller Listing data model

    The Seller Listing object represents a ticket listing on viagogo. It contains detailed information about seating, pricing, ticket quantities, and delivery status. The response follows the application/hal+json format, providing a set of hypermedia links (_links) for performing actions on the listing (such as updating price, seating, or publishing/unpublishing) and embedded resources (_embedded) containing event details and listing constraints.
    {
      "id": 0,
      "created_at": "2019-08-24T14:15:22Z",
      "number_of_tickets": 0,
      "seating": {
        "section": "string",
        "row": "string",
        "seat_from": "string",
        "seat_to": "string",
        "state": {
          "visible_in_venue_map": true
        }
      },
      "display_seating": {
        "section": "string",
        "row": "string",
        "seat_from": "string",
        "seat_to": "string",
        "state": {
          "visible_in_venue_map": true
        }
      },
      "ticket_price": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "updated_at": "2019-08-24T14:15:22Z",
      "external_id": "string",
      "expires_at": "2019-08-24T14:15:22Z",
      "display_number_of_tickets": 0,
      "face_value": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "ticket_proceeds": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "in_hand_at": "2019-08-24T14:15:22Z",
      "is_ticket_concierge": true,
      "is_auto_po": true,
      "barcodes": [
        {
          "seat_ordinal": 0,
          "seat": "string",
          "row": "string",
          "status": "string",
          "barcode_values_sha256_hashed": [
            "string"
          ]
        }
      ],
      "instant_delivery": true,
      "undeliverable": true,
      "purchase_price_per_ticket": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "total_purchase_price": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "sales_tax_paid": true,
      "_links": { ... },
      "_embedded": {
        "constraints": { ... },
        "event": { ... },
        "listing_notes": [ ... ]
      }
    }
  3. Retrieve a seller listing by ID

    Use the GET /sellerlistings/{listingId} endpoint to retrieve detailed information about a specific seller listing. This operation requires OAuth2 authentication with the read:sellerlistings scope.

    Path Parameters:

    • listingId (required, integer <int64>): The unique identifier of the listing.

    Key Response Fields (application/hal+json):

    • id: The listing identifier.
    • number_of_tickets: Number of tickets available for purchase.
    • ticket_price: The price of each ticket (Money object).
    • face_value: The price printed on the ticket (Money object).
    • ticket_proceeds: The amount the seller receives per ticket sold (Money object).
    • seating / display_seating: Seating details for the tickets.
    • external_id: Identifier from an external inventory management system.
    • expires_at: Date when the listing will be automatically unpublished.
    • undeliverable: Boolean indicating if shipment to the buyer cannot be guaranteed before the event.
    • instant_delivery: Boolean indicating if the ticket supports instant delivery.
    • barcodes: Array of barcode information for the tickets.
    GET /sellerlistings/{listingId}
    Authorization: Bearer {access_token}
    Accept: application/hal+json
  4. Understand the viagogo Sale object schema

    The Sale object in the viagogo Sales API provides detailed information about a ticket sale, including financial proceeds, ticket status, and delivery deadlines. Key fields include:

    • id: The unique sale identifier.
    • created_at: Timestamp of sale creation.
    • proceeds and display_proceeds: Money objects representing the total amount the seller receives.
    • number_of_tickets: Total tickets sold.
    • status and status_description: Localized strings describing the current state of the sale.
    • confirm_by: Deadline for the seller to confirm the sale.
    • ship_by: Deadline for the seller to ship tickets.
    • external_listing_id: Identifier from the seller's external inventory system.
    • is_legacy_stubhub_order: Boolean indicating if the order is a legacy StubHub order.
    • barcodes: An array of BarcodeInformation objects.
    • in_hand_at: Timestamp when the seller has the tickets ready for delivery.
  5. Understand the viagogo Sales API response schema

    The viagogo Sales API (version 2.249.0.0) returns sales data in application/hal+json format. The response is paginated and contains an _embedded object with an items array. Each sale item includes detailed information about seating, proceeds, ticket status, and barcodes, as well as HAL links for related actions (e.g., confirming a sale, uploading e-tickets, or tracking shipments).
    {
      "total_items": 0,
      "page": 0,
      "page_size": 0,
      "_links": {
        "self": { "href": "string", "title": "string", "templated": true },
        "first": { "href": "string", "title": "string", "templated": true },
        "last": { "href": "string", "title": "string", "templated": true },
        "next": { "href": "string", "title": "string", "templated": true },
        "prev": { "href": "string", "title": "string", "templated": true }
      },
      "_embedded": {
        "items": [
          {
            "id": 0,
            "created_at": "2019-08-24T14:15:22Z",
            "seating": {
              "section": "string",
              "row": "string",
              "seat_from": "string",
              "seat_to": "string"
            },
            "proceeds": {
              "amount": 0,
              "currency_code": "string",
              "display": "string"
            },
            "number_of_tickets": 0,
            "status": "string",
            "status_description": "string",
            "display_proceeds": {
              "amount": 0,
              "currency_code": "string",
              "display": "string"
            },
            "confirm_by": "2019-08-24T14:15:22Z",
            "ship_by": "2019-08-24T14:15:22Z",
            "external_listing_id": "string",
            "is_legacy_stubhub_order": true,
            "barcodes": [
              {
                "seat_ordinal": 0,
                "seat": "string",
                "row": "string",
                "status": "string",
                "barcode_values": [ "string" ]
              }
            ],
            "in_hand_at": "2019-08-24T14:15:22Z",
            "_links": {
              "self": { "href": "string", "title": "string", "templated": true },
              "sale:confirm": { "href": "string", "title": "string", "templated": true },
              "sale:etickets": { "href": "string", "title": "string", "templated": true },
              "sale:uploadetickets": { "href": "string", "title": "string", "templated": true },
              "sale:shipments": { "href": "string", "title": "string", "templated": true },
              "sale:trackshipment": { "href": "string", "title": "string", "templated": true }
              // ... other action links
            },
            "_embedded": {
              "delivery_method": { "id": 0, "type": 0, "name": "string", "description": "string" },
              "event": { "id": 0, "name": "string", "start_date": "2019-08-24T14:15:22Z" },
              "ticket_type": { "type": "string", "name": "string", "id": 0 },
              "ticketholders": [
                {
                  "id": 0,
                  "full_name": "string",
                  "email_address": "string",
                  "_embedded": {
                    "document_issuing_country": { "code": "string", "name": "string" },
                    "nationality_country": { "code": "string", "name": "string" }
                  }
                }
              ],
              "venue": { "id": 0, "name": "string", "city": "string", "state_province": "string" }
            }
          }
        ]
      }
    }
  6. Understand viagogo API Authentication Overview

    The viagogo API uses the OAuth2 protocol for all authentication. This allows external applications to access public viagogo resources and private user details without requiring the user's password.

    Security Warning: Client IDs, Client Secrets, and access tokens are sensitive credentials and must be treated as passwords; they should never be shared.

  7. Retrieve details for a specific sale

    Retrieve detailed information about a specific sale using the saleId. This endpoint returns the sale status, proceeds, seating information, and critical deadlines such as the confirmation and shipping dates. The response is returned in application/hal+json format.
    GET /sales/{saleId}
  8. Understand viagogo API authentication basics

    The viagogo API uses the OAuth2 protocol for all authentication. This allows external applications to access public viagogo resources and private user details without requiring the user's password. Security is critical: the Client ID, Client Secret, and all access tokens must be treated as sensitive passwords and never shared.
  9. Understand the SellerListing data model

    The SellerListing object represents a ticket listing created by a seller. It contains detailed information about ticket quantity, seating, pricing, and delivery status. The API uses HAL+JSON for responses, providing a _links object for related actions (such as updating price, seating, or publishing/unpublishing) and an _embedded object containing constraints and event details.
    {
      "id": 0,
      "created_at": "2019-08-24T14:15:22Z",
      "number_of_tickets": 0,
      "seating": {
        "section": "string",
        "row": "string",
        "seat_from": "string",
        "seat_to": "string",
        "state": {
          "visible_in_venue_map": true
        }
      },
      "display_seating": {
        "section": "string",
        "row": "string",
        "seat_from": "string",
        "seat_to": "string",
        "state": {
          "visible_in_venue_map": true
        }
      },
      "ticket_price": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "updated_at": "2019-08-24T14:15:22Z",
      "external_id": "string",
      "expires_at": "2019-08-24T14:15:22Z",
      "display_number_of_tickets": 0,
      "face_value": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "ticket_proceeds": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "in_hand_at": "2019-08-24T14:15:22Z",
      "is_ticket_concierge": true,
      "is_auto_po": true,
      "barcodes": [
        {
          "seat_ordinal": 0,
          "seat": "string",
          "row": "string",
          "status": "string",
          "barcode_values_sha256_hashed": [
            "string"
          ]
        }
      ],
      "instant_delivery": true,
      "undeliverable": true,
      "purchase_price_per_ticket": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "total_purchase_price": {
        "amount": 0,
        "currency_code": "string",
        "display": "string"
      },
      "sales_tax_paid": true,
      "_links": { ... },
      "_embedded": { ... }
    }
  10. Request specific fields using sparse fieldsets

    To reduce the size of the API response, you can request only specific fields on a per-type basis. Use the fields parameter for the primary resource and fields[TYPE] for embedded resources. The value must be a comma-separated list of the field names you wish to retrieve.
    # Request id, name, and _embedded for the event, and only the city for the embedded venue
    GET https://api.viagogo.net/v2/events/4695621?fields=id,name,_embedded&fields[venue]=city