API da premieAí

Crie campanhas, envie ganhadores, aprove orçamentos e acompanhe cada Pix a partir do seu sistema. A API segue exatamente as regras do painel: perfis, dupla aprovação, alçada e extrato imutável.

REST + JSONValores em centavosWebhooks assinadosOpenAPI 3.1Sandbox grátis, sem CNPJ

Começo rápido

  1. 1. Crie uma chave. No painel, em Minha conta > Chaves de API, dê um nome, escolha o nível e os perfis. A chave (ppk_...) aparece uma vez só: guarde num cofre de segredos. Ainda sem empresa cadastrada? Comece pelo sandbox, com uma chave de teste.
  2. 2. Teste a conexão.
    export PREMIAPAY_CHAVE="ppk_..."
    curl https://premieai.com.br/api/v1/eu -H "Authorization: Bearer $PREMIAPAY_CHAVE"
  3. 3. Crie uma campanha com os ganhadores. O orçamento é a soma dos prêmios.
    curl -X POST https://premieai.com.br/api/v1/campanhas \
      -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
      -H "Content-Type: application/json" \
      -d '{
        "nome": "Vendedores destaque · Outubro",
        "motivo": "Meta de vendas batida",
        "ganhadores": [
          {
            "nome": "Ana Souza",
            "cpf": "123.456.789-09",
            "valorCentavos": 50000,
            "contato": "11999998888"
          },
          {
            "nome": "Bruno Lima",
            "cpf": "987.654.321-00",
            "valorCentavos": 30000
          }
        ],
        "condicao": {
          "escolha": "padrao"
        }
      }'
  4. 4. Siga o fluxo. O Financeiro aprova o orçamento (POST /campanhas/{id}/orcamento/aprovar) e outra pessoa aprova os ganhadores (POST /campanhas/{id}/ganhadores/aprovar). Os ganhadores recebem o link e você recebe premio.pago a cada Pix. Use GET /pendencias para saber o que está esperando ação.

Sandbox: teste sem dinheiro de verdade

Entre com o seu e-mail e crie uma chave de teste em Minha conta > Sandbox. Não precisa de empresa, CNPJ nem cofre aprovado. A chave de teste (ppk_test_...) usa a mesma URL e as mesmas rotas da API e do MCP, mas tudo roda num ambiente separado:

  • Um cofre de teste só seu, com empresa e CNPJ fictícios e R$ 10.000,00 de saldo de mentira.
  • Nenhum Pix, WhatsApp ou e-mail sai de verdade. Os dados de teste nunca se misturam com os reais, e uma chave real nunca enxerga o sandbox.
  • As regras são as de produção: perfis, quem envia não aprova, alçada, extrato imutável e idempotência. Os webhooks também: cadastre a sua URL com a chave de teste e receba eventos assinados.
  • Toda resposta do sandbox traz o cabeçalho PremiaPay-Ambiente: sandbox, e GET /eu devolve "ambiente": "sandbox".

O que em produção depende do banco, do ganhador ou de outra pessoa da empresa, você aciona com os simuladores (grupo Sandbox da referência). Um fluxo completo:

export PREMIAPAY_CHAVE_TESTE="ppk_test_..."
API=https://premieai.com.br/api/v1

# 1. Campanha com ganhadores fictícios
curl -X POST $API/campanhas -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" -d '{"nome":"Teste","ganhadores":[{"nome":"Ana Souza","cpf":"123.456.789-09","valorCentavos":5000}]}'

# 2. Você é do Financeiro: aprove o orçamento com o saldo de teste
curl -X POST $API/campanhas/cam_.../orcamento/aprovar -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Idempotency-Key: $(uuidgen)"

# 3. Quem envia não aprova: uma pessoa fictícia aprova os ganhadores
curl -X POST $API/sandbox/aprovacoes -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" -d '{"campanhaId":"cam_..."}'

# 4. A ganhadora resgata (pago, falhou ou pendente) e você recebe premio.pago
curl -X POST $API/sandbox/resgates -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" -d '{"campanhaId":"cam_...","participanteId":"par_...","resultado":"pago"}'

