GetLinkFastGetLinkFast

Documentazione per sviluppatori

API e server MCP di GetLinkFast

Cerca siti, riempi il carrello e ordina con crediti senza aprire la dashboard: da uno script, da uno scenario Make o n8n, o da un agente IA come Claude o Cursor. L'API e il server MCP usano la stessa chiave e restituiscono lo stesso JSON.

A cosa serve

  • Agenzie e team SEO: collega i tuoi strumenti interni e le tue dashboard di monitoraggio al tuo account. Catalogo, carrello, ordini e stati si leggono in JSON.
  • Agenti IA: chiedi a Claude Code o Cursor «trovami 5 siti di finanza con DR 40+ e ordina». L'agente cerca, ti mostra il riepilogo e ordina solo dopo il tuo consenso.
  • Make, n8n, Zapier: bastano un modulo HTTP e una chiave.

L'API vende l'articolo ospite (guest_post), l'inserimento di link (link_insertion) e i pacchetti SEO/GEO, solo in crediti. L'acquisto di crediti e le altre offerte restano nella dashboard.

Creare una chiave

  1. Apri Dashboard → Accesso API.
  2. Dai un nome alla chiave (ad esempio «Agente Claude» o «Report Make») e scegli i suoi permessi. Su una chiave che può ordinare, puoi fissare un tetto per ordine e un tetto sulle 24 ore.
  3. Copia la chiave. Inizia con glf_live_ e viene mostrata una sola volta: ne conserviamo solo un'impronta.
  4. Inviala nell'intestazione di ogni richiesta: Authorization: Bearer glf_live_…

Al massimo 10 chiavi attive per organizzazione. Una chiave revocata smette subito di funzionare, così come le chiavi di un membro che lascia l'organizzazione. Tieni la chiave fuori dai tuoi repository di codice: chi la possiede agisce a nome della tua organizzazione.

I permessi di una chiave

Ogni chiave porta uno o più permessi. Una richiesta senza il permesso necessario riceve 403 insufficient_scope, e un agente IA vede solo gli strumenti consentiti.

PermessoDà accesso aChi può concederlo
readCatalogo, categorie, account e saldo, storico dei crediti, ordini, preventivi dei pacchetti.Sempre incluso.
cartAggiungere, modificare e rimuovere righe del carrello.Qualsiasi membro dell'organizzazione.
purchaseOrdinare il carrello o un pacchetto, in crediti. Include il carrello.Solo il proprietario dell'organizzazione.

Avvio rapido

Tutte le rotte iniziano con https://www.getlinkfast.com/api/v1. Mantieni il www: l'indirizzo senza www reindirizza, e un client HTTP non invia più l'intestazione Authorization dopo un reindirizzamento.

Gli importi sono in euro IVA esclusa. Le risposte sono in JSON, i campi in snake_case.

1. Leggere il tuo account e il tuo saldo
curl https://www.getlinkfast.com/api/v1/account \
  -H "Authorization: Bearer glf_live_…"
2. Cercare siti: DR 40 e oltre, in francese, articolo ospite
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_…"
3. Aggiungere un articolo ospite al carrello
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"}'

Sostituisci site_id con l'id di un sito del passo 2. Non inviare mai un prezzo: lo calcola il server.

4. Ordinare il carrello in crediti
curl -X POST https://www.getlinkfast.com/api/v1/checkout \
  -H "Authorization: Bearer glf_live_…" \
  -H "Idempotency-Key: order-2026-10-14-001"

La risposta indica l'id dell'ordine, l'importo addebitato e il saldo residuo. Poi seguine l'avanzamento con GET /orders/{id}.

Ordinare in crediti

L'API ordina solo in crediti e non avvia mai un pagamento con carta. I crediti si ricaricano nella dashboard.

Un ordine prende le righe guest_post e link_insertion del carrello. Le altre righe, aggiunte dalla dashboard, restano nel carrello e sono elencate in skipped_items.

Nessun tetto predefinito: il tuo saldo è l'unico limite. Su una chiave che può ordinare, fissa un tetto per ordine e un tetto sulle 24 ore mobili. Un ordine che li supera viene rifiutato (403 spending_limit_exceeded, con il residuo disponibile), senza addebito.

Saldo insufficiente: 402 insufficient_credits, con l'importo mancante e il link alla pagina Crediti, da inoltrare a una persona del tuo team. Nulla viene addebitato.

Poi tutto funziona come dalla dashboard: email di conferma e monitoraggio nella schermata Ordini, dove l'ordine porta il nome della chiave che lo ha effettuato.

