Pixta for developers
Plug your events into Pixta.
The Partner API connects your system to Pixta’s events, ticket lots, orders, buyers and reports — and sends a signed webhook when an order is paid, canceled or refunded.
Download OpenAPIBase URLs
- Production
- https://api.pixta.me/partner/v1
- Staging
- https://api.pixta.dev/partner/v1
curl https://api.pixta.me/partner/v1/events \
-H "Authorization: Bearer $PIXTA_API_KEY"Start in three steps
- 01
Get your key
The Pixta team issues one key per integration, scoped to its producers.
- 02
Authenticate
Send the key on every request, in the Authorization header.
- 03
List and subscribe
Read your events and register a webhook to receive orders in real time.
What you can build
Events and lots
Create and edit events, cover images, ticket lots and coupons for your producers.
Orders and tickets
List orders and tickets, check entrance at the door and cancel with a refund.
Buyers
Search buyers and each buyer’s purchase history, per producer.
Reports
Sales, revenue and conversion for every event, ready for your dashboard.
Webhooks
order.paid, order.canceled and order.refunded, signed with HMAC-SHA256.
start.gg
Tournament orders carry the player’s start.gg identity to build the brackets.
Verify webhook signatures
Every delivery carries X-Pixta-Signature: sha256=<hex>, the HMAC-SHA256 of the raw body with your endpoint’s secret. Compare in constant time before processing, and answer 2xx within 10 seconds; failed deliveries are retried with backoff.
Headers on every delivery
- X-Pixta-Event
- the event (order.paid, order.canceled, order.refunded)
- X-Pixta-Delivery-Id
- the delivery id, to ignore repeats
- X-Pixta-Signature
- the HMAC-SHA256 signature of the body
Node.js
import crypto from "node:crypto";
export function isFromPixta(rawBody, signature, secret) {
const expected = "sha256=" +
crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(expected);
const b = Buffer.from(signature ?? "");
return a.length === b.length && crypto.timingSafeEqual(a, b);
}Python
import hashlib, hmac
def is_from_pixta(raw_body: bytes, signature: str, secret: str) -> bool:
expected = "sha256=" + hmac.new(
secret.encode(), raw_body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature or "")Ruby
def from_pixta?(raw_body, signature, secret)
expected = "sha256=#{OpenSSL::HMAC.hexdigest("SHA256", secret, raw_body)}"
ActiveSupport::SecurityUtils.secure_compare(expected, signature.to_s)
endTournaments with start.gg
When the event’s checkout form asks for the start.gg login, orders and webhooks carry order.startgg with the player’s user ID, player ID, gamer tag, slug, prefix, name, email and avatar. Producers can limit that field to some tickets — players only, for example — and then only those orders carry it.
"startgg": {
"user_id": "999",
"player_id": "42",
"gamertag": "Ace",
"slug": "873d03cc",
"prefix": "TEAM",
"name": "Ana Silva",
"email": "ace@example.com",
"avatar_url": "https://images.start.gg/…"
}API reference
Every endpoint, parameter, response and example, generated from the OpenAPI contract.
Let’s integrate
Keys, the staging environment and technical questions: talk to the integrations team.