O link de resgate de cada ganhador (/r/teste_..., no campo codigo de GET /campanhas/{id}) também abre no navegador, com a página que o ganhador vê e uma faixa de ambiente de teste. Para recomeçar, use POST /sandbox/zerar. Limites do sandbox: até 5 chaves de teste por pessoa e até 200 ganhadores por lista.

Chaves e níveis

Envie a chave em Authorization: Bearer ppk_.... Cada chave pertence a uma pessoa e age em nome dela no cofre da empresa. Guardamos só o hash; se perder, revogue e crie outra.

Consultar

Saldo, campanhas, extrato, equipe e eventos.

Operar campanhas

Criar campanhas, enviar ganhadores, mensagens e avisos.

Incluir dinheiro

Aprovar orçamento e ganhadores, depósitos e saques. Exige Idempotency-Key.

A chave também pode usar só parte dos perfis da pessoa. Exemplo: quem é Gestor e Financeiro cria uma chave só de Gestor para o robô que monta campanhas, e o dinheiro continua passando pelas mãos dela.

Perfis e aprovação

  • Quem envia uma lista de ganhadores não pode aprovar a mesma lista, nem pela API. Para automatizar de ponta a ponta, use chaves de pessoas diferentes.
  • Listas acima da alçada do contrato pedem duas aprovações, uma delas do Financeiro.
  • Saque vai sempre para uma conta do mesmo CNPJ e precisa de uma segunda pessoa do Financeiro.
  • O Pix do prêmio só sai para uma chave no CPF do ganhador.
  • Tudo o que a API faz entra no extrato imutável e no registro de acessos da chave.

Idempotência

Em toda ação com dinheiro, envie Idempotency-Key com um valor único por operação (um UUID). Se a conexão cair e você repetir o pedido com a mesma chave e o mesmo corpo, a API devolve a resposta original com Idempotent-Replayed: true e não executa de novo. A chave vale por 24 horas. A mesma chave com outro corpo é recusada (422). Nas demais ações de escrita, o cabeçalho é opcional e funciona igual.

Erros

Todo erro tem o mesmo formato, com uma mensagem pronta para mostrar ao usuário e o id do pedido para o suporte.

HTTP/1.1 422
{
  "erro": { "codigo": "regra_violada", "mensagem": "Quem enviou a lista não pode aprovar a mesma lista" },
  "requestId": "req_Yt2..."
}
400entrada_invalida, json_invalido, idempotencia_obrigatoria
401nao_autenticado: chave ausente, revogada ou expirada
403fora_do_alcance (nível da chave) ou perfil_sem_permissao
404rota_inexistente ou nao_encontrado
409idempotencia_em_andamento: o pedido original ainda está rodando
422regra_violada (regra do negócio) ou idempotencia_reutilizada

Webhooks

Cadastre uma URL https em Minha conta > Webhooks (ou por POST /webhooks). A cada mudança no cofre enviamos um POST com o evento. Responda 2xx em até 10 segundos. Se falhar, tentamos de novo por até 24 horas; o mesmo evento pode chegar mais de uma vez, então descarte repetições pelo id. Para buscar em vez de receber, use GET /eventos?depoisDe=evt_....

POST /premiapay/webhook
PremiaPay-Event-Id: evt_Q2x...
PremiaPay-Event-Type: premio.pago
PremiaPay-Signature: t=1793481234,v1=5f2b...

{
  "id": "evt_Q2x...",
  "tipo": "premio.pago",
  "criadoEm": "2026-11-01T14:03:11.000Z",
  "versao": "2026-11-01",
  "cofreId": "cof_...",
  "dados": { "campanhaId": "cam_...", "participanteId": "par_...", "nome": "Ana Souza", "cpf": "***.456.789-**", "valor": 50000 }
}

Conferir a assinatura (Node.js)

import { createHmac, timingSafeEqual } from "node:crypto";

