Autenticación

Obtenga tokens de acceso y configure la autenticación

Descripción general de autenticación (API v3)

La API de SurveyNinja usa autorización por clave de API. Crea una clave en el panel de tu cuenta y pásala en el encabezado Authorization: Bearer YOUR_API_TOKEN en todas las solicitudes de la API v3.

La API v3 usa Laravel Sanctum. El formato de la clave es id|string, por ejemplo: 42|xK7mP9nQ2wL5eH8jR3vU6tY0iD4aF1bG.

Cómo obtener una clave de API

  1. 1 Inicia sesión en tu cuenta de SurveyNinja
  2. 2 Ve a Settings → API o directamente en app.surveyninja.io/account/api
  3. 3 Haz clic en "Generar clave de API", establece un nombre y copia la clave — solo se muestra una vez

Descarga la versión en markdown de la sección "Autenticación" para usar en ChatGPT / otros LLMs:

Información del usuario actual GET /api/v3/service/user

Después de obtener un token, puedes solicitar información sobre el propietario del token.

GET /api/v3/service/user
curl -X GET "https://api.surveyninja.io/api/v3/service/user" \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Accept: application/json"

Uso de un token Bearer

Añade el token al encabezado Authorization en todas las solicitudes protegidas de la API v3:

GET /quiz
curl -X GET https://api.surveyninja.io/api/v3/service/quiz \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json"

JavaScript (fetch)

fetch('https://api.surveyninja.io/api/v3/service/quiz', { method: 'GET', headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => console.log(data));

Python (requests)

import requests headers = { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' } response = requests.get('https://api.surveyninja.io/api/v3/service/quiz', headers=headers) data = response.json()

PHP (cURL)

$url = 'https://api.surveyninja.io/api/v3/service/quiz'; $token = 'YOUR_TOKEN'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode === 200) { $data = json_decode($response, true); echo json_encode($data, JSON_PRETTY_PRINT); } else { echo "Error: HTTP $httpCode"; }

PHP (Guzzle)

use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; $client = new Client(); $token = 'YOUR_TOKEN'; try { $response = $client->get('https://api.surveyninja.io/api/v3/service/quiz', [ 'headers' => [ 'Authorization' => 'Bearer ' . $token, 'Content-Type' => 'application/json' ] ]); $data = json_decode($response->getBody(), true); echo json_encode($data, JSON_PRETTY_PRINT); } catch (RequestException $e) { echo "Error: " . $e->getMessage(); }

Buenas prácticas de seguridad

No hagas

  • No pases tokens en los parámetros de URL
  • No confirmes tokens en repositorios públicos
  • No expongas tokens en código del lado del cliente
  • No compartas un token entre diferentes aplicaciones

Haz

  • Almacena los tokens en variables de entorno
  • Rota los tokens regularmente
  • Usa HTTPS para todas las solicitudes

Manejo de errores de autenticación

Códigos de error

Código Descripción Resolución
401 Token inválido o faltante Verifica que el token en el encabezado Authorization sea correcto
403 El token no tiene permisos de acceso Comprueba los permisos del token en la configuración
429 Límite de solicitudes excedido Reduce la frecuencia de solicitudes o mejora tu plan