L'intestazione Idempotency-Key

  • Obbligatoria su POST /checkout e POST /packs/orders: da 8 a 128 caratteri ASCII stampabili, senza spazi. Senza: 400 idempotency_key_required.
  • Un valore equivale a un'intenzione d'acquisto. Reinviare lo stesso valore restituisce l'ordine originale (200, "replayed": true) senza secondo addebito, anche se nel frattempo il carrello è cambiato.
  • Dopo un timeout o un'interruzione di rete, riprova con lo stesso valore: non pagherai due volte.
  • Per un nuovo acquisto, genera un nuovo valore, ad esempio un UUID.
  • Su POST /checkout come su POST /packs/orders, un valore già usato per un altro acquisto viene rifiutato: 409 idempotency_conflict, senza addebito. Per un pacchetto, viene rifiutato anche lo stesso valore inviato con un contenuto diverso.
  • Lato MCP, il token di conferma svolge questo ruolo: non devi generare nulla.

Limiti

  • 120 richieste al minuto per chiave per la lettura, e altrettante, separatamente, per il carrello: l'una non intacca l'altra.
  • 10 chiamate al minuto per chiave verso le rotte o gli strumenti d'acquisto — ripetizioni, rifiuti e passo di riepilogo MCP compresi.
  • 300 richieste HTTP al minuto per chiave sul server MCP. Ogni strumento chiamato conta in più nel limite del suo permesso.
  • Oltre: 429 rate_limited. L'attesa, in secondi, è indicata dall'intestazione Retry-After in HTTP, e da details.retry_after_seconds nel risultato di uno strumento MCP.
  • Al massimo 100 risultati per pagina (page_size).
  • Corpo della richiesta: al massimo 1 MB.

Codici di errore

Ogni errore ha la stessa forma. Verifica code: è stabile. message è in inglese e si rivolge allo sviluppatore; details indica il campo errato o gli importi.