// corpo: o texto cru da requisição, antes de JSON.parse
function assinaturaValida(corpo, cabecalho, segredo) {
  const { t, v1 } = Object.fromEntries(cabecalho.split(",").map((p) => p.split("=")));
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // mais de 5 min
  const esperado = createHmac("sha256", segredo).update(`${t}.${corpo}`).digest("hex");
  return v1?.length === esperado.length && timingSafeEqual(Buffer.from(v1), Buffer.from(esperado));
}
campanha.criadaUma campanha foi criada (rascunho).
campanha.condicao_atualizadaMudou a situação de como a campanha paga a premieAí (aceita, em negociação, proposta enviada, recusada).
campanha.ativadaO Financeiro aprovou o orçamento e o dinheiro foi separado para a campanha.
campanha.encerradaA campanha foi encerrada; a sobra voltou para o saldo livre.
ganhadores.enviadosUma lista de ganhadores foi enviada e aguarda aprovação.
ganhadores.aprovadosA lista foi aprovada; os prêmios estão reservados e os links de resgate existem.
premio.pagoO Pix do prêmio foi confirmado pelo banco.
premio.estornadoO Pix do prêmio voltou; o prêmio está reservado de novo.
premio.expiradoO prazo de resgate acabou e o valor voltou para o saldo livre.
deposito.recebidoUm depósito caiu no cofre.
saque.solicitadoO Financeiro pediu um saque para a conta do CNPJ.
saque.confirmadoO saque foi pago.
saque.falhouO saque não foi concluído e o valor voltou para o saldo livre.

Agentes de IA (MCP)

As mesmas operações estão disponíveis como ferramentas MCP, para conectar o Claude, o ChatGPT ou o seu próprio agente. A diferença: no MCP, ações sensíveis pedem uma confirmação da pessoa antes de executar. Na API, o nível da chave já é a autorização.

Referência

Base: https://premieai.com.br/api/v1. Especificação completa em openapi.json (importe no Postman ou Insomnia).

Conta

GET/api/v1/eu

Quem sou eu

Mostra a pessoa conectada, o cofre (empresa e CNPJ), os perfis que esta conexão pode usar, o nível de acesso e as operações disponíveis. Comece por aqui.

Nível: ConsultarQualquer perfil
curl -X GET https://premieai.com.br/api/v1/eu \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
GET/api/v1/cofre

Ver o cofre

Saldo do cofre: livre (pode ir para campanhas ou saque), em campanhas, reservado para ganhadores; condição comercial padrão da premieAí; saques em andamento.

Nível: ConsultarQualquer perfil
curl -X GET https://premieai.com.br/api/v1/cofre \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
GET/api/v1/pendencias

Minhas pendências

O que está esperando ação agora: o que esta pessoa pode resolver (com a operação a usar) e o que depende de outra pessoa ou da premieAí.

Nível: ConsultarQualquer perfil
curl -X GET https://premieai.com.br/api/v1/pendencias \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"

Dinheiro

GET/api/v1/extrato

Ver extrato

Lançamentos do ledger imutável do cofre (mais recentes no fim), com a verificação da cadeia de hashes. Filtra por campanha se pedir.

Nível: ConsultarAdministradorFinanceiroGestor de campanhasAprovadorAuditor
Parâmetros
campanhaId
string
Id da campanha (ex.: cam_...), como em listar_campanhas
limite
integer
Quantos lançamentos, dos mais recentes (padrão 50) Padrão: 50.
curl -X GET https://premieai.com.br/api/v1/extrato \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
POST/api/v1/campanhas/{campanhaId}/orcamento/aprovar

Aprovar orçamento

Separa o orçamento da campanha do saldo livre (pagando o serviço premieAí com o saldo, se estiver em aberto), ativa a campanha e envia a lista de ganhadores para aprovação.

Nível: Incluir dinheiroFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/orcamento/aprovar \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"
POST/api/v1/campanhas/{campanhaId}/cobranca-servico

Pagar o serviço premieAí à parte

