Skip to main content

Setup

EVENTO_API_KEY=your_public_api_key

Example: Public event fetch (Node.js)

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;
}

Example: Public user events with pagination (Python)

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

Example: Embed API browser widget feed

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;
}

Example: Retry pattern for 429

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));
  }
}

Next steps