Esempio: saldo insufficiente
{
  "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"
    }
  }
}
CodiceHTTPCosa significa
invalid_json400Il corpo della richiesta non è un JSON leggibile. Verifica la sintassi e l'intestazione Content-Type: application/json.
idempotency_key_required400Intestazione Idempotency-Key assente o malformata su una rotta d'acquisto. Invia un valore da 8 a 128 caratteri.
invalid_api_key401Chiave assente, malformata, sconosciuta o revocata, oppure creata da un membro che ha lasciato l'organizzazione. Verifica l'intestazione Authorization: Bearer glf_live_….
insufficient_credits402Saldo insufficiente. details.missing_amount indica l'importo mancante, details.credits_url la pagina per ricaricare. Nulla è stato addebitato.
insufficient_scope403La chiave non ha il permesso richiesto da questa rotta o da questo strumento. Crea una chiave con quel permesso.
spending_limit_exceeded403L'ordine supera un tetto della chiave: per ordine (window: order) o sulle 24 ore (window: 24h). details.remaining indica il residuo. Nulla è stato addebitato.
not_found404Risorsa non trovata, o che non appartiene alla tua organizzazione.
method_not_allowed405Server MCP: GET e DELETE non sono accettati. Invia ogni messaggio JSON-RPC in POST.
organization_financial_hold409Gli acquisti sono bloccati sulla tua organizzazione. Contattaci. Nulla è stato addebitato.
page_already_sold409Una pagina del carrello (inserimento di link) è appena stata venduta. Rimuovi la riga, poi riordina con una nuova Idempotency-Key.
cart_already_ordered409Una riga del carrello è già stata ordinata da un altro acquisto (dashboard o altra Idempotency-Key). Rileggi il carrello prima di riordinare con un nuovo valore.
idempotency_conflict409Questa Idempotency-Key è già stata usata per un altro acquisto. Usa un nuovo valore per un nuovo acquisto.
not_ready409L'audit non è ancora pronto. Attendi lo stato ready con get_audit, poi aggiungi la pagina.
full_pass_running409Il rapporto completo dell'audit è ancora in preparazione. Riprova tra qualche minuto. Non è stato avviato nulla.
limit_reached409L'audit ha già 8 pagine aggiunte da te, comprese le analisi in corso. Non è stato avviato nulla.
already_present409Questa pagina è già nell'audit oppure la sua analisi è in corso. Non è stato avviato nulla.
already_ordered409Questo link pianificato è già ordinato: qui non si può più annullare.
not_cancellable409Questo link non si può annullare al momento. Rileggilo con get_plan.
team_planned409Questo link è stato programmato dal nostro team, non tramite l'API: non si annulla da qui. Per modificarlo, il titolare dell'account contatta l'assistenza.
payload_too_large413Corpo della richiesta oltre 1 MB.
invalid_parameter422Parametro di query non valido, ripetuto o sconosciuto. details.fields indica ogni parametro errato e il motivo.
invalid_arguments422Combinazione di argomenti non valida, per esempio né domain né audit_id, oppure entrambi. details.field indica il campo. Non è stato fatto nulla.
invalid_domain422Dominio o URL illeggibile. Invia un nome di dominio, per esempio example.com.
own_network_domain422Questo dominio fa parte della nostra rete di pubblicazione: non può essere analizzato. Non è stato avviato nulla.
invalid_body422Campo non valido o sconosciuto nel corpo. details.fields indica ogni campo errato e il motivo.
product_not_available_via_api422L'API vende l'articolo ospite e l'inserimento di link. Gli altri prodotti si ordinano dalla dashboard.
image_not_uploaded422L'immagine in evidenza deve essere stata caricata su GetLinkFast dalla dashboard.
cart_empty422Nessuna riga del carrello si può ordinare tramite l'API. Nulla è stato addebitato.
cart_invalid422Alcune righe sono incomplete o non più disponibili. details.items elenca ogni riga e i suoi problemi. Nulla è stato addebitato.
invalid_pack_input422Il pacchetto non rispetta le sue regole (details.reason). Nulla è stato addebitato.
site_unavailable422Questo sito non esiste o non è più in vendita.
target_page_required422Un inserimento di link richiede page_id: prendilo dall'elenco delle pagine del sito.
target_page_not_found422Questa pagina non appartiene a questo sito.
target_page_sold422Questa pagina è già stata venduta.
target_page_withdrawn422Questa pagina non è più proposta.
target_page_already_in_cart422Questa pagina è già nel tuo carrello.
product_unavailable422Questo sito non vende questo prodotto.
invalid_url422Indirizzo illeggibile. Invia un indirizzo http(s) completo, senza credenziali né porta.
other_site422Questa pagina non è sul dominio analizzato. Invia una pagina dello stesso sito.
invalid_keyword422Ricerca obiettivo troppo lunga: 120 caratteri al massimo.
rate_limited429Troppe richieste per questa chiave. Attendi il numero di secondi indicato dall'intestazione Retry-After in HTTP, o da details.retry_after_seconds nel risultato di uno strumento MCP.
audit_quota_exceeded429Questa chiave ha già avviato 10 audit nelle ultime 24 ore. Non è stato avviato nulla: riprova più tardi.
internal_error500Errore da parte nostra, già segnalato al team. Riprova più tardi: un acquisto ripetuto con la stessa Idempotency-Key non viene mai addebitato due volte.
engine_unavailable502Il motore di audit è temporaneamente irraggiungibile. Non è stato avviato nulla: riprova più tardi.
packs_unavailable503I pacchetti SEO/GEO non sono ancora disponibili.
confirmation_expiredStrumento MCPToken di conferma scaduto, oppure carrello, prezzi o chiave modificati dopo il riepilogo. Nulla è stato addebitato: richiama lo strumento senza token per ottenere un nuovo riepilogo.
purchase_unavailableStrumento MCPGli acquisti tramite il server MCP sono momentaneamente non disponibili. Nulla è stato addebitato. Riprova più tardi.
unknown_toolStrumento MCPStrumento sconosciuto, o non consentito dai permessi della chiave. tools/list indica gli strumenti disponibili.
audit_failedStrumento MCPQuesto audit è fallito, quindi nessun piano è possibile. Avviane uno nuovo con run_audit. Non è stato fatto nulla.
audit_not_readyStrumento MCPQuesto audit non è terminato. Attendi lo stato ready con get_audit, poi richiama plan_links. Non è stato fatto nulla.
budget_too_lowStrumento MCPIl budget mensile è sotto il minimo di 100 € al mese. Non è stato fatto nulla.
start_date_too_farStrumento MCPLa data di inizio è troppo lontana. Il messaggio indica l'ultima data consentita. Non è stato fatto nulla.
too_many_pagesStrumento MCPUn progetto segue un numero limitato di pagine. Invia meno pagine nuove in target_urls. Non è stato fatto nulla.
plan_existsStrumento MCPQuesto dominio ha già link pianificati non ancora ordinati. I piani non si uniscono: rimuovili con cancel_planned_link e ricomincia. Non è stato fatto nulla.
pending_proposalsStrumento MCPIl nostro team sta esaminando link proposti per questo dominio, quindi per ora non si può aggiungere alcun piano. details.count ne indica il numero e details.retry_after la data dopo la quale riprovare (se non vengono programmati entro allora, scadono). Altrimenti chiedi al titolare dell'account di contattare l'assistenza. Non è stato fatto nulla.
no_links_foundStrumento MCPNessun sito del catalogo si adatta a queste pagine con questo budget mensile. Prova altre pagine o un budget più alto. Non è stato fatto nulla.
plan_in_progressStrumento MCPQuesto piano si sta salvando in questo momento. Richiama plan_links con lo stesso token tra qualche secondo per leggere il risultato.
plan_outcome_unknownStrumento MCPIl salvataggio è stato interrotto e il suo esito è sconosciuto. Non confermare di nuovo: leggi il piano con get_plan.
plan_conflictStrumento MCPIl piano non regge più così com'è: il progetto del dominio è cambiato, le sue date non cadono più nei mesi del budget (che partono dalla conferma) oppure uno dei suoi siti non è più disponibile per questo dominio. details.reason dice quale. Non è stato scritto nulla: richiama plan_links senza token per un nuovo riepilogo.
plan_retryStrumento MCPUn'altra chiamata con questo token è terminata senza salvare il piano. Richiama plan_links con lo stesso token per leggere il risultato.