Gera a cobrança (Pix ou boleto) do serviço premieAí de uma campanha, para pagar sem usar o saldo do cofre.

Nível: Incluir dinheiroFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/cobranca-servico \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"
POST/api/v1/depositos

Gerar Pix de depósito

Gera um Pix (copia e cola) para depositar no cofre. Com campanhaId, o valor é o que falta para a campanha mais o serviço premieAí, e a campanha ativa sozinha quando o Pix cai. Só o CNPJ do cofre pode pagar.

Nível: Incluir dinheiroFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
valorCentavos
integer
Valor do depósito avulso no cofre (mínimo 500)
campanhaId
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X POST https://premieai.com.br/api/v1/depositos \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "campanhaId": "cam_8sd7f6g5h4j3"
  }'
POST/api/v1/saques

Solicitar saque

Pede saque do saldo livre para a conta do mesmo CNPJ do cofre. Outra pessoa do Financeiro precisa aprovar (aprovar_saque).

Nível: Incluir dinheiroFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
valorCentavosobrigatório
integer
curl -X POST https://premieai.com.br/api/v1/saques \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "valorCentavos": 150000
  }'
POST/api/v1/saques/{saqueId}/aprovar

Aprovar saque

Aprova um saque pedido por outra pessoa do Financeiro. O Pix sai na hora para a conta do CNPJ do cofre.

Nível: Incluir dinheiroFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
saqueIdobrigatório
string
Id do saque, como em ver_cofre ou minhas_pendencias
curl -X POST https://premieai.com.br/api/v1/saques/sai_1/aprovar \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"

Campanhas

GET/api/v1/campanhas

Listar campanhas

Campanhas do cofre, da mais nova para a mais antiga, com situação, orçamento, pagos, reservado e o que está pendente.

Nível: ConsultarQualquer perfil
Parâmetros
status
"rascunho" | "ativa" | "encerrada"
Filtra pela situação
curl -X GET https://premieai.com.br/api/v1/campanhas \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
POST/api/v1/campanhas

Criar campanha

Cria uma campanha com os ganhadores e a forma de pagar a premieAí (condição padrão do cliente ou pedido de negociação). O orçamento é a soma dos prêmios. Depois, o Financeiro aprova o orçamento (aprovar_orcamento) e outra pessoa aprova os ganhadores.

Nível: Operar campanhasGestor de campanhas
Corpo e parâmetros
nomeobrigatório
string
Nome da campanha (ex.: Black Friday 2026)
motivo
string
Por que estes ganhadores estão sendo premiados
ganhadoresobrigatório
object[]
ganhadores[].nomeobrigatório
string
Nome completo
ganhadores[].cpfobrigatório
string
CPF do ganhador, com ou sem pontuação. O Pix só sai para chave no CPF dele
ganhadores[].valorCentavosobrigatório
integer
Prêmio em centavos (50000 = R$ 500,00)
ganhadores[].contato
string
Celular com DDD (recebe o aviso no WhatsApp) ou e-mail
condicao
object
Sem isso, aceita a condição padrão
condicao.escolhaobrigatório
"padrao" | "negociar"
padrao: aceita a condição padrão do cliente. negociar: pede proposta à premieAí
condicao.participantes
integer
Quantas pessoas participam (para o mínimo da campanha)
condicao.mensagens
integer
Mensagens por participante
condicao.comentario
string
Obrigatório para negociar: o que quer negociar
mensagens
object
Textos que os ganhadores recebem. Use {nome}, {valor}, {empresa}, {campanha} e {link} nos textos.
mensagens.whatsapp
string
mensagens.sms
string
mensagens.emailAssunto
string
mensagens.emailTexto
string
curl -X POST https://premieai.com.br/api/v1/campanhas \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "nome": "Vendedores destaque · Outubro",
    "motivo": "Meta de vendas batida",
    "ganhadores": [
      {
        "nome": "Ana Souza",
        "cpf": "123.456.789-09",
        "valorCentavos": 50000,
        "contato": "11999998888"
      },
      {
        "nome": "Bruno Lima",
        "cpf": "987.654.321-00",
        "valorCentavos": 30000
      }
    ],
    "condicao": {
      "escolha": "padrao"
    }
  }'
