Documentación para desarrolladores
Automatiza enlaces profesionales con la API de Blinkode.
Crea enlaces, administra destinos y genera códigos QR desde una API clara con autenticación por token.
{
"data": {
"link": {
"id": "clx_123",
"slug": "K8m2pQzR",
"destinationUrl": "https://example.com",
"shortUrl": "https://bkode.link/K8m2pQzR",
"createdAt": "2026-05-27T20:00:00.000Z",
"expiresAt": null,
"hasPassword": false,
"clickCount": 0
}
}
}Autenticación
Utiliza una clave API que solo se muestra una vez.
Los usuarios Pro crean claves API desde su cuenta. El secreto completo se muestra una sola vez; después Blinkode conserva solo el prefijo y el hash.
- 1Usa una cuenta Pro con acceso a la API para clientes.
- 2Crea una clave desde el endpoint de claves API para usuarios con sesión.
- 3Guarda el secreto devuelto una sola vez; Blinkode conserva solo el hash.
- 4Envía la clave con Authorization: Bearer en las rutas /api/v1.
curl -X POST "$APP_URL/api/api-keys" \
-H "Content-Type: application/json" \
-d '{ "name": "Production automation" }'Authorization: Bearer blinkode_sk_<public-token>.<secret-token>
Content-Type: application/jsonCrear enlaces
Crea enlaces desde tu producto.
Las cuentas Pro pueden enviar expiración, contraseña, dominio y slug personalizado cuando el flujo lo requiere.
curl -X POST "$APP_URL/api/v1/links" \
-H "Authorization: Bearer $BLINKODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"destinationUrl": "https://example.com",
"expiresAt": "2026-06-30T00:00:00.000Z",
"password": "launch-secret"
}'const response = await fetch(`${appUrl}/api/v1/links`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BLINKODE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
destinationUrl: "https://example.com",
expiresAt: "2026-06-30T00:00:00.000Z",
password: "launch-secret",
}),
});
const payload = await response.json();import os
import requests
response = requests.post(
f"{os.environ['APP_URL']}/api/v1/links",
headers={
"Authorization": f"Bearer {os.environ['BLINKODE_API_KEY']}",
"Content-Type": "application/json",
},
json={
"destinationUrl": "https://example.com",
"expiresAt": "2026-06-30T00:00:00.000Z",
"password": "launch-secret",
},
)
payload = response.json()curl -X POST "$APP_URL/api/v1/links" \
-H "Authorization: Bearer $BLINKODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"domainId": "dom_123",
"slug": "spring-campaign",
"destinationUrl": "https://example.com"
}'Administrar enlaces
Lista, consulta y elimina enlaces.
Cada consulta o eliminación se limita al propietario de la clave API. Los enlaces desconocidos o ajenos devuelven la misma respuesta de “no encontrado”.
curl "$APP_URL/api/v1/links" \
-H "Authorization: Bearer $BLINKODE_API_KEY"curl "$APP_URL/api/v1/links/<link-id>" \
-H "Authorization: Bearer $BLINKODE_API_KEY"curl -X DELETE "$APP_URL/api/v1/links/<link-id>" \
-H "Authorization: Bearer $BLINKODE_API_KEY"Códigos QR
Genera códigos QR bajo demanda.
La salida QR se genera dinámicamente desde la URL corta y se devuelve como archivo listo para usar.
curl "$APP_URL/api/v1/links/<link-id>/qr?format=png" \
-H "Authorization: Bearer $BLINKODE_API_KEY" \
-o shortlink.pngcurl "$APP_URL/api/v1/links/<link-id>/qr?format=svg" \
-H "Authorization: Bearer $BLINKODE_API_KEY" \
-o shortlink.svgcurl "$APP_URL/api/v1/links/<link-id>/qr?format=svg&download=0" \
-H "Authorization: Bearer $BLINKODE_API_KEY"Errores
Maneja errores JSON predecibles.
Las llamadas fallidas devuelven un mensaje de error y un código legible por máquina. Las solicitudes limitadas incluyen retry-after.
{
"error": "API access is not enabled for this account.",
"code": "api_access_disabled"
}missing_api_key
No se envió el token Bearer.
invalid_api_key
La clave está mal formada, revocada o no coincide con el hash guardado.
api_access_disabled
El plan de la cuenta no incluye acceso a la API para clientes.
rate_limited
La clave API excedió el límite de solicitudes definido en Redis.
invalid_json
El cuerpo de la solicitud no es JSON válido.
invalid_destination_url
La URL de destino debe ser pública y usar HTTP o HTTPS.
invalid_expires_at
expiresAt debe ser una fecha ISO válida.
expired_expires_at
expiresAt debe estar al menos 24 horas en el futuro.
invalid_password
La contraseña debe ser una cadena de texto.
password_too_short
La contraseña debe tener al menos 6 caracteres.
unsafe_destination_url
El destino fue bloqueado por la validación de seguridad.
custom_domain_required
Los enlaces creados mediante la API requieren un dominio personalizado Pro activo.
custom_domain_unavailable
El dominio personalizado seleccionado no está disponible para esta cuenta.
custom_slug_unavailable
Los identificadores cortos personalizados requieren un dominio personalizado Pro en las solicitudes de la API para clientes.
slug_unavailable
El slug personalizado solicitado ya existe en ese dominio.
invalid_qr_format
El formato QR debe ser PNG o SVG.
short_link_not_found
El enlace solicitado no existe para el propietario de esta clave API.
Referencia API
Rutas disponibles en v1.
La gestión de dominios personalizados se realiza en el panel; los enlaces creados mediante la API deben usar un dominio Pro existente enviando `domainId`.