Docs / Event Data API / Endpoints / Retrieve an event
Retrieve an event
Returns one event with its full session list — every individual showing, each with its own price range and the remaining inventory recorded when it was last scraped.
Parameters
| Parameter | Type | Description |
|---|---|---|
id required |
string | The event id from a list response. |
Request
curl https://api.softon.dev/v1/events/iticket:12299 \
-H "Authorization: Bearer $SOFTON_KEY"
req, _ := http.NewRequestWithContext(ctx, "GET", "https://api.softon.dev/v1/events/iticket:12299", nil) req.Header.Set("Authorization", "Bearer "+os.Getenv("SOFTON_KEY")) res, err := http.DefaultClient.Do(req) if err != nil { log.Fatal(err) } defer res.Body.Close() var page struct { Data Event `json:"data"` Meta struct{ Next *string `json:"next"` } `json:"meta"` } if err := json.NewDecoder(res.Body).Decode(&page); err != nil { log.Fatal(err) }
import json, os, urllib.parse, urllib.request url = "https://api.softon.dev/v1/events/iticket:12299" req = urllib.request.Request(url, headers={ "Authorization": "Bearer " + os.environ["SOFTON_KEY"], }) page = json.load(urllib.request.urlopen(req)) # page["data"] is the object; page["error"] is None on success
const url = new URL("https://api.softon.dev/v1/events/iticket:12299"); const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.SOFTON_KEY}` }, }); if (!res.ok) throw new Error(`${res.status} ${await res.text()}`); const { data, meta } = await res.json();
Response
The envelope is identical on every softon.dev API: data, meta, error. Only the shape inside data changes per dataset — see the response envelope.
{
"data": {
"id": "iticket:12299",
"name": "The Golden Collection: Pearls of Azerbaijani Fine Art",
"venue": { "id": "museum-center", "name": "Museum Center", "address": null },
"starts_at": "2026-08-05T06:00:00Z",
"price": { "min": 7, "max": 10, "currency": "AZN" },
"tickets_available": 7199,
"sessions": [
{ "id": "237496", "starts_at": "2026-08-05T06:00:00Z", "ends_at": "2026-08-05T13:00:00Z",
"sell_ends_at": "2026-08-05T16:30:00Z",
"price": { "min": 7, "max": 10, "currency": "AZN" },
"tickets_available": 199, "language": null, "observed_at": "2026-08-04T23:55:46.834186Z" },
{ "id": "237497", "starts_at": "2026-08-06T06:00:00Z", "ends_at": "2026-08-06T13:00:00Z",
"sell_ends_at": "2026-08-06T16:30:00Z",
"price": { "min": 7, "max": 10, "currency": "AZN" },
"tickets_available": 200, "language": null, "observed_at": "2026-08-04T23:55:46.834186Z" }
],
"ingested_at": "2026-08-04T23:55:46.834186Z"
},
"meta": { "request_id": "req_9Fv3" },
"error": null
}
Fields of data
| Field | Type | Description |
|---|---|---|
id |
string | Stable identifier, "<source>:<source id>". |
source |
string | Which scraper produced this event. |
name |
string | Event name as published. |
category |
string · nullable | Category slug: concerts, theatre, exhibitions, sport, cinema. |
venue |
object · nullable | id, name, address, lat, lng. Coordinates where the source geocodes. |
starts_at |
timestamp · nullable | Start time as an RFC 3339 instant in UTC. Convert with the venue's timezone for display — all current venues are Asia/Baku (UTC+4). |
ends_at |
timestamp · nullable | End time in UTC, when the source publishes one. |
price |
object · nullable | min, max and currency across ticket tiers. |
age_limit |
string · nullable | Age restriction as published, e.g. "16+". |
tickets_available |
integer · nullable | Live inventory. null where the source does not expose it — never 0 as a stand-in. |
description |
string · nullable | Editorial copy for the event. |
url |
string · nullable | Canonical page on the source site. |
external_url |
string · nullable | Information or ticketing page. NOT guaranteed to be a purchase link — cinema sources have no dereferenceable buy href. |
poster_url |
string · nullable | Artwork, highest resolution the source offers. |
sessions |
array · nullable | Every individual showing, each with its own price range and inventory. Present on a detail fetch. |
ingested_at |
timestamp | When this version was stored. |
sessions[].id |
string | Session identifier from the source. |
sessions[].starts_at |
timestamp · nullable | When this showing starts, UTC. |
sessions[].ends_at |
timestamp · nullable | When it ends, when the source publishes one. |
sessions[].sell_ends_at |
timestamp · nullable | When sales close for this showing. |
sessions[].price |
object · nullable | min, max and currency for this showing, which can differ from the event's overall range. |
sessions[].tickets_available |
integer · nullable | Remaining inventory for THIS showing at observed_at, not the event total. |
sessions[].language |
string · nullable | Presentation language. null where the source does not label it. |
sessions[].observed_at |
timestamp · nullable | When this inventory figure was scraped — successive observations form a sell-through time series. |
Try it
Send the request to see a response.