GET/api/v1/campanhas/{campanhaId}

Ver campanha

Detalhe de uma campanha: situação, condição de pagamento da premieAí, ganhadores (CPF mascarado) com status do resgate, lista aguardando aprovação e extrato da campanha.

Nível: ConsultarQualquer perfil
Parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X GET https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3 \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
POST/api/v1/campanhas/{campanhaId}/condicao

Escolher como pagar a premieAí

Numa campanha em rascunho: aceita a condição padrão do cliente (taxa de gestão e por resultado) ou pede negociação à premieAí.

Nível: Operar campanhasGestor de campanhasAprovadorFinanceiro
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
escolhaobrigatório
"padrao" | "negociar"
comentario
string
Obrigatório para negociar
participantes
integer
mensagens
integer
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/condicao \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "escolha": "negociar",
    "comentario": "Teremos cerca de 2.000 ganhadores por mês"
  }'
POST/api/v1/campanhas/{campanhaId}/proposta/resposta

Responder proposta da premieAí

Aceita ou recusa a proposta comercial que a premieAí enviou para uma campanha em negociação.

Nível: Incluir dinheiroAprovadorFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
aceitarobrigatório
boolean
motivo
string
Por que recusa (ajuda a premieAí a refazer)
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/proposta/resposta \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "aceitar": true
  }'
PATCH/api/v1/campanhas/{campanhaId}/mensagens

Editar mensagens aos ganhadores

Muda os textos que os ganhadores recebem (WhatsApp, SMS, e-mail). Só os campos enviados mudam. Use {nome}, {valor}, {empresa}, {campanha} e {link} nos textos.

Nível: Operar campanhasGestor de campanhas
Corpo e parâmetros
whatsapp
string
sms
string
emailAssunto
string
emailTexto
string
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X PATCH https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/mensagens \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "whatsapp": "Oi {nome}! A {empresa} te deu {valor} na campanha {campanha}. Resgate: {link}"
  }'
POST/api/v1/campanhas/{campanhaId}/avisos-whatsapp

Avisar ganhadores pelo WhatsApp

Manda o aviso de prêmio ou o lembrete de prazo pelo WhatsApp para os prêmios em aberto com celular. O mesmo aviso não sai duas vezes para a mesma pessoa (lembrete: um por dia).

Nível: Operar campanhasGestor de campanhas
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
tipoobrigatório
"premio" | "lembrete"
participanteIds
string[]
Só estes ganhadores (padrão: todos com prêmio em aberto)
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/avisos-whatsapp \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "tipo": "lembrete"
  }'
POST/api/v1/campanhas/{campanhaId}/encerrar

Encerrar campanha

Encerra uma campanha ativa sem prêmios dentro do prazo de resgate nem lista pendente. A sobra volta para o saldo livre do cofre.

Nível: Operar campanhasGestor de campanhasFinanceiro
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/encerrar \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"

Ganhadores

POST/api/v1/campanhas/{campanhaId}/ganhadores

Enviar nova lista de ganhadores

Envia uma nova lista de ganhadores para uma campanha ativa, dentro do orçamento disponível. A lista fica aguardando aprovação de outra pessoa (quem envia não aprova).

Nível: Operar campanhasGestor de campanhas
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
ganhadoresobrigatório
object[]
ganhadores[].nomeobrigatório
string
Nome completo
ganhadores[].cpfobrigatório
string
CPF do ganhador, com ou sem pontuação. O Pix só sai para chave no CPF dele
ganhadores[].valorCentavosobrigatório
integer
Prêmio em centavos (50000 = R$ 500,00)
ganhadores[].contato
string
Celular com DDD (recebe o aviso no WhatsApp) ou e-mail
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/ganhadores \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "ganhadores": [
      {
        "nome": "Carla Dias",
        "cpf": "111.222.333-96",
        "valorCentavos": 20000,
        "contato": "21988887777"
      }
    ]
  }'
