Copy-ready implementation snippets for common Evento API workflows
EVENTO_API_KEY=your_public_api_key
export async function getPublicEvent(eventId) { const response = await fetch(`https://evento.so/api/public/v1/events/${eventId}`, { headers: { 'x-evento-api-key': process.env.EVENTO_API_KEY } }); const json = await response.json(); if (!json.success) { throw new Error(json.message); } return json.data; }
import os import requests def list_all_upcoming(username): all_events = [] offset = 0 limit = 50 while True: response = requests.get( f'https://evento.so/api/public/v1/users/{username}/events', params={'type': 'upcoming', 'limit': limit, 'offset': offset}, headers={'x-evento-api-key': os.environ['EVENTO_API_KEY']} ) payload = response.json() if not payload['success']: raise RuntimeError(payload['message']) events = payload['data']['events'] total = payload['data']['pagination']['total'] all_events.extend(events) offset += limit if offset >= total: break return all_events
async function loadWidgetFeed(username) { const response = await fetch(`https://evento.so/api/embed/v1/users/${username}/events?limit=6`); const payload = await response.json(); if (!payload.success) { throw new Error(payload.message); } return payload.data; }
export async function fetchWithRetry(url, options, retries = 4) { for (let i = 0; i <= retries; i += 1) { const response = await fetch(url, options); if (response.status !== 429 || i === retries) return response; await new Promise((resolve) => setTimeout(resolve, 500 * 2 ** i)); } }