Documentación para desarrolladores

API de Plausa

Una API REST para llevar tus testimonios a tu web, tu CRM o tus paneles internos. Respuestas JSON, autenticación por clave y datos limitados a tu cuenta. La API se incluye en el plan Business.

Autenticación

Genera tu clave en Facturación → Claves API y envíala en la cabecera x-api-key (también funciona Authorization: Bearer). Una clave solo da acceso a los datos de su propia cuenta y deja de funcionar en cuanto se revoca o la cuenta sale del plan Business.

curl https://plausa.lovable.app/api/public/v1/stats \
  -H "x-api-key: plausa_sk_xxxxxxxxxxxx"

Límites y seguridad

  • 120 peticiones por minuto y clave; a partir de ahí, respuesta 429 con cabecera Retry-After.
  • Todas las respuestas se filtran por el propietario de la clave: nunca hay acceso cruzado entre cuentas.
  • Hasta 5 claves activas por cuenta, con rotación y revocación inmediatas desde el panel.
  • El secreto completo se muestra una sola vez; solo se guarda su hash.

Endpoints

GET/api/public/v1/testimonials

Devuelve los testimonios de la cuenta, con filtros por sentimiento y tema.

Parámetros

  • limit Número de resultados, 1 a 100 (por defecto 50).
  • offset Desplazamiento para la paginación (por defecto 0).
  • status new | approved | hidden
  • sentiment very_positive | positive | neutral | mixed
  • theme Clave estable del tema, p. ej. customer-support
  • medium text | video

Ejemplo de petición

curl "https://plausa.lovable.app/api/public/v1/testimonials?status=approved&sentiment=very_positive&limit=20" \
  -H "x-api-key: plausa_sk_xxxxxxxxxxxx"

Ejemplo de respuesta

{
  "data": [
    {
      "id": "6f1c…",
      "author_name": "Claire Meunier",
      "author_role": "Head of Sales, Kairo",
      "rating": 5,
      "medium": "text",
      "source": "link",
      "body_original": "…",
      "body_polished": "…",
      "published_version": "polished",
      "source_locale": "fr",
      "translations": { "en": "…", "es": "…" },
      "sentiment": "very_positive",
      "sentiment_summary": "…",
      "themes": [{ "key": "customer-support", "labels": { "fr": "Support client", "en": "Customer support", "es": "Soporte" } }],
      "status": "approved",
      "created_at": "2026-08-14T09:12:00.000Z"
    }
  ],
  "count": 1,
  "total": 37,
  "limit": 50,
  "offset": 0
}
GET/api/public/v1/forms

Devuelve los formularios de recogida, o uno solo por su slug.

Parámetros

  • slug Slug del formulario o del muro.

Ejemplo de petición

curl https://plausa.lovable.app/api/public/v1/forms \
  -H "x-api-key: plausa_sk_xxxxxxxxxxxx"

Ejemplo de respuesta

{
  "data": [
    {
      "id": "b21e…",
      "slug": "kairo-2026",
      "name": "Clients Kairo",
      "title": "Racontez-nous votre expérience",
      "questions": ["…", "…"],
      "locale": "fr",
      "is_active": true,
      "testimonial_count": 12,
      "public_url": "https://plausa.lovable.app/t/kairo-2026",
      "created_at": "2026-07-02T10:00:00.000Z"
    }
  ],
  "count": 1
}
POST/api/public/v1/forms

Crea un formulario de recogida y devuelve su enlace público.

Parámetros

  • body Cuerpo JSON: name, title, intro, accentColor, questions (1-5), locale, isActive.

Ejemplo de petición

curl -X POST https://plausa.lovable.app/api/public/v1/forms \
  -H "x-api-key: plausa_sk_xxxxxxxxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "name": "Clients Kairo",
    "title": "Racontez-nous votre expérience",
    "intro": "2 minutes, pas plus.",
    "accentColor": "#1F4B43",
    "questions": ["Quel problème cherchiez-vous à résoudre ?"],
    "locale": "fr"
  }'

Ejemplo de respuesta

{
  "data": {
    "id": "d4a9…",
    "slug": "k3f9a2",
    "public_url": "https://plausa.lovable.app/t/k3f9a2"
  }
}
GET/api/public/v1/walls

Obtiene un muro (metadatos) y, con un slug, sus testimonios aprobados.

Parámetros

  • slug Slug del formulario o del muro.
  • locale fr | en | es — idioma de los testimonios devueltos.

Ejemplo de petición

curl "https://plausa.lovable.app/api/public/v1/walls?slug=kairo&locale=en" \
  -H "x-api-key: plausa_sk_xxxxxxxxxxxx"

Ejemplo de respuesta

{
  "data": {
    "id": "9ac1…",
    "slug": "kairo",
    "title": "Ils parlent de nous",
    "brand_name": "Kairo",
    "layout": "masonry",
    "locale": "en",
    "public_url": "https://plausa.lovable.app/wall/kairo",
    "embed_url": "https://plausa.lovable.app/embed/kairo",
    "items": [{ "id": "6f1c…", "authorName": "Claire Meunier", "body": "…", "rating": 5 }],
    "item_count": 24
  }
}
GET/api/public/v1/stats

Estadísticas básicas de la cuenta: volumen, sentimiento, valoración, temas.

Parámetros

Sin parámetros.

Ejemplo de petición

curl https://plausa.lovable.app/api/public/v1/stats \
  -H "x-api-key: plausa_sk_xxxxxxxxxxxx"

Ejemplo de respuesta

{
  "data": {
    "testimonials": {
      "total": 37,
      "last_30_days": 9,
      "by_status": { "approved": 30, "new": 7 },
      "by_sentiment": { "very_positive": 21, "positive": 14, "neutral": 2 },
      "by_medium": { "text": 28, "video": 9 },
      "average_rating": 4.78
    },
    "top_themes": [{ "key": "customer-support", "count": 11 }],
    "forms": 3,
    "walls": 2
  }
}

Explorador interactivo (OpenAPI)

Prueba cada endpoint desde esta página: pulsa «Authorize», pega tu clave Business y usa «Try it out» en la operación que quieras. Los esquemas de petición y respuesta provienen del contrato OpenAPI 3.1.

Descargar el contrato openapi.json

Códigos de error

401
Clave ausente, desconocida o revocada.
403
La cuenta no está (o ya no está) en el plan Business.
400 / 422
Filtro inválido o cuerpo JSON rechazado.
402
Límite del plan alcanzado al crear un recurso.
429
Límite de peticiones superado.

¿Listo para conectarlo?

La API forma parte del plan Business, junto con la marca blanca y los puestos de equipo.

Ver precios