POST/api/v1/campanhas/{campanhaId}/ganhadores/aprovar

Aprovar ganhadores

Aprova a lista de ganhadores aguardando aprovação. Quem enviou a lista não aprova; acima da alçada são duas pessoas, uma do Financeiro. Na última aprovação os prêmios ficam reservados, os links de resgate nascem e o aviso sai pelo WhatsApp.

Nível: Incluir dinheiroAprovadorFinanceiroIdempotency-Key obrigatória
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
curl -X POST https://premieai.com.br/api/v1/campanhas/cam_8sd7f6g5h4j3/ganhadores/aprovar \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"

Equipe

GET/api/v1/equipe

Ver equipe

Pessoas do cofre e seus perfis (Administrador, Financeiro, Gestor de campanhas, Aprovador, Auditor).

Nível: ConsultarQualquer perfil
curl -X GET https://premieai.com.br/api/v1/equipe \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
POST/api/v1/equipe

Convidar pessoa ou mudar perfis

Adiciona uma pessoa ao cofre ou troca os perfis dela. Perfis: administrador, financeiro, gestor, aprovador, auditor.

Nível: Incluir dinheiroAdministradorIdempotency-Key obrigatória
Corpo e parâmetros
emailobrigatório
string
nomeobrigatório
string
perfisobrigatório
string[]
curl -X POST https://premieai.com.br/api/v1/equipe \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "aprovador@empresa.com.br",
    "nome": "Diego Prado",
    "perfis": [
      "aprovador"
    ]
  }'

Eventos e webhooks

GET/api/v1/eventos

Listar eventos

Eventos do cofre em ordem, para quem prefere buscar em vez de receber webhooks. Passe depoisDe com o id do último evento que você já processou.

Nível: ConsultarAdministradorFinanceiroGestor de campanhasAprovadorAuditor
Parâmetros
depoisDe
string
tipo
string
limite
integer
curl -X GET https://premieai.com.br/api/v1/eventos \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
GET/api/v1/webhooks

Listar webhooks

Endereços cadastrados para receber eventos, com a situação das entregas.

Nível: ConsultarAdministradorFinanceiroGestor de campanhasAprovadorAuditor
curl -X GET https://premieai.com.br/api/v1/webhooks \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
POST/api/v1/webhooks

Cadastrar webhook

Cadastra uma URL https para receber eventos assinados. Sem `eventos`, recebe todos. O segredo de assinatura (whsec_...) aparece só nesta resposta.

Nível: Operar campanhasAdministrador
Corpo e parâmetros
urlobrigatório
string
descricao
string
eventos
string[]
curl -X POST https://premieai.com.br/api/v1/webhooks \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://seu-sistema.com.br/premiapay/webhook",
    "descricao": "ERP de RH",
    "eventos": [
      "ganhadores.aprovados",
      "premio.pago"
    ]
  }'
DELETE/api/v1/webhooks/{webhookId}

Remover webhook

Para de enviar eventos para esta URL. Entregas pendentes são canceladas.

Nível: Operar campanhasAdministrador
Parâmetros
webhookIdobrigatório
string
curl -X DELETE https://premieai.com.br/api/v1/webhooks/whk_abc123 \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"
POST/api/v1/webhooks/{webhookId}/testar

Testar webhook

Envia um evento webhook.teste assinado e devolve o status HTTP que seu servidor respondeu.

Nível: Operar campanhasAdministrador
Corpo e parâmetros
webhookIdobrigatório
string
curl -X POST https://premieai.com.br/api/v1/webhooks/whk_abc123/testar \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE"

Sandbox

Só funcionam com chave de teste (ppk_test_). Com uma chave real, respondem 403.

POST/api/v1/sandbox/depositos

Sandbox: o Pix de depósito caiu

Simula o pagamento de um depósito. Com campanhaId, confirma o depósito gerado para a campanha (POST /depositos com campanhaId), e a campanha ativa sozinha se ele cobrir tudo. Sem campanhaId, credita valorCentavos no saldo livre. Dispara deposito.recebido.

