Documentación para Desarrolladores

    Construye con la plataforma Flowstates

    Autentícate con una API key, crea enlaces cortos con marca, genera contraseñas de un solo uso y valídalas. Se irán agregando más endpoints a medida que la plataforma se expanda.

    Inicio rápido

    Todos los endpoints se sirven desde una sola URL base. Cada solicitud necesita tu API key en el header clave-api-x y las solicitudes JSON usan Content-Type: application/json.

    URL base
    https://cpt.cx
    Headers requeridos
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Crea un enlace corto
    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"]
      }'

    Autenticación

    Cada endpoint público se autentica con una API key enviada en el header clave-api-x. Las keys están limitadas a tu cuenta, los dominios registrados y los proveedores configurados para tus canales. Trata las keys como secretos — nunca las incluyas en código del lado del cliente.

    Header requerido
    x-api-key: YOUR_API_KEY

    API de OTP

    Genera contraseñas de un solo uso para entrega por SMS o email y valídalas más tarde con el otpId devuelto. El valor del OTP nunca es devuelto por la API — se entrega al destinatario y se almacena solo como hash con un TTL.

    POST/otp/generate
    Genera un OTP

    Cuerpo de la solicitud

    • channelrequerido, email o sms
    • providerrequerido, el proveedor configurado para ese canal en tu cuenta (p. ej. generic, twilio, sendgrid)
    • destinationrequerido, dirección de email o número telefónico en formato E.164
    • typerequerido, numeric o alphanumeric
    • lengthrequerido, entre 4 y 12
    • expiresInSecondsrequerido, debe ser mayor a 0
    Solicitud
    {
      "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
    Valida un OTP

    Envía el otpId devuelto por /otp/generate junto con el valor del OTP que el usuario ingresó. Una validación exitosa consume el OTP — los códigos son de un solo uso.

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

    Tras repetidos intentos fallidos, la validación devolverá Demasiados intentos fallidos. Vuelve a intentarlo más tarde. hasta que expire el bloqueo temporal.

    Errores y pendientes conocidos

    Los errores de validación se devuelven con mensajes descriptivos como Formato URL no válido. o Proveedor no encontrado para este cliente y canal.. Los siguientes detalles aún no están documentados públicamente — trátalos como pendientes y contáctanos si necesitas una respuesta definitiva para uso en producción:

    • Payloads de fallo de autenticación y forma exacta de respuestas 4xx/5xx
    • Límites de tasa por endpoint y por cuenta
    • Tamaño máximo de batch para creación de enlaces cortos
    • Estructura de fallo por elemento dentro de un batch parcialmente exitoso
    • Si la expiración del enlace corto puede personalizarse más allá de los 30 días por defecto
    • Duración del bloqueo temporal de OTP tras demasiados intentos fallidos

    Recursos legibles por máquina

    Archivos para agentes de IA, crawlers LLM, generación de clientes API y descubrimiento técnico. Enlazados desde el <head> del sitio y robots.txt para descubrimiento fiable.

    ¿Necesitas una API key o un sandbox?

    Aprovisionaremos las keys, registraremos tus dominios y configuraremos tus proveedores — normalmente en un día.