Documentación para desarrolladores
API y servidor MCP de GetLinkFast
Busque sitios, llene su carrito y haga pedidos con créditos sin abrir el panel: desde un script, un escenario de Make o n8n, o un agente de IA como Claude o Cursor. La API y el servidor MCP usan la misma clave y devuelven el mismo JSON.
Para qué sirve
- Agencias y equipos SEO: conecte sus herramientas internas y sus tableros de seguimiento a su cuenta. Catálogo, carrito, pedidos y estados se leen en JSON.
- Agentes de IA: pida a Claude Code o Cursor «encuéntrame 5 sitios de finanzas con DR 40+ y haz el pedido». El agente busca, le muestra el resumen y solo hace el pedido con su aprobación.
- Make, n8n, Zapier: basta con un módulo HTTP y una clave.
La API vende el artículo de invitado (guest_post), la inserción de enlace (link_insertion) y los packs SEO/GEO, solo con créditos. La compra de créditos y las demás ofertas siguen en el panel.
Crear una clave
- Abra Panel → Acceso API.
- Asigne un nombre a la clave (por ejemplo «Agente Claude» o «Informes Make») y elija sus permisos. En una clave que puede hacer pedidos, puede fijar un tope por pedido y un tope en 24 horas.
- Copie la clave. Empieza por
glf_live_y solo se muestra una vez: solo guardamos una huella de ella. - Envíela en la cabecera de cada solicitud:
Authorization: Bearer glf_live_…
Como máximo 10 claves activas por organización. Una clave revocada deja de funcionar de inmediato, al igual que las claves de un miembro que abandona la organización. Mantenga la clave fuera de sus repositorios de código: quien la tenga actúa en nombre de su organización.
Los permisos de una clave
Cada clave lleva uno o varios permisos. Una solicitud sin el permiso necesario recibe 403 insufficient_scope, y un agente de IA solo ve las herramientas permitidas.
| Permiso | Da acceso a | Quién puede concederlo |
|---|---|---|
read | Catálogo, categorías, cuenta y saldo, historial de créditos, pedidos, presupuestos de packs. | Siempre incluido. |
cart | Añadir, modificar y quitar líneas del carrito. | Cualquier miembro de la organización. |
purchase | Pedir el carrito o un pack, con créditos. Incluye el carrito. | Solo el propietario de la organización. |
Inicio rápido
Todas las rutas empiezan por https://www.getlinkfast.com/api/v1. Mantenga el www: la dirección sin www redirige, y un cliente HTTP deja de enviar la cabecera Authorization tras una redirección.
Los importes están en euros sin IVA. Las respuestas son JSON, con campos en snake_case.
curl https://www.getlinkfast.com/api/v1/account \
-H "Authorization: Bearer glf_live_…"curl "https://www.getlinkfast.com/api/v1/sites?dr_min=40&language=fr&product=guest_post&sort=dr&dir=desc&page_size=10" \
-H "Authorization: Bearer glf_live_…"curl -X POST https://www.getlinkfast.com/api/v1/cart/items \
-H "Authorization: Bearer glf_live_…" \
-H "Content-Type: application/json" \
-d '{"site_id":"8a1f0c3e-5b7d-4e2a-9c61-0f3b2d4e6a17","product_type":"guest_post","target_url":"https://www.example.com/invoicing","anchor":"invoicing software","topic":"How to choose invoicing software for a small business"}'Sustituya site_id por el id de un sitio del paso 2. No envíe nunca un precio: lo calcula el servidor.
curl -X POST https://www.getlinkfast.com/api/v1/checkout \
-H "Authorization: Bearer glf_live_…" \
-H "Idempotency-Key: order-2026-10-14-001"La respuesta da el id del pedido, el importe cargado y su saldo restante. Después, siga su avance con GET /orders/{id}.
Pedir con créditos
La API pide solo con créditos y nunca inicia un pago con tarjeta. Los créditos se recargan en el panel.
Un pedido toma las líneas guest_post y link_insertion del carrito. Las demás líneas, añadidas desde el panel, se quedan en el carrito y se listan en skipped_items.
Sin tope por defecto: su saldo es el único límite. En una clave que puede hacer pedidos, fije un tope por pedido y un tope en 24 horas móviles. Un pedido que los supere se rechaza (403 spending_limit_exceeded, con lo que queda disponible), sin cargo.
Saldo insuficiente: 402 insufficient_credits, con el importe que falta y el enlace a la página Créditos, para transmitirlo a alguien de su equipo. No se carga nada.
Después, todo funciona como desde el panel: email de confirmación y seguimiento en la pantalla Pedidos, donde el pedido lleva el nombre de la clave que lo hizo.
La cabecera Idempotency-Key
- Obligatoria en
POST /checkoutyPOST /packs/orders: de 8 a 128 caracteres ASCII imprimibles, sin espacios. Sin ella:400 idempotency_key_required. - Un valor equivale a una intención de compra. Reenviar el mismo valor devuelve el pedido original (
200,"replayed": true) sin un segundo cargo, aunque el carrito haya cambiado desde entonces. - Tras un tiempo de espera agotado o un corte de red, reintente con el mismo valor: no pagará dos veces.
- Para una nueva compra, genere un nuevo valor, por ejemplo un UUID.
- Tanto en
POST /checkoutcomo enPOST /packs/orders, un valor que ya sirvió para otra compra se rechaza:409 idempotency_conflict, sin cargo. Para un pack, el mismo valor enviado con otro contenido también se rechaza. - En el lado MCP, el token de confirmación cumple esta función: no tiene nada que generar.
Límites
- 120 solicitudes por minuto y por clave para la lectura, y otras tantas, por separado, para el carrito: una no consume de la otra.
- 10 llamadas por minuto y por clave a las rutas o herramientas de compra — reintentos, rechazos y paso de resumen MCP incluidos.
- 300 solicitudes HTTP por minuto y por clave en el servidor MCP. Cada herramienta llamada cuenta además en el límite de su permiso.
- Por encima:
429 rate_limited. La espera, en segundos, la indica la cabeceraRetry-Afteren HTTP, ydetails.retry_after_secondsen el resultado de una herramienta MCP. - Como máximo 100 resultados por página (
page_size). - Cuerpo de la solicitud: 1 MB como máximo.
Códigos de error
Todos los errores tienen la misma forma. Compruebe code: es estable. message está en inglés y se dirige al desarrollador; details indica el campo erróneo o los importes.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this order. Nothing was debited. Ask a human to top up at credits_url, then retry with the same Idempotency-Key.",
"details": {
"missing_amount": 42,
"credits_url": "https://www.getlinkfast.com/dashboard/credits"
}
}
}| Código | HTTP | Qué significa |
|---|---|---|
invalid_json | 400 | El cuerpo de la solicitud no es un JSON legible. Revise la sintaxis y la cabecera Content-Type: application/json. |
idempotency_key_required | 400 | Cabecera Idempotency-Key ausente o mal formada en una ruta de compra. Envíe un valor de 8 a 128 caracteres. |
invalid_api_key | 401 | Clave ausente, mal formada, desconocida o revocada, o creada por un miembro que abandonó la organización. Revise la cabecera Authorization: Bearer glf_live_…. |
insufficient_credits | 402 | Saldo insuficiente. details.missing_amount da el importe que falta, details.credits_url la página donde recargar. No se ha cargado nada. |
insufficient_scope | 403 | La clave no tiene el permiso que exige esta ruta o herramienta. Cree una clave con ese permiso. |
spending_limit_exceeded | 403 | El pedido supera un tope de la clave: por pedido (window: order) o en 24 horas (window: 24h). details.remaining da lo que queda. No se ha cargado nada. |
not_found | 404 | Recurso no encontrado, o que no pertenece a su organización. |
method_not_allowed | 405 | Servidor MCP: GET y DELETE no se aceptan. Envíe cada mensaje JSON-RPC como POST. |
organization_financial_hold | 409 | Las compras están bloqueadas en su organización. Contáctenos. No se ha cargado nada. |
page_already_sold | 409 | Una página del carrito (inserción de enlace) acaba de venderse. Quite la línea y vuelva a pedir con una nueva Idempotency-Key. |
cart_already_ordered | 409 | Una línea del carrito ya se pidió en otra compra (panel u otra Idempotency-Key). Vuelva a leer el carrito antes de pedir con un nuevo valor. |
idempotency_conflict | 409 | Esta Idempotency-Key ya se usó para otra compra. Use un nuevo valor para una nueva compra. |
not_ready | 409 | La auditoría aún no está lista. Espere al estado ready con get_audit y después añada la página. |
full_pass_running | 409 | El informe completo de la auditoría aún se está preparando. Vuelva a intentarlo en unos minutos. No se ha iniciado nada. |
limit_reached | 409 | La auditoría ya tiene 8 páginas añadidas por usted, incluidos los análisis en curso. No se ha iniciado nada. |
already_present | 409 | Esta página ya está en la auditoría o su análisis está en curso. No se ha iniciado nada. |
already_ordered | 409 | Este enlace planificado ya está pedido: ya no se puede cancelar aquí. |
not_cancellable | 409 | Este enlace no se puede cancelar por ahora. Vuelva a leerlo con get_plan. |
team_planned | 409 | Este enlace lo programó nuestro equipo, no la API: no se puede cancelar aquí. Para cambiarlo, el propietario de la cuenta contacta con soporte. |
payload_too_large | 413 | Cuerpo de la solicitud de más de 1 MB. |
invalid_parameter | 422 | Parámetro de consulta inválido, repetido o desconocido. details.fields nombra cada parámetro erróneo y el motivo. |
invalid_arguments | 422 | Combinación de argumentos no válida, por ejemplo ni domain ni audit_id, o los dos. details.field nombra el campo. No se ha hecho nada. |
invalid_domain | 422 | Dominio o URL ilegible. Envíe un nombre de dominio, por ejemplo example.com. |
own_network_domain | 422 | Este dominio forma parte de nuestra red de publicación: no se puede auditar. No se ha iniciado nada. |
invalid_body | 422 | Campo inválido o desconocido en el cuerpo. details.fields nombra cada campo erróneo y el motivo. |
product_not_available_via_api | 422 | La API vende el artículo de invitado y la inserción de enlace. Los demás productos se piden desde el panel. |
image_not_uploaded | 422 | La imagen destacada debe haberse subido a GetLinkFast desde el panel. |
cart_empty | 422 | Ninguna línea del carrito se puede pedir por la API. No se ha cargado nada. |
cart_invalid | 422 | Algunas líneas están incompletas o ya no están disponibles. details.items lista cada línea y sus problemas. No se ha cargado nada. |
invalid_pack_input | 422 | El pack no cumple sus reglas (details.reason). No se ha cargado nada. |
site_unavailable | 422 | Este sitio no existe o ya no está a la venta. |
target_page_required | 422 | Una inserción de enlace requiere page_id: tómelo de la lista de páginas del sitio. |
target_page_not_found | 422 | Esta página no pertenece a este sitio. |
target_page_sold | 422 | Esta página ya se ha vendido. |
target_page_withdrawn | 422 | Esta página ya no se ofrece. |
target_page_already_in_cart | 422 | Esta página ya está en su carrito. |
product_unavailable | 422 | Este sitio no vende este producto. |
invalid_url | 422 | Dirección ilegible. Envíe una dirección http(s) completa, sin credenciales ni puerto. |
other_site | 422 | Esta página no está en el dominio auditado. Envíe una página del mismo sitio. |
invalid_keyword | 422 | Búsqueda objetivo demasiado larga: 120 caracteres como máximo. |
rate_limited | 429 | Demasiadas solicitudes para esta clave. Espere el número de segundos que indica la cabecera Retry-After en HTTP, o details.retry_after_seconds en el resultado de una herramienta MCP. |
audit_quota_exceeded | 429 | Esta clave ya ha lanzado 10 auditorías en las últimas 24 horas. No se ha lanzado nada: vuelva a intentarlo más tarde. |
internal_error | 500 | Error de nuestra parte, ya notificado al equipo. Vuelva a intentarlo más tarde: una compra reintentada con la misma Idempotency-Key nunca se carga dos veces. |
engine_unavailable | 502 | El motor de auditoría no responde por el momento. No se ha lanzado nada: vuelva a intentarlo más tarde. |
packs_unavailable | 503 | Los packs SEO/GEO aún no están disponibles. |
confirmation_expired | Herramienta MCP | Token de confirmación caducado, o carrito, precios o clave modificados desde el resumen. No se ha cargado nada: vuelva a llamar a la herramienta sin token para obtener un nuevo resumen. |
purchase_unavailable | Herramienta MCP | Las compras por el servidor MCP no están disponibles por el momento. No se ha cargado nada. Vuelva a intentarlo más tarde. |
unknown_tool | Herramienta MCP | Herramienta desconocida, o no permitida por los permisos de la clave. tools/list da las herramientas disponibles. |
audit_failed | Herramienta MCP | Esta auditoría ha fallado, así que no es posible ningún plan. Lance una nueva con run_audit. No se ha hecho nada. |
audit_not_ready | Herramienta MCP | Esta auditoría no ha terminado. Espere al estado ready con get_audit y vuelva a llamar a plan_links. No se ha hecho nada. |
budget_too_low | Herramienta MCP | El presupuesto mensual está por debajo del mínimo de 100 € al mes. No se ha hecho nada. |
start_date_too_far | Herramienta MCP | La fecha de inicio es demasiado lejana. El mensaje indica la última fecha permitida. No se ha hecho nada. |
too_many_pages | Herramienta MCP | Un proyecto sigue un número limitado de páginas. Envíe menos páginas nuevas en target_urls. No se ha hecho nada. |
plan_exists | Herramienta MCP | Este dominio ya tiene enlaces planificados que aún no se han pedido. Los planes no se fusionan: retírelos con cancel_planned_link y empiece de nuevo. No se ha hecho nada. |
pending_proposals | Herramienta MCP | Nuestro equipo está revisando enlaces propuestos para este dominio, así que por ahora no se puede añadir ningún plan. details.count indica cuántos son y details.retry_after la fecha a partir de la cual volver a intentarlo (si no se programan antes, caducan). Si no, pida al propietario de la cuenta que contacte con soporte. No se ha hecho nada. |
no_links_found | Herramienta MCP | Ningún sitio del catálogo encaja con estas páginas con este presupuesto mensual. Pruebe con otras páginas o un presupuesto mayor. No se ha hecho nada. |
plan_in_progress | Herramienta MCP | Este plan se está guardando ahora mismo. Vuelva a llamar a plan_links con el mismo token en unos segundos para leer el resultado. |
plan_outcome_unknown | Herramienta MCP | El guardado se interrumpió y se desconoce su resultado. No confirme de nuevo: lea el plan con get_plan. |
plan_conflict | Herramienta MCP | El plan ya no es válido tal cual: el proyecto del dominio cambió, sus fechas ya no caen dentro de los meses del presupuesto (que empiezan con la confirmación) o uno de sus sitios ya no está disponible para este dominio. details.reason indica cuál. No se escribió nada: vuelva a llamar a plan_links sin token para obtener un nuevo resumen. |
plan_retry | Herramienta MCP | Otra llamada con este token terminó sin guardar el plan. Vuelva a llamar a plan_links con el mismo token para leer el resultado. |
Servidor MCP
El servidor MCP da a su agente de IA las mismas funciones que la API, con la misma clave. Su dirección: https://www.getlinkfast.com/api/mcp.
Claude Code
Un comando en su terminal:
claude mcp add --transport http getlinkfast https://www.getlinkfast.com/api/mcp --header "Authorization: Bearer glf_live_…"Cursor
En ~/.cursor/mcp.json. Evite el archivo .cursor/mcp.json de un proyecto: a menudo acaba en el repositorio, con la clave.
{
"mcpServers": {
"getlinkfast": {
"url": "https://www.getlinkfast.com/api/mcp",
"headers": {
"Authorization": "Bearer glf_live_…"
}
}
}
}Claude Desktop
Claude Desktop no envía cabeceras personalizadas a un servidor remoto, así que no puede transmitir su clave. Se conectará de forma nativa con la conexión OAuth, prevista en una próxima versión. Hoy, use Claude Code o Cursor: envían la clave en la cabecera Authorization.
Las herramientas
El agente solo ve las herramientas permitidas por los permisos de la clave: una clave sin permiso para pedir no tiene ninguna herramienta de compra.
readsearch_sitesget_sitelist_site_pageslist_categoriesget_accountlist_ordersget_orderget_auditquote_packlist_auditsget_plancartget_cartadd_to_cartupdate_cart_itemremove_cart_itemadd_audit_pagerun_auditcancel_planned_linkpurchasecheckoutorder_packplan_links
La compra en dos pasos
- El agente llama a
checkoutoorder_packsinconfirmation_token: no se carga nada. Recibe el resumen (líneas, total, saldo tras el cargo, tope restante) y unconfirmation_token. - Le muestra ese resumen. Si usted acepta, vuelve a llamar a la herramienta con el
confirmation_token: el pedido se realiza y se carga. - El token vale 10 minutos. Si mientras tanto cambia el carrito, un precio o la clave, se rechaza (
confirmation_expired) y el agente repite el paso 1. Volver a llamar con el mismo token tras un corte devuelve el mismo pedido, sin segundo cargo.
Cliente escrito a mano
El servidor no tiene sesión: cada mensaje JSON-RPC se envía como POST y la respuesta llega en JSON. Envíe Accept: application/json, text/event-stream y Content-Type: application/json; si no, el servidor responde 406. GET y DELETE responden 405.
curl -X POST https://www.getlinkfast.com/api/mcp \
-H "Authorization: Bearer glf_live_…" \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Auditar y planificar
Un agente puede auditar un sitio y repartir enlaces a lo largo de varios meses a partir del informe. Cuatro pasos, con las herramientas del servidor MCP.
run_auditlanza la auditoría completa de un dominio: controles técnicos, visibilidad en ChatGPT y sitios donde un enlace ayudaría. Cuente unos minutos. No se carga nada, y el informe se desbloquea con la cuota de auditorías de la organización si la tiene. Límite: 10 auditorías por clave y por 24 horas; si se pide el mismo dominio otra vez en la hora siguiente, se devuelve la auditoría existente.get_auditdevuelve el estado y el paso en curso, y después el informe ensummarycuando el estado pasa aready. Llámela cada 30 a 60 segundos.list_auditslista las auditorías de la organización, de la más reciente a la más antigua.plan_linksprepara un calendario a partir de una auditoría lista: un presupuesto mensual en euros sin IVA (al menos 100 €), de 2 a 12 meses y, opcionalmente, una fecha de inicio y las páginas objetivo. Como en una compra, hay dos pasos. Sin token no se guarda nada: el agente recibe el calendario (enlaces, fechas de envío, total) y unconfirmation_tokenválido 10 minutos. Con su aprobación, vuelve a llamar a la herramienta con los mismos campos y el token, y el plan se guarda.get_plansigue cada enlace: página de destino, ancla, precio y estado (programado, pedido, publicado, cancelado o fallido, con la causa del fallo, por ejemploinsufficient_credits).cancel_planned_linkcancela un enlace planificado por la API o todos los de un dominio que aún no se han pedido. Los enlaces programados por nuestro equipo se mantienen:team_plannedpara un enlace,skipped_team_plannedpara su número.
Al guardar el plan no se carga nada. Cada enlace se carga en créditos el día de su envío, al precio releído ese día, en el pase diario de la mañana (hacia las 06:20 UTC). Si falta saldo ese día, el enlace no se pide y aparece como fallido en get_plan. Un enlace ya pedido no se puede cancelar.
Permisos: run_audit y cancel_planned_link necesitan cart, plan_links necesita purchase, y get_audit, list_audits y get_plan necesitan read. Los topes de gasto de la clave se aplican a los enlaces planificados.
En el panel, la página Delegación muestra estos enlaces en el bloque «Enlaces programados». El propietario de la organización puede retirar ahí los enlaces planificados por la API. Los que planifica nuestro equipo son solo de lectura.
Referencia
Cada ruta con su permiso y la herramienta MCP que le corresponde. Parámetros, esquemas de respuesta y errores ruta por ruta: la descripción OpenAPI 3.1.
| Ruta | Permiso | Herramienta MCP | Función |
|---|---|---|---|
GET /sites | read | search_sites | Buscar en el catálogo: métricas, precio, categoría, idioma, producto; orden y paginación. |
GET /sites/{id} | read | get_site | Un sitio: métricas, precios y reglas de publicación. |
GET /sites/{id}/pages | read | list_site_pages | Las páginas de un sitio abiertas a la inserción de enlace, con su precio y su tráfico de Google. |
GET /categories | read | list_categories | Las categorías y sus id, para el filtro category. |
GET /account | read | get_account | Organización, saldo de créditos, permisos y topes de la clave, gasto en 24 horas. |
GET /credits/transactions | read | ninguna | Historial de créditos. |
GET /orders | read | list_orders | Sus pedidos, filtrables por estado y por fecha. |
GET /orders/{id} | read | get_order | Un pedido y sus líneas, con su estado. |
GET /cart/items | cart | get_cart | El carrito: líneas, precios actualizados y problemas que bloquean. |
POST /cart/items | cart | add_to_cart | Añadir un artículo de invitado o una inserción de enlace. |
PATCH /cart/items/{id} | cart | update_cart_item | Completar o modificar el brief de una línea. |
DELETE /cart/items/{id} | cart | remove_cart_item | Quitar una línea. |
GET /audits/{id} | read | get_audit | Leer una auditoría: estado, paso en curso y después el informe. |
POST /audits/{id}/pages | cart | add_audit_page | Añade una página a impulsar a una auditoría lista (8 como máximo). El análisis tarda de 1 a 4 minutos: siga su estado con get_audit. No se cobra nada. |
POST /checkout | purchase | checkout | Pedir el carrito con créditos. |
POST /packs/quote | read | quote_pack | Presupuestar un pack SEO/GEO, sin cargo. |
POST /packs/orders | purchase | order_pack | Pedir un pack SEO/GEO con créditos. |
| Solo servidor MCP | cart | run_audit | Lanzar la auditoría completa de un dominio. No se carga nada. |
| Solo servidor MCP | read | list_audits | Listar las auditorías de la organización, de la más reciente a la más antigua. |
| Solo servidor MCP | purchase | plan_links | Planificar enlaces de 2 a 12 meses a partir de una auditoría, en dos pasos. Al guardar no se carga nada. |
| Solo servidor MCP | read | get_plan | Leer los enlaces planificados de un dominio: fecha de envío y estado de cada uno. |
| Solo servidor MCP | cart | cancel_planned_link | Cancelar un enlace planificado o todos los de un dominio que aún no se han pedido. |
¿Una pregunta sobre la API? Escríbanos, una persona del equipo le responde.