Nível: Operar campanhasSó chave de teste
Corpo e parâmetros
campanhaId
string
Id da campanha (ex.: cam_...), como em listar_campanhas
pagamentoId
string
pagamentoId devolvido por POST /depositos (pay_sim_...). Sem ele, um novo é criado
valorCentavos
integer
Valor do depósito avulso
curl -X POST https://premieai.com.br/api/v1/sandbox/depositos \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" \
  -d '{
    "campanhaId": "cam_8sd7f6g5h4j3"
  }'
POST/api/v1/sandbox/aprovacoes

Sandbox: outra pessoa aprova

Pessoas fictícias do cofre de teste aprovam no seu lugar o que você não pode aprovar: a lista de ganhadores de uma campanha (uma ou duas aprovações, conforme a alçada) ou um saque que você pediu. Assim você testa o fluxo de dupla aprovação com uma chave só.

Nível: Operar campanhasSó chave de teste
Corpo e parâmetros
campanhaId
string
Id da campanha (ex.: cam_...), como em listar_campanhas
saqueId
string
curl -X POST https://premieai.com.br/api/v1/sandbox/aprovacoes \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" \
  -d '{
    "campanhaId": "cam_8sd7f6g5h4j3"
  }'
POST/api/v1/sandbox/resgates

Sandbox: o ganhador resgata

Simula o ganhador abrindo o link e pedindo o Pix na chave do próprio CPF. resultado escolhe o desfecho: pago (premio.pago na hora), falhou (o Pix volta e o prêmio continua em aberto) ou pendente (conclua depois com sandbox_concluir_pix). O link /r/teste_... também abre no navegador.

Nível: Operar campanhasSó chave de teste
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
participanteIdobrigatório
string
participanteId do ganhador, como em ver_campanha
resultado
"pago" | "falhou" | "pendente"
Desfecho do Pix simulado Padrão: "pago".
curl -X POST https://premieai.com.br/api/v1/sandbox/resgates \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" \
  -d '{
    "campanhaId": "cam_8sd7f6g5h4j3",
    "participanteId": "par_Xk29fh3Ld",
    "resultado": "pago"
  }'
POST/api/v1/sandbox/transferencias/{transferId}

Sandbox: o banco conclui um Pix pendente

Conclui um Pix que ficou pendente (resgate ou saque), como o aviso do banco: pago ou falhou.

Nível: Operar campanhasSó chave de teste
Corpo e parâmetros
transferIdobrigatório
string
transferId devolvido pelo resgate ou saque
resultadoobrigatório
"pago" | "falhou"
curl -X POST https://premieai.com.br/api/v1/sandbox/transferencias/tra_sim_4k2j9x \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" \
  -d '{
    "resultado": "pago"
  }'
POST/api/v1/sandbox/vencimentos

Sandbox: o prazo de resgate vence

Faz o prazo de resgate (90 dias) vencer agora para os prêmios em aberto da campanha, ou só para os participanteIds informados. O valor volta para o saldo livre e sai o evento premio.expirado.

Nível: Operar campanhasSó chave de teste
Corpo e parâmetros
campanhaIdobrigatório
string
Id da campanha (ex.: cam_...), como em listar_campanhas
participanteIds
string[]
curl -X POST https://premieai.com.br/api/v1/sandbox/vencimentos \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE" \
  -H "Content-Type: application/json" \
  -d '{
    "campanhaId": "cam_8sd7f6g5h4j3"
  }'
POST/api/v1/sandbox/zerar

Sandbox: começar do zero

Troca o seu cofre de teste por um novo, com R$ 10.000,00 de saldo e nenhuma campanha. Os webhooks cadastrados continuam.

Nível: Operar campanhasSó chave de teste
curl -X POST https://premieai.com.br/api/v1/sandbox/zerar \
  -H "Authorization: Bearer $PREMIAPAY_CHAVE_TESTE"