Pixta para desenvolvedores

Integre seus eventos à Pixta.

A Partner API conecta o seu sistema aos eventos, lotes, pedidos, compradores e relatórios da Pixta — e avisa por webhook assinado quando um pedido é pago, cancelado ou reembolsado.

Baixar o OpenAPI

Endereços

Produção
https://api.pixta.me/partner/v1
Homologação
https://api.pixta.dev/partner/v1
curl https://api.pixta.me/partner/v1/events \
  -H "Authorization: Bearer $PIXTA_API_KEY"

Comece em três passos

  1. 01

    Peça sua chave

    O time da Pixta emite uma chave por integração, válida para os produtores dela.

  2. 02

    Autentique

    Envie a chave em toda requisição, no cabeçalho Authorization.

  3. 03

    Liste e assine

    Leia seus eventos e cadastre um webhook para receber os pedidos em tempo real.

O que dá para fazer

  • Eventos e lotes

    Crie e edite eventos, capa, lotes e cupons dos produtores da sua integração.

  • Pedidos e ingressos

    Liste pedidos e ingressos, consulte a entrada no evento e cancele com reembolso.

  • Compradores

    Busque compradores e o histórico de compras de cada um, por produtor.

  • Relatórios

    Vendas, receita e conversão de cada evento, prontos para o seu painel.

  • Webhooks

    order.paid, order.canceled e order.refunded, assinados com HMAC-SHA256.

  • start.gg

    Pedidos de torneio trazem a identidade start.gg do jogador para montar as chaves.

Verifique a assinatura dos webhooks

Cada entrega traz X-Pixta-Signature: sha256=<hex>, o HMAC-SHA256 do corpo bruto com o segredo do seu endpoint. Compare em tempo constante antes de processar e responda 2xx em até 10 segundos; falhas são reenviadas com intervalo crescente.

Cabeçalhos de cada entrega

X-Pixta-Event
o evento (order.paid, order.canceled, order.refunded)
X-Pixta-Delivery-Id
o id da entrega, para ignorar repetições
X-Pixta-Signature
a assinatura HMAC-SHA256 do corpo

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)
end

Torneios com start.gg

Quando o formulário do evento pede o login start.gg, os pedidos e webhooks trazem order.startgg com user ID, player ID, gamer tag, slug, prefixo, nome, e-mail e avatar do jogador. O produtor pode limitar o campo a alguns ingressos — por exemplo, só jogadores —, e então só esses pedidos trazem o bloco.

"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/…"
}

Referência da API

Todos os endpoints, parâmetros, respostas e exemplos, gerados do contrato OpenAPI. Em inglês, como o contrato.

Abrir a referência completa

Vamos integrar?

Chaves, ambiente de homologação e dúvidas técnicas: fale com o time de integrações.

contato@pixta.me