Thais Almeida

API de Parceiros

Integre agendamento, orçamentos e cobranças ao seu sistema, bot ou agente. REST sobre HTTPS, JSON na entrada e na saída, autenticação por chave de parceiro.

Como obter uma chave

As chaves de parceiro são emitidas manualmente — não há auto-atendimento. Escreva para [email protected] ou chame no WhatsApp (12) 99687-7222 contando qual integração você quer construir. Você recebe uma chave por integração.

Toda requisição precisa do cabeçalho:

Authorization: Bearer <PARTNER_API_KEY>

Sem a chave, ou com uma chave errada, a resposta é 401 com {"error": "Unauthorized"}.

Ainda não há ambiente de sandbox público. As chamadas atingem os dados reais do CRM. Para testar sem efeito colateral, comece pelos endpoints de leitura (partner-list-services, partner-list-packages, partner-list-slots) e use reserve: true ao mexer na agenda — a pré-reserva expira sozinha em minutos se você não confirmar. O gateway de pagamento entra em modo sandbox automaticamente quando a chave do Asaas configurada é de teste.

Guia rápido

URL base:

https://kealfidxmdzmskfwhuee.supabase.co/functions/v1

1. Listar os pacotes disponíveis

curl -s https://kealfidxmdzmskfwhuee.supabase.co/functions/v1/partner-list-packages \
  -H "Authorization: Bearer $PARTNER_API_KEY"

2. Ver horários livres de um dia

curl -s "https://kealfidxmdzmskfwhuee.supabase.co/functions/v1/partner-list-slots?date=2026-06-15&type=atendimento" \
  -H "Authorization: Bearer $PARTNER_API_KEY"

3. Pré-reservar um horário por 15 minutos

curl -s -X POST https://kealfidxmdzmskfwhuee.supabase.co/functions/v1/partner-book-slot \
  -H "Authorization: Bearer $PARTNER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "slot_id": "3c4d5e6f-7a8b-4c9d-8e1f-2a3b4c5d6e7f",
    "booking_type": "atendimento",
    "client_name": "Maria Silva",
    "client_phone": "+5511999999999",
    "service_type_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f70",
    "reserve": true,
    "ttl_minutes": 15
  }'

Fluxo comercial completo

1. GET  /partner-list-packages         → pacotes disponíveis
2. GET  /partner-lookup-client?phone=  → cliente já existe?
3. POST /partner-create-client         → cria, se não existir
4. POST /partner-create-budget         → orçamento + página pública
5. POST /partner-create-charge         → cobrança PIX / boleto / cartão

Endpoints especificados

MétodoCaminhoO que faz
GET/partner-list-servicesTipos de serviço ativos, em pt/en/es.
GET/partner-list-packagesPacotes com preços e itens inclusos.
GET/partner-lookup-clientBusca cliente por telefone ou IGSID.
POST/partner-create-clientCadastra cliente no CRM.
POST/partner-create-budgetCria orçamento e devolve a URL pública.
POST/partner-create-chargeGera cobrança no Asaas.
GET/partner-list-slotsHorários livres de uma data.
POST/partner-book-slotReserva ou confirma um horário.

A API tem outros endpoints de parceiro — eventos, grupos, criação e bloqueio de horários — que ainda não estão na especificação OpenAPI. Pergunte por e-mail se precisar de algum deles.

Erros

Todo erro devolve Content-Type: application/json com o corpo:

{ "error": "mensagem descritiva" }

O status HTTP carrega a categoria:

StatusSignificadoO que fazer
400Parâmetro inválido ou ausente.A mensagem nomeia o campo. Corrija e repita.
401Chave ausente ou inválida.Confira o header Authorization. Não repita sem trocar a chave.
404Recurso não encontrado.Cliente, pacote ou horário não existe. Releia o catálogo.
405Método HTTP errado.Veja o método correto na tabela acima.
409Horário não está mais disponível.Liste os horários de novo e escolha outro.
422Horário não aceita esse tipo de agendamento.Use um horário com accepted_type compatível.
500Erro interno.Tente de novo com recuo. Se persistir, escreva para o contato.

O próprio site também responde em JSON: qualquer caminho inexistente pedido com Accept: application/json devolve 404 com code, message, hint e documentation_url.

Convenções

Gerar um cliente a partir da spec

Não publicamos um CLI oficial: seriam poucos integradores e um pacote a manter em sincronia com a API. Como a especificação OpenAPI está publicada, você gera o cliente da sua linguagem em um comando — e ele fica sempre alinhado com a API de verdade.

# TypeScript, Python, Go, PHP, Java e outros
npx @openapitools/openapi-generator-cli generate \
  -i https://www.thaisalmeida.art/openapi.json \
  -g typescript-fetch -o ./thais-client

# ou um CLI pronto, direto da spec
npx @stoplight/prism-cli mock https://www.thaisalmeida.art/openapi.json

Para agentes, a própria spec já basta: aponte a ferramenta de chamada HTTP para /openapi.json e ela descobre endpoints, parâmetros e formato de erro sozinha.

Formatos legíveis por máquina