Server MCP

Il server MCP dà al tuo agente IA le stesse funzioni dell'API, con la stessa chiave. Il suo indirizzo: https://www.getlinkfast.com/api/mcp.

Claude Code

Un comando nel tuo terminale:

Terminal — Claude Code
claude mcp add --transport http getlinkfast https://www.getlinkfast.com/api/mcp --header "Authorization: Bearer glf_live_…"

Cursor

In ~/.cursor/mcp.json. Evita il file .cursor/mcp.json di un progetto: spesso finisce nel repository, insieme alla chiave.

~/.cursor/mcp.json
{
  "mcpServers": {
    "getlinkfast": {
      "url": "https://www.getlinkfast.com/api/mcp",
      "headers": {
        "Authorization": "Bearer glf_live_…"
      }
    }
  }
}

Claude Desktop

Claude Desktop non invia intestazioni personalizzate a un server remoto: non può quindi trasmettere la tua chiave. Si collegherà in modo nativo con la connessione OAuth, prevista in una prossima versione. Oggi usa Claude Code o Cursor: inviano la chiave nell'intestazione Authorization.

Gli strumenti

L'agente vede solo gli strumenti consentiti dai permessi della chiave: una chiave senza il permesso di ordinare non ha alcuno strumento d'acquisto.

read
search_sitesget_sitelist_site_pageslist_categoriesget_accountlist_ordersget_orderget_auditquote_packlist_auditsget_plan
cart
get_cartadd_to_cartupdate_cart_itemremove_cart_itemadd_audit_pagerun_auditcancel_planned_link
purchase
checkoutorder_packplan_links

L'acquisto in due tempi

  1. L'agente chiama checkout o order_pack senza confirmation_token: nulla viene addebitato. Riceve il riepilogo (righe, totale, saldo dopo l'addebito, tetto residuo) e un confirmation_token.
  2. Ti mostra questo riepilogo. Se accetti, richiama lo strumento con il confirmation_token: l'ordine viene effettuato e addebitato.
  3. Il token vale 10 minuti. Se nel frattempo cambiano il carrello, un prezzo o la chiave, viene rifiutato (confirmation_expired) e l'agente ripete il passo 1. Richiamare con lo stesso token dopo un'interruzione restituisce lo stesso ordine, senza secondo addebito.

Client scritto a mano

Il server è senza sessione: ogni messaggio JSON-RPC parte in POST e la risposta arriva in JSON. Invia Accept: application/json, text/event-stream e Content-Type: application/json, altrimenti il server risponde 406. GET e DELETE rispondono 405.

Elencare gli strumenti della tua chiave
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"}'

Auditare e pianificare

