Documentação para Desenvolvedores

    Construa com a plataforma Flowstates

    Autentique-se com uma chave de API, crie links curtos de marca, gere senhas de uso único e valide-as. Mais endpoints serão adicionados à medida que a plataforma se expande.

    Início rápido

    Todos os endpoints são servidos a partir de uma única URL base. Cada solicitação precisa da sua chave de API no cabeçalho chave x-api e as solicitações JSON usam Content-Type: application/json.

    URL base
    https://cpt.cx
    Cabeçalhos necessários
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Crie um link curto
    curl -X POST "https://cpt.cx/shortlink/public-generate" \
      -H "x-api-key: YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "BBC News",
        "url": "https://www.bbc.com/news",
        "domain": "cpt.cx",
        "tags": ["News", "BBC"]
      }'

    Autenticação

    Cada endpoint público é autenticado com uma chave de API enviada no cabeçalho chave x-api. As chaves são limitadas à sua conta, aos domínios registrados e aos provedores configurados para seus canais. Trate as chaves como segredos — nunca as inclua em código do lado do cliente.

    Cabeçalho necessário
    x-api-key: YOUR_API_KEY

    API de OTP

    Gere senhas de uso único para entrega por SMS ou e-mail e valide-as mais tarde com o otpId retornado. O valor do OTP nunca é retornado pela API — ele é entregue ao destinatário e armazenado apenas como um hash com um TTL.

    POST/otp/generate
    Gere um OTP

    Corpo da solicitação

    • channelobrigatório, email ou sms
    • providerobrigatório, o provedor configurado para esse canal em sua conta (ex. generic, twilio, sendgrid)
    • destinationobrigatório, endereço de e-mail ou número de telefone em formato E.164
    • typeobrigatório, numeric ou alphanumeric
    • lengthobrigatório, entre 4 e 12
    • expiresInSecondsobrigatório, deve ser maior que 0
    Solicitação
    {
      "channel": "email",
      "provider": "generic",
      "destination": "test@example.com",
      "type": "alphanumeric",
      "length": 8,
      "expiresInSeconds": 300
    }
    200 OK
    {
      "otpId": "51a6fcc7-efc8-4e69-8bc1-ebb999befb2c",
      "destination": "test@example.com",
      "createdAt": "2025-09-10T14:05:41Z",
      "expiresAt": "2025-09-10T14:10:41Z"
    }
    POST/otp/validate
    Valide um OTP

    Envie o otpId retornado por /otp/generate junto com o valor do OTP que o usuário inseriu. Uma validação bem-sucedida consome o OTP — os códigos são de uso único.

    Solicitação
    {
      "otpId": "c4f8814c-7a9d-4e13-b7d8-d4e66d272611",
      "otp": "z4dGyBPQ"
    }
    200 OK
    {
      "success": true,
      "message": "OTP validated successfully."
    }

    Após repetidas tentativas falhas, a validação retornará Muitas tentativas fracassadas. Tente novamente mais tarde. até que o bloqueio temporário expire.

    Erros e pendências conhecidas

    Erros de validação são retornados com mensagens descritivas como Formato URL inválido. ou Provedor não encontrado para este cliente e canal.. Os seguintes detalhes ainda não estão documentados publicamente — trate-os como pendências e entre em contato conosco se precisar de uma resposta definitiva para uso em produção:

    • Payloads de falha de autenticação e formato exato das respostas 4xx/5xx
    • Limites de taxa por endpoint e por conta
    • Tamanho máximo do lote para criação de links curtos
    • Estrutura de falha por item dentro de um lote parcialmente bem-sucedido
    • Se a expiração do link curto pode ser personalizada além dos 30 dias padrão
    • Duração do bloqueio temporário de OTP após muitas tentativas falhas

    Recursos legíveis por máquina

    Arquivos para agentes de IA, crawlers de LLM, geração de clientes de API e descoberta técnica. Vinculados a partir do <head> do site e do robots.txt para descoberta confiável.

    Precisa de uma chave de API ou um sandbox?

    Nós provisionaremos as chaves, registraremos seus domínios e configuraremos seus provedores — geralmente em um dia.