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 Inicia sesión en tu cuenta de SurveyNinja
- 2 Ve a Settings → API o directamente en app.surveyninja.io/account/api
- 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:
AI Markdown
/static/api/authentication.md
AI Markdown
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 |