Un agente può fare l'audit di un sito e distribuire link su più mesi a partire dal rapporto. Quattro passaggi, con gli strumenti del server MCP.

  1. run_audit avvia l'audit completo di un dominio: controlli tecnici, visibilità su ChatGPT e siti dove un link aiuterebbe. Servono alcuni minuti. Non viene addebitato nulla, e il rapporto si sblocca con la quota di audit dell'organizzazione, se ne ha una. Limite: 10 audit per chiave ogni 24 ore; chiedendo di nuovo lo stesso dominio entro un'ora si ottiene l'audit esistente.
  2. get_audit restituisce lo stato e il passaggio in corso, poi il rapporto in summary quando lo stato diventa ready. Richiamalo ogni 30-60 secondi. list_audits elenca gli audit dell'organizzazione, dal più recente.
  3. plan_links prepara un calendario da un audit pronto: un budget mensile in euro IVA esclusa (almeno 100 €), da 2 a 12 mesi e, in opzione, una data di inizio e le pagine di destinazione. Come per un acquisto, sono due passaggi. Senza token non si salva nulla: l'agente riceve il calendario (link, date di invio, totale) e un confirmation_token valido 10 minuti. Dopo il tuo consenso richiama lo strumento con gli stessi campi e il token, e il piano viene salvato.
  4. get_plan segue ogni link: pagina di destinazione, ancora, prezzo e stato (programmato, ordinato, pubblicato, annullato o non riuscito, con la causa dell'errore, per esempio insufficient_credits). cancel_planned_link annulla un link pianificato tramite l'API, o tutti quelli di un dominio non ancora ordinati. I link programmati dal nostro team restano al loro posto: team_planned per un link, skipped_team_planned per il loro numero.

Al salvataggio del piano non viene addebitato nulla. Ogni link viene addebitato in crediti il giorno del suo invio, al prezzo riletto quel giorno, nel passaggio quotidiano del mattino (verso le 06:20 UTC). Se quel giorno il saldo non basta, il link non viene ordinato e compare come non riuscito in get_plan. Un link già ordinato non si può più annullare.

Permessi: run_audit e cancel_planned_link richiedono cart, plan_links richiede purchase, e get_audit, list_audits e get_plan richiedono read. I tetti di spesa della chiave valgono anche per i link pianificati.

Nella dashboard, la pagina Delega mostra questi link nel blocco «Link programmati». Il proprietario dell'organizzazione può rimuovere lì i link pianificati tramite l'API. Quelli pianificati dal nostro team sono in sola lettura.

Riferimento

Ogni rotta con il suo permesso e lo strumento MCP corrispondente. Parametri, schemi di risposta ed errori rotta per rotta: la descrizione OpenAPI 3.1.

RottaPermessoStrumento MCPRuolo
GET /sitesreadsearch_sitesCercare nel catalogo: metriche, prezzo, categoria, lingua, prodotto; ordinamento e paginazione.
GET /sites/{id}readget_siteUn sito: metriche, prezzi e regole di pubblicazione.
GET /sites/{id}/pagesreadlist_site_pagesLe pagine di un sito aperte all'inserimento di link, con il loro prezzo e il loro traffico Google.
GET /categoriesreadlist_categoriesLe categorie e i loro id, per il filtro category.
GET /accountreadget_accountOrganizzazione, saldo crediti, permessi e tetti della chiave, spesa sulle 24 ore.
GET /credits/transactionsreadnessunoStorico dei crediti.
GET /ordersreadlist_ordersI tuoi ordini, filtrabili per stato e per data.
GET /orders/{id}readget_orderUn ordine e le sue righe, con il loro stato.
GET /cart/itemscartget_cartIl carrello: righe, prezzi aggiornati e problemi bloccanti.
POST /cart/itemscartadd_to_cartAggiungere un articolo ospite o un inserimento di link.
PATCH /cart/items/{id}cartupdate_cart_itemCompletare o modificare il brief di una riga.
DELETE /cart/items/{id}cartremove_cart_itemRimuovere una riga.
GET /audits/{id}readget_auditLeggere un audit: stato, passaggio in corso, poi il rapporto.
POST /audits/{id}/pagescartadd_audit_pageAggiunge a un audit pronto una pagina da spingere (8 al massimo). L'analisi dura da 1 a 4 minuti: seguila con get_audit. Non viene addebitato nulla.
POST /checkoutpurchasecheckoutOrdinare il carrello in crediti.
POST /packs/quotereadquote_packQuotare un pacchetto SEO/GEO, senza addebito.
POST /packs/orderspurchaseorder_packOrdinare un pacchetto SEO/GEO in crediti.
Solo server MCPcartrun_auditAvviare l'audit completo di un dominio. Non viene addebitato nulla.
Solo server MCPreadlist_auditsElencare gli audit dell'organizzazione, dal più recente.
Solo server MCPpurchaseplan_linksPianificare link su 2-12 mesi da un audit, in due passaggi. Al salvataggio non viene addebitato nulla.
Solo server MCPreadget_planLeggere i link pianificati di un dominio: data di invio e stato di ciascuno.
Solo server MCPcartcancel_planned_linkAnnullare un link pianificato, o tutti quelli di un dominio non ancora ordinati.

Una domanda sull'API? Scrivici, una persona del team ti risponde.