Skip to content

Resale marketplace, not the primary provider. Prices may be above face value.

anyseats.
← Affiliate program

Developer quickstart · API v1

Events to earnings.
Four simple steps.

Browse our published events, show available tickets and send fans directly to Anyseats checkout. You own the experience on your site. We handle the purchase.

1. Find an event

Create a key in your dashboard, then make requests from your server. Follow next_cursor until it is null to retrieve every page. Keep the same filters when paginating.

curl 'https://anyseats.net/api/affiliate/v1/events?q=Arsenal&limit=25' \
  -H "Authorization: Bearer $ANYSEATS_API_KEY"

2. Read its inventory

Use an event ID from step 1. Prices are per ticket: amount is the full price the buyer pays, fees included, and base_amount + fee_amount break it down (they always add up to amount — read fee_amount rather than assuming a rate). Show the returned benefits, restrictions and delivery information. Use allowed_quantities to populate your quantity selector. For sector prices, use /events/{event_id}/sections instead of rebuilding them from inventory.

curl 'https://anyseats.net/api/affiliate/v1/events/EVENT_ID/inventory?limit=50' \
  -H "Authorization: Bearer $ANYSEATS_API_KEY"

3. Create a checkout link

Use a listing ID and an allowed quantity from step 2. Redirect the visitor to the returned url. Creating or opening a link does not reserve stock. The visitor reviews the exact tickets and quantity in a popup; only Confirm & continue creates a hold and opens checkout. Identical requests return the same link.

curl 'https://anyseats.net/api/affiliate/v1/checkout-links' \
  -H "Authorization: Bearer $ANYSEATS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"listing_id":"LISTING_ID","quantity":2,"sub_id":"newsletter-september"}'

4. Track your earnings

Get annual progress and balances with /me, and attributed event orders with /conversions. A multi-event checkout has one conversion per event. Use checkout_id to group these rows.

curl 'https://anyseats.net/api/affiliate/v1/me' \
  -H "Authorization: Bearer $ANYSEATS_API_KEY"

curl 'https://anyseats.net/api/affiliate/v1/conversions?limit=50' \
  -H "Authorization: Bearer $ANYSEATS_API_KEY"

Endpoint reference

MethodPathPurpose
GET/eventsFilters: q, category, date_from, date_to; pagination: limit, cursor.
GET/sections?ids=…Sector prices for up to 100 events in one call (comma-separated event ids).
GET/events/{event_id}/sectionsSector prices: tickets and cheapest all-in price per section, as on our event page.
GET/events/{event_id}/inventoryAvailable tickets and quantities, each with amount (full price), base_amount and fee_amount; pagination: limit, cursor.
POST/checkout-linksJSON: listing_id, quantity, optional sub_id.
POST/linksJSON: optional event_id and sub_id. Omit event_id for the homepage.
GET/linksAnalytics: clicks, paid checkouts, conversion, earnings per click and commission — totals, daily series and per link. period = 7, 30 (default), 90 or all.
GET/meYour level, current-year volume, earnings and payout history.
GET/conversionsAttributed event orders; pagination: limit, cursor.

Integration rules

Authentication and limits. Send Authorization: Bearer YOUR_KEY. Keys belong on your server; browser CORS access is not enabled. All keys on a partner account share 120 requests per minute. A 429 response includes Retry-After. Pages default to 50 records, with a maximum of 100.

Availability. Inventory is a snapshot of synced supplier stock. Use seat_label for display, or area and block for the full location. Refresh before displaying a purchase option; checkout performs a fresh supplier check and the buyer reviews the current price before payment. Sold-out tickets may return 409 and past events 410. Dates and kickoff times can change.

Event times. datetime_utc is the start time in UTC. time_zone is the venue's IANA time zone (for example Europe/London). kickoff is the venue's local start time (HH:MM), and is set only when time_confirmed is true. When time_confirmed is false, kickoff is null, the date is reliable, and datetime_utc is provisional: football kick-offs are usually fixed by broadcasters three to four weeks before the match. Re-read events daily to pick up confirmed times.

Prices, images and venues. from_price on /events is the cheapest all-in ticket price, the same figure /sections returns. It is null when nothing is on sale; it appears automatically once tickets are listed, and price_updated_at says when it was calculated. image is the event's share card (1200×630 PNG). venue_coordinates gives the venue's latitude and longitude when known.

Money. Inventory price.amount is a decimal string in its stated currency. Earnings and thresholds are GBP integer minor units: 1800 means £18.00. rate_bps uses basis points: 900 means 9%. Commission is on ticket subtotal after discounts, excluding fees and delivery. The FX rate is recorded with the order, so earnings do not fluctuate with later exchange rates.

Tracking. Send visitors through the returned link, not an untracked event URL. The last partner link a visitor opens sets a 45-day cookie, and a purchase they make in that window is credited to that link; checkout locks the attribution and rate. Sales are credited through links only; there is no checkout code. Omit event_id to get a homepage link. Conversion rows include source and referral_code, kept for older records. sub_id may contain letters, digits and . _ ~ : / - (maximum 100 characters). Do not send names, emails or other personal data. Pending, available, reversed and payment_review are the four conversion states.

Errors. Responses use {"error":{"code":"…","message":"…"}}. Fix 400 requests; rotate an invalid or revoked key after 401; contact support for 403. Back off on 429 and 503. Never retry a customer payment on your own: redirect customers through the hosted checkout.

See the program terms for annual tiers, exclusions and payout timing.