curl -H "X-API-KEY: your_api_key" \
"https://www.gomry.com/api/v1/catalog/events/AbCdEfGhIjKlMnOpQrSt"
const res = await fetch(
`https://www.gomry.com/api/v1/catalog/events/${eventId}`,
{ headers: { "X-API-KEY": "your_api_key" } }
);
const event = await res.json();
const sellable = event.ticket_types.filter((t) => t.available);
const mustAsk = event.registration_questions.filter(
(q) => q.required && q.answerable
);
import requests
res = requests.get(
f"https://www.gomry.com/api/v1/catalog/events/{event_id}",
headers={"X-API-KEY": "your_api_key"},
)
event = res.json()
sellable = [t for t in event["ticket_types"] if t["available"]]
{
"id": "AbCdEfGhIjKlMnOpQrSt",
"name": "Summer Tech Conference 2026",
"description": "A two-day conference covering the latest in tech.",
"url": "https://www.gomry.com/event/summer-tech-conference-2026-AbCdEfGhIjKlMnOpQrSt",
"start": { "utc": "2026-07-15T14:00:00.000Z", "timezone": "America/New_York" },
"end": { "utc": "2026-07-16T22:00:00.000Z", "timezone": "America/New_York" },
"venue": {
"name": "Convention Center",
"address": "123 Main St",
"city": "New York",
"state": "NY",
"country": "US",
"latitude": 40.7128,
"longitude": -74.006
},
"location_type": "physical",
"cover_image": "https://storage.googleapis.com/...",
"price": { "min": 79.0, "max": 249.0, "currency": "USD", "is_free": false },
"availability": "on_sale",
"sales_start": null,
"categories": ["Technology"],
"organization": { "id": "OrgAbCdEfGhIjKlMnOpQ", "name": "Tech Events Co" },
"ticket_types": [
{
"id": "TktAbCdEfGhIjKlMnOpQ",
"name": "General Admission",
"description": "Access to all talks.",
"price": 79.0,
"currency": "USD",
"free": false,
"pricing": "fixed",
"minimum_price": null,
"fee": 4.95,
"available": true,
"min_per_order": 1,
"max_per_order": 10,
"sales_start": { "utc": "2026-04-01T00:00:00.000Z", "timezone": "America/New_York" },
"sales_end": { "utc": "2026-07-15T14:00:00.000Z", "timezone": "America/New_York" },
"requires_approval": false,
"checkout_url": "https://www.gomry.com/event/summer-tech-conference-2026-AbCdEfGhIjKlMnOpQrSt/getTickets?utm_medium=web&utm_campaign=catalogApi&ticket_type=TktAbCdEfGhIjKlMnOpQ"
}
],
"registration_questions": [
{
"id": "QstAbCdEfGhIjKlMnOpQ",
"title": "Dietary requirements",
"subtitle": "Let us know if you have any.",
"type": "dropdown",
"options": ["None", "Vegetarian", "Vegan", "Gluten-free"],
"required": true,
"answerable": true
}
]
}
Catalog
Get Catalog Event
Retrieve one catalog event with its buyable ticket types and registration questions
GET
/
catalog
/
events
/
{event_id}
curl -H "X-API-KEY: your_api_key" \
"https://www.gomry.com/api/v1/catalog/events/AbCdEfGhIjKlMnOpQrSt"
const res = await fetch(
`https://www.gomry.com/api/v1/catalog/events/${eventId}`,
{ headers: { "X-API-KEY": "your_api_key" } }
);
const event = await res.json();
const sellable = event.ticket_types.filter((t) => t.available);
const mustAsk = event.registration_questions.filter(
(q) => q.required && q.answerable
);
import requests
res = requests.get(
f"https://www.gomry.com/api/v1/catalog/events/{event_id}",
headers={"X-API-KEY": "your_api_key"},
)
event = res.json()
sellable = [t for t in event["ticket_types"] if t["available"]]
{
"id": "AbCdEfGhIjKlMnOpQrSt",
"name": "Summer Tech Conference 2026",
"description": "A two-day conference covering the latest in tech.",
"url": "https://www.gomry.com/event/summer-tech-conference-2026-AbCdEfGhIjKlMnOpQrSt",
"start": { "utc": "2026-07-15T14:00:00.000Z", "timezone": "America/New_York" },
"end": { "utc": "2026-07-16T22:00:00.000Z", "timezone": "America/New_York" },
"venue": {
"name": "Convention Center",
"address": "123 Main St",
"city": "New York",
"state": "NY",
"country": "US",
"latitude": 40.7128,
"longitude": -74.006
},
"location_type": "physical",
"cover_image": "https://storage.googleapis.com/...",
"price": { "min": 79.0, "max": 249.0, "currency": "USD", "is_free": false },
"availability": "on_sale",
"sales_start": null,
"categories": ["Technology"],
"organization": { "id": "OrgAbCdEfGhIjKlMnOpQ", "name": "Tech Events Co" },
"ticket_types": [
{
"id": "TktAbCdEfGhIjKlMnOpQ",
"name": "General Admission",
"description": "Access to all talks.",
"price": 79.0,
"currency": "USD",
"free": false,
"pricing": "fixed",
"minimum_price": null,
"fee": 4.95,
"available": true,
"min_per_order": 1,
"max_per_order": 10,
"sales_start": { "utc": "2026-04-01T00:00:00.000Z", "timezone": "America/New_York" },
"sales_end": { "utc": "2026-07-15T14:00:00.000Z", "timezone": "America/New_York" },
"requires_approval": false,
"checkout_url": "https://www.gomry.com/event/summer-tech-conference-2026-AbCdEfGhIjKlMnOpQrSt/getTickets?utm_medium=web&utm_campaign=catalogApi&ticket_type=TktAbCdEfGhIjKlMnOpQ"
}
],
"registration_questions": [
{
"id": "QstAbCdEfGhIjKlMnOpQ",
"title": "Dietary requirements",
"subtitle": "Let us know if you have any.",
"type": "dropdown",
"options": ["None", "Vegetarian", "Vegan", "Gluten-free"],
"required": true,
"answerable": true
}
]
}
Get Catalog Event
Returns a single catalog event, resolved with everything needed to sell it.Requires
catalog: read. This is the only endpoint that populates ticket_types and registration_questions — both are null on the list endpoint.Path Parameters
string
required
The event identifier, from
data[].id on the list endpoint. Always a string.Response
Every field from the list response, plus the two resolved arrays below.array
The buyable ticket types.
Show Ticket type object
Show Ticket type object
string
Pass this as
items[].id when creating a checkout session. This is the ticket type id, not the event id.string
Tier name, e.g. “General Admission”.
string | null
Tier description.
number | null
Price per ticket in major units.
null means unknown or variable, never free — check free and pricing.string | null
ISO 4217 code.
boolean
The only statement that a ticket costs nothing.
string
fixed — price is the amount. donation — the buyer chooses any amount. flexible — the buyer chooses, at or above minimum_price.number | null
Floor for
flexible pricing; null otherwise.number | null
Buyer-paid service fee per ticket.
null when the organizer absorbs fees — a real answer meaning the fee exists but the buyer is not charged it, and different from 0.boolean
Whether this type can be bought right now. Composed from stock, the sales window, and the tier’s status.
integer
Smallest orderable quantity. Always at least 1.
integer | null
Largest quantity in one order, or
null for no limit. A per-order cap, not per-person.object | null
When this tier goes on sale.
object | null
When it stops.
boolean
When
true, a completed checkout yields a pending request, not admission. Tell your buyer.string
A link that opens Gomry checkout with this tier preselected. See Buying without a payment token.
array
Questions the organizer asks every attendee.
Show Question object
Show Question object
string
Echo back as
attendee_answers[].question_id.string
The question label.
string | null
Helper text, when the organizer wrote one.
string
text, email, phoneNumber, date, linkedin, organization are free text. dropdown and multipleChoice are a closed list in options. file cannot be answered through this API.array
Allowed values for
dropdown and multipleChoice; empty otherwise.boolean
The organizer’s own flag, not a suggestion.
boolean
false for file questions — an upload has no representation in a JSON checkout body. Surfaced rather than hidden so you can tell the buyer the organizer will follow up.An empty array and
null mean different things. [] means we asked and there is nothing — no ticket types on sale, or no registration questions. null means not loaded on this endpoint. An agent that reads [] as “sold out” on a list response would skip every event in the catalog.Availability is a boolean, not a count
available is deliberately a boolean, and no remaining-stock number is published anywhere on this surface.
This feed crosses organizations. A remaining count sampled twice reconstructs both an organizer’s inventory and their sell-through, and publishes it to every approved integrator — including their competitors. Your only question is “can I sell this right now”, which the boolean answers.
Buying without a payment token
Most agents cannot complete an ACP checkout session. Completing one needs a delegated payment token, and minting a Stripe Shared Payment Token requires a browser-based Payment Element plus a registered agent account with Stripe — which a personal assistant, a CLI, or an MCP client structurally does not have.checkout_url is the path for everyone else, and it is the pattern the industry settled on: the agent does discovery and cart-building, then hands the buyer a link. The card never leaves the browser.
GET /catalog/events → find the event
GET /catalog/events/{id} → pick a tier, read the questions
ticket_types[].checkout_url → hand this to your user
utm_campaign=catalogApi, so a sale that started in your agent is attributed to the catalog rather than to Gomry’s own discovery.
It is always present — including on a tier that is sold out or not yet on sale, because the page is still worth linking and available already says whether it will sell.
Use ACP checkout when you are an agent platform that can hold a delegated payment token. Use
checkout_url for everything else. They are complementary, not alternatives — nothing needs to be onboarded to use the link.Why you must read the questions
Roughly 30% of events ask something at registration, and most of those mark at least one answer required. An agent that ignores them sells a ticket the organizer considers incomplete. Collect the answers from your buyer and send them onPOST /checkout_sessions as attendee_answers. A session with unanswered required questions stays not_ready_for_payment and reports them as blocking messages[].
curl -H "X-API-KEY: your_api_key" \
"https://www.gomry.com/api/v1/catalog/events/AbCdEfGhIjKlMnOpQrSt"
const res = await fetch(
`https://www.gomry.com/api/v1/catalog/events/${eventId}`,
{ headers: { "X-API-KEY": "your_api_key" } }
);
const event = await res.json();
const sellable = event.ticket_types.filter((t) => t.available);
const mustAsk = event.registration_questions.filter(
(q) => q.required && q.answerable
);
import requests
res = requests.get(
f"https://www.gomry.com/api/v1/catalog/events/{event_id}",
headers={"X-API-KEY": "your_api_key"},
)
event = res.json()
sellable = [t for t in event["ticket_types"] if t["available"]]
{
"id": "AbCdEfGhIjKlMnOpQrSt",
"name": "Summer Tech Conference 2026",
"description": "A two-day conference covering the latest in tech.",
"url": "https://www.gomry.com/event/summer-tech-conference-2026-AbCdEfGhIjKlMnOpQrSt",
"start": { "utc": "2026-07-15T14:00:00.000Z", "timezone": "America/New_York" },
"end": { "utc": "2026-07-16T22:00:00.000Z", "timezone": "America/New_York" },
"venue": {
"name": "Convention Center",
"address": "123 Main St",
"city": "New York",
"state": "NY",
"country": "US",
"latitude": 40.7128,
"longitude": -74.006
},
"location_type": "physical",
"cover_image": "https://storage.googleapis.com/...",
"price": { "min": 79.0, "max": 249.0, "currency": "USD", "is_free": false },
"availability": "on_sale",
"sales_start": null,
"categories": ["Technology"],
"organization": { "id": "OrgAbCdEfGhIjKlMnOpQ", "name": "Tech Events Co" },
"ticket_types": [
{
"id": "TktAbCdEfGhIjKlMnOpQ",
"name": "General Admission",
"description": "Access to all talks.",
"price": 79.0,
"currency": "USD",
"free": false,
"pricing": "fixed",
"minimum_price": null,
"fee": 4.95,
"available": true,
"min_per_order": 1,
"max_per_order": 10,
"sales_start": { "utc": "2026-04-01T00:00:00.000Z", "timezone": "America/New_York" },
"sales_end": { "utc": "2026-07-15T14:00:00.000Z", "timezone": "America/New_York" },
"requires_approval": false,
"checkout_url": "https://www.gomry.com/event/summer-tech-conference-2026-AbCdEfGhIjKlMnOpQrSt/getTickets?utm_medium=web&utm_campaign=catalogApi&ticket_type=TktAbCdEfGhIjKlMnOpQ"
}
],
"registration_questions": [
{
"id": "QstAbCdEfGhIjKlMnOpQ",
"title": "Dietary requirements",
"subtitle": "Let us know if you have any.",
"type": "dropdown",
"options": ["None", "Vegetarian", "Vegan", "Gluten-free"],
"required": true,
"answerable": true
}
]
}

