Your events. Your stack.
Build with
Paydro.
Bring ticketing into your website. Connect event data to your tools. Keep orders and attendees in sync.
Practical guides. Real endpoints. Built for your workflow.
Your first API request
curl --include --silent --show-error --max-time 30 \
--user "$PAYDRO_EMAIL:$PAYDRO_PASSWORD" \
--header 'Accept: application/json' \
"$PAYDRO_ORIGIN/api/v2/events/$EVENT_ID"
<?php
$url = getenv('PAYDRO_ORIGIN') . '/api/v2/events/' . getenv('EVENT_ID');
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_USERPWD => getenv('PAYDRO_EMAIL') . ':' . getenv('PAYDRO_PASSWORD'),
CURLOPT_HTTPHEADER => ['Accept: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException(curl_error($ch));
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
unset($ch);
if ($status !== 200) throw new RuntimeException('HTTP ' . $status);
$data = json_decode($response, true, 512, JSON_THROW_ON_ERROR);
if (($data['Event']['id'] ?? null) !== getenv('EVENT_ID')) {
throw new RuntimeException('Expected the requested Event');
}
echo json_encode($data, JSON_PRETTY_PRINT), PHP_EOL;
const { PAYDRO_ORIGIN, PAYDRO_EMAIL, PAYDRO_PASSWORD, EVENT_ID } = process.env;
const credentials = Buffer.from(`${PAYDRO_EMAIL}:${PAYDRO_PASSWORD}`).toString('base64');
const response = await fetch(`${PAYDRO_ORIGIN}/api/v2/events/${EVENT_ID}`, {
headers: { Authorization: `Basic ${credentials}`, Accept: 'application/json' },
redirect: 'error',
signal: AbortSignal.timeout(30000),
});
if (response.status !== 200) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
if (data.Event?.id !== EVENT_ID) throw new Error('Expected the requested Event');
console.log(JSON.stringify(data, null, 2));
import json, os, requests
response = requests.get(
os.environ['PAYDRO_ORIGIN'] + '/api/v2/events/' + os.environ['EVENT_ID'],
auth=(os.environ['PAYDRO_EMAIL'], os.environ['PAYDRO_PASSWORD']),
headers={'Accept': 'application/json'},
timeout=30,
allow_redirects=False,
)
if response.status_code != 200:
raise RuntimeError(f'HTTP {response.status_code}')
data = response.json()
if data.get('Event', {}).get('id') != os.environ['EVENT_ID']:
raise RuntimeError('Expected the requested Event')
print(json.dumps(data, indent=2))
GET /api/v2/events/{event_id}Set up authentication
Start building
All guidesEmbed your ticket shop
A complete registration and checkout flow, right inside your own website.
Add ticketing to your siteConnect your event data
Read events and ticket products to power your own tools and experiences.
Make your first requestKeep your systems in sync
Import orders and attendees, apply changes, and recover from interrupted runs.
Build a reliable integrationWork with your existing tools
Developer updates
October 7, 2026
Introducing Paydro DevelopersIntegration guides and an OpenAPI reference in one place.