Documentatie voor ontwikkelaars
GetLinkFast API en MCP-server
Zoek sites, vul uw winkelwagen en bestel met tegoed zonder het dashboard te openen: vanuit een script, een Make- of n8n-scenario, of een AI-agent zoals Claude of Cursor. De API en de MCP-server gebruiken dezelfde sleutel en geven dezelfde JSON terug.
Waarvoor het dient
- Bureaus en SEO-teams: koppel uw interne tools en rapportagedashboards aan uw account. Catalogus, winkelwagen, bestellingen en statussen zijn als JSON leesbaar.
- AI-agents: vraag Claude Code of Cursor „zoek 5 financiële sites met DR 40+ en bestel ze”. De agent zoekt, toont u het overzicht en bestelt pas na uw akkoord.
- Make, n8n, Zapier: een HTTP-module en een sleutel zijn genoeg.
De API verkoopt gastartikelen (guest_post), linkinvoegingen (link_insertion) en SEO/GEO-pakketten, uitsluitend met tegoed. Tegoed kopen en de overige aanbiedingen blijven in het dashboard.
Een sleutel aanmaken
- Open Dashboard → API-toegang.
- Geef de sleutel een naam (bijvoorbeeld „Claude-agent” of „Make-rapportage”) en kies de rechten. Op een sleutel die mag bestellen, kunt u een limiet per bestelling en een limiet over 24 uur instellen.
- Kopieer de sleutel. Hij begint met
glf_live_en wordt maar één keer getoond: wij bewaren alleen een hash ervan. - Stuur hem mee in de header van elk verzoek:
Authorization: Bearer glf_live_…
Maximaal 10 actieve sleutels per organisatie. Een ingetrokken sleutel werkt meteen niet meer, net als de sleutels van een lid dat de organisatie verlaat. Houd de sleutel buiten uw coderepository's: wie hem heeft, handelt namens uw organisatie.
De rechten van een sleutel
Elke sleutel heeft een of meer rechten. Een verzoek zonder het benodigde recht krijgt 403 insufficient_scope, en een AI-agent ziet alleen de toegestane tools.
| Recht | Geeft toegang tot | Wie het kan toekennen |
|---|---|---|
read | Catalogus, categorieën, account en saldo, tegoedgeschiedenis, bestellingen, offertes voor pakketten. | Altijd inbegrepen. |
cart | Regels in de winkelwagen toevoegen, wijzigen en verwijderen. | Elk lid van de organisatie. |
purchase | De winkelwagen of een pakket bestellen, met tegoed. Inclusief de winkelwagen. | Alleen de eigenaar van de organisatie. |
Snel aan de slag
Alle routes beginnen met https://www.getlinkfast.com/api/v1. Houd de www: het adres zonder www stuurt door, en een HTTP-client stuurt na een doorverwijzing de header Authorization niet meer mee.
Bedragen zijn in euro exclusief btw. Antwoorden zijn JSON, velden in 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"}'Vervang site_id door het id van een site uit stap 2. Stuur nooit een prijs mee: de server berekent die.
curl -X POST https://www.getlinkfast.com/api/v1/checkout \
-H "Authorization: Bearer glf_live_…" \
-H "Idempotency-Key: order-2026-10-14-001"Het antwoord bevat het id van de bestelling, het afgeschreven bedrag en uw resterende saldo. Volg daarna de voortgang met GET /orders/{id}.
Bestellen met tegoed
De API bestelt uitsluitend met tegoed en start nooit een kaartbetaling. Tegoed wordt opgewaardeerd in het dashboard.
Een bestelling neemt de regels guest_post en link_insertion uit de winkelwagen. Andere regels, toegevoegd via het dashboard, blijven in de winkelwagen en staan in skipped_items.
Standaard geen limiet: uw saldo is de enige grens. Stel op een sleutel die mag bestellen een limiet per bestelling en een limiet over voortschrijdende 24 uur in. Een bestelling die ze overschrijdt, wordt geweigerd (403 spending_limit_exceeded, met het resterende bedrag), zonder afschrijving.
Onvoldoende saldo: 402 insufficient_credits, met het ontbrekende bedrag en de link naar de pagina Tegoed, om door te geven aan iemand in uw team. Er wordt niets afgeschreven.
Daarna gaat alles zoals vanuit het dashboard: bevestigingsmail en opvolging in het scherm Bestellingen, waar de bestelling de naam draagt van de sleutel die haar plaatste.
De header Idempotency-Key
- Verplicht op
POST /checkoutenPOST /packs/orders: 8 tot 128 afdrukbare ASCII-tekens, zonder spaties. Zonder:400 idempotency_key_required. - Eén waarde staat voor één aankoopintentie. Dezelfde waarde opnieuw sturen geeft de oorspronkelijke bestelling terug (
200,"replayed": true) zonder tweede afschrijving, ook als de winkelwagen sindsdien is gewijzigd. - Na een time-out of een netwerkonderbreking probeert u het opnieuw met dezelfde waarde: u betaalt niet twee keer.
- Genereer voor een nieuwe aankoop een nieuwe waarde, bijvoorbeeld een UUID.
- Op
POST /checkouten opPOST /packs/orderswordt een waarde die al voor een andere aankoop is gebruikt geweigerd:409 idempotency_conflict, zonder afschrijving. Voor een pakket geldt dat ook voor dezelfde waarde met andere inhoud. - Aan de MCP-kant vervult het bevestigingstoken deze rol: u hoeft niets te genereren.
Limieten
- 120 verzoeken per minuut per sleutel om te lezen, en evenveel, apart, voor de winkelwagen: het een gaat niet af van het ander.
- 10 aanroepen per minuut per sleutel naar de aankooproutes of -tools — herhalingen, weigeringen en de MCP-samenvattingsstap inbegrepen.
- 300 HTTP-verzoeken per minuut per sleutel op de MCP-server. Elke aangeroepen tool telt daarnaast mee in de limiet van zijn recht.
- Daarboven:
429 rate_limited. De wachttijd in seconden staat via HTTP in de headerRetry-After, en in een MCP-toolresultaat indetails.retry_after_seconds. - Maximaal 100 resultaten per pagina (
page_size). - Body van het verzoek: maximaal 1 MB.
Foutcodes
Elke fout heeft dezelfde vorm. Test op code: die is stabiel. message is in het Engels en bedoeld voor de ontwikkelaar; details noemt het foute veld of de bedragen.
{
"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"
}
}
}| Code | HTTP | Wat het betekent |
|---|---|---|
invalid_json | 400 | De body van het verzoek is geen leesbare JSON. Controleer de syntaxis en de header Content-Type: application/json. |
idempotency_key_required | 400 | Header Idempotency-Key ontbreekt of is ongeldig op een aankooproute. Stuur een waarde van 8 tot 128 tekens. |
invalid_api_key | 401 | Sleutel ontbreekt, is ongeldig, onbekend of ingetrokken, of is aangemaakt door een lid dat de organisatie heeft verlaten. Controleer de header Authorization: Bearer glf_live_…. |
insufficient_credits | 402 | Onvoldoende saldo. details.missing_amount geeft het ontbrekende bedrag, details.credits_url de pagina om op te waarderen. Er is niets afgeschreven. |
insufficient_scope | 403 | De sleutel heeft niet het recht dat deze route of tool vraagt. Maak een sleutel aan met dat recht. |
spending_limit_exceeded | 403 | De bestelling overschrijdt een limiet van de sleutel: per bestelling (window: order) of over 24 uur (window: 24h). details.remaining geeft wat er over is. Er is niets afgeschreven. |
not_found | 404 | Resource niet gevonden, of niet van uw organisatie. |
method_not_allowed | 405 | MCP-server: GET en DELETE worden niet geaccepteerd. Stuur elk JSON-RPC-bericht als POST. |
organization_financial_hold | 409 | Aankopen zijn geblokkeerd voor uw organisatie. Neem contact met ons op. Er is niets afgeschreven. |
page_already_sold | 409 | Een pagina in de winkelwagen (linkinvoeging) is net verkocht. Verwijder de regel en bestel opnieuw met een nieuwe Idempotency-Key. |
cart_already_ordered | 409 | Een regel in de winkelwagen is al besteld door een andere aankoop (dashboard of andere Idempotency-Key). Lees de winkelwagen opnieuw voordat u met een nieuwe waarde bestelt. |
idempotency_conflict | 409 | Deze Idempotency-Key is al gebruikt voor een andere aankoop. Gebruik een nieuwe waarde voor een nieuwe aankoop. |
not_ready | 409 | De audit is nog niet klaar. Wacht met get_audit op de status ready en voeg dan de pagina toe. |
full_pass_running | 409 | Het volledige auditrapport wordt nog voorbereid. Probeer het over enkele minuten opnieuw. Er is niets gestart. |
limit_reached | 409 | De audit heeft al 8 door jou toegevoegde pagina's, lopende analyses meegeteld. Er is niets gestart. |
already_present | 409 | Deze pagina staat al in de audit of haar analyse loopt. Er is niets gestart. |
already_ordered | 409 | Deze geplande link is al besteld en kan hier niet meer worden geannuleerd. |
not_cancellable | 409 | Deze link kan nu niet worden geannuleerd. Lees hem opnieuw met get_plan. |
team_planned | 409 | Deze link is door ons team ingepland, niet via de API: hij kan hier niet worden geannuleerd. Om hem te wijzigen, neemt de accounteigenaar contact op met support. |
payload_too_large | 413 | Body van het verzoek groter dan 1 MB. |
invalid_parameter | 422 | Ongeldige, herhaalde of onbekende queryparameter. details.fields noemt elke foute parameter en de reden. |
invalid_arguments | 422 | Ongeldige combinatie van argumenten, bijvoorbeeld noch domain noch audit_id, of beide. details.field noemt het veld. Er is niets uitgevoerd. |
invalid_domain | 422 | Domein of URL onleesbaar. Stuur een domeinnaam, bijvoorbeeld example.com. |
own_network_domain | 422 | Dit domein maakt deel uit van ons publicatienetwerk: het kan niet worden geaudit. Er is niets gestart. |
invalid_body | 422 | Ongeldig of onbekend veld in de body. details.fields noemt elk fout veld en de reden. |
product_not_available_via_api | 422 | De API verkoopt gastartikelen en linkinvoegingen. Andere producten bestelt u via het dashboard. |
image_not_uploaded | 422 | De uitgelichte afbeelding moet via het dashboard naar GetLinkFast zijn geüpload. |
cart_empty | 422 | Geen enkele regel in de winkelwagen kan via de API worden besteld. Er is niets afgeschreven. |
cart_invalid | 422 | Sommige regels zijn onvolledig of niet meer beschikbaar. details.items toont elke regel en de problemen ervan. Er is niets afgeschreven. |
invalid_pack_input | 422 | Het pakket voldoet niet aan de regels (details.reason). Er is niets afgeschreven. |
site_unavailable | 422 | Deze site bestaat niet of is niet meer te koop. |
target_page_required | 422 | Een linkinvoeging vereist page_id: haal die uit de lijst met pagina's van de site. |
target_page_not_found | 422 | Deze pagina hoort niet bij deze site. |
target_page_sold | 422 | Deze pagina is al verkocht. |
target_page_withdrawn | 422 | Deze pagina wordt niet meer aangeboden. |
target_page_already_in_cart | 422 | Deze pagina staat al in uw winkelwagen. |
product_unavailable | 422 | Deze site verkoopt dit product niet. |
invalid_url | 422 | Onleesbaar adres. Stuur een volledig http(s)-adres, zonder inloggegevens of poort. |
other_site | 422 | Deze pagina staat niet op het geauditeerde domein. Stuur een pagina van dezelfde site. |
invalid_keyword | 422 | Beoogde zoekopdracht te lang: maximaal 120 tekens. |
rate_limited | 429 | Te veel verzoeken voor deze sleutel. Wacht het aantal seconden dat via HTTP de header Retry-After aangeeft, of details.retry_after_seconds in een MCP-toolresultaat. |
audit_quota_exceeded | 429 | Deze sleutel heeft de afgelopen 24 uur al 10 audits gestart. Er is niets gestart: probeer het later opnieuw. |
internal_error | 500 | Fout aan onze kant, al gemeld aan het team. Probeer het later opnieuw: een aankoop die opnieuw wordt verstuurd met dezelfde Idempotency-Key wordt nooit twee keer afgeschreven. |
engine_unavailable | 502 | De auditmotor is tijdelijk onbereikbaar. Er is niets gestart: probeer het later opnieuw. |
packs_unavailable | 503 | SEO/GEO-pakketten zijn nog niet beschikbaar. |
confirmation_expired | MCP-tool | Bevestigingstoken verlopen, of winkelwagen, prijzen of sleutel gewijzigd sinds het overzicht. Er is niets afgeschreven: roep de tool opnieuw aan zonder token voor een nieuw overzicht. |
purchase_unavailable | MCP-tool | Aankopen via de MCP-server zijn tijdelijk niet beschikbaar. Er is niets afgeschreven. Probeer het later opnieuw. |
unknown_tool | MCP-tool | Onbekende tool, of niet toegestaan door de rechten van de sleutel. tools/list geeft de beschikbare tools. |
audit_failed | MCP-tool | Deze audit is mislukt, dus een plan is niet mogelijk. Start een nieuwe met run_audit. Er is niets uitgevoerd. |
audit_not_ready | MCP-tool | Deze audit is nog niet klaar. Wacht met get_audit op de status ready en roep daarna plan_links opnieuw aan. Er is niets uitgevoerd. |
budget_too_low | MCP-tool | Het maandbudget ligt onder het minimum van 100 € per maand. Er is niets uitgevoerd. |
start_date_too_far | MCP-tool | De startdatum ligt te ver weg. De melding noemt de laatste toegestane datum. Er is niets uitgevoerd. |
too_many_pages | MCP-tool | Een project volgt een beperkt aantal pagina's. Stuur minder nieuwe pagina's in target_urls. Er is niets uitgevoerd. |
plan_exists | MCP-tool | Dit domein heeft al geplande links die nog niet zijn besteld. Plannen worden nooit samengevoegd: verwijder ze met cancel_planned_link en begin opnieuw. Er is niets uitgevoerd. |
pending_proposals | MCP-tool | Ons team beoordeelt voorgestelde links voor dit domein, dus er kan voorlopig geen plan worden toegevoegd. details.count geeft het aantal en details.retry_after de datum waarna u het opnieuw kunt proberen (zonder planning tegen die tijd verlopen ze). Vraag anders de accounteigenaar contact op te nemen met support. Er is niets gedaan. |
no_links_found | MCP-tool | Geen enkele site in de catalogus past bij deze pagina's met dit maandbudget. Probeer andere pagina's of een hoger budget. Er is niets uitgevoerd. |
plan_in_progress | MCP-tool | Dit plan wordt nu opgeslagen. Roep plan_links over een paar seconden opnieuw aan met hetzelfde token om het resultaat te lezen. |
plan_outcome_unknown | MCP-tool | Het opslaan is onderbroken en de uitkomst is onbekend. Bevestig niet opnieuw: lees het plan met get_plan. |
plan_conflict | MCP-tool | Het plan klopt zo niet meer: het project van het domein is gewijzigd, de datums vallen niet meer binnen de budgetmaanden (die bij de bevestiging beginnen), of een van de sites is niet meer beschikbaar voor dit domein. details.reason zegt welke. Er is niets geschreven: roep plan_links opnieuw aan zonder token voor een nieuw overzicht. |
plan_retry | MCP-tool | Een andere aanroep met dit token is geëindigd zonder het plan op te slaan. Roep plan_links opnieuw aan met hetzelfde token om het resultaat te lezen. |
MCP-server
De MCP-server geeft uw AI-agent dezelfde functies als de API, met dezelfde sleutel. Het adres: https://www.getlinkfast.com/api/mcp.
Claude Code
Eén opdracht in uw terminal:
claude mcp add --transport http getlinkfast https://www.getlinkfast.com/api/mcp --header "Authorization: Bearer glf_live_…"Cursor
In ~/.cursor/mcp.json. Vermijd het bestand .cursor/mcp.json van een project: dat belandt vaak in de repository, samen met de sleutel.
{
"mcpServers": {
"getlinkfast": {
"url": "https://www.getlinkfast.com/api/mcp",
"headers": {
"Authorization": "Bearer glf_live_…"
}
}
}
}Claude Desktop
Claude Desktop stuurt geen aangepaste headers naar een externe server en kan uw sleutel dus niet doorgeven. Het koppelt straks rechtstreeks via de OAuth-verbinding, gepland voor een volgende versie. Gebruik vandaag Claude Code of Cursor: die sturen de sleutel in de header Authorization.
De tools
De agent ziet alleen de tools die de rechten van de sleutel toestaan: een sleutel zonder bestelrecht heeft geen aankooptool.
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
Aankoop in twee stappen
- De agent roept
checkoutoforder_packaan zonderconfirmation_token: er wordt niets afgeschreven. Hij krijgt het overzicht (regels, totaal, saldo na afschrijving, resterende limiet) en eenconfirmation_token. - Hij toont u dat overzicht. Gaat u akkoord, dan roept hij de tool opnieuw aan met het
confirmation_token: de bestelling wordt geplaatst en afgeschreven. - Het token is 10 minuten geldig. Als intussen de winkelwagen, een prijs of de sleutel verandert, wordt het geweigerd (
confirmation_expired) en herhaalt de agent stap 1. Opnieuw aanroepen met hetzelfde token na een onderbreking geeft dezelfde bestelling terug, zonder tweede afschrijving.
Zelfgeschreven client
De server is sessieloos: elk JSON-RPC-bericht gaat als POST en het antwoord komt als JSON. Stuur Accept: application/json, text/event-stream en Content-Type: application/json mee, anders antwoordt de server 406. GET en DELETE geven 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"}'Auditeren en plannen
Een agent kan een site auditeren en op basis van het rapport links over meerdere maanden spreiden. Vier stappen, met de tools van de MCP-server.
run_auditstart de volledige audit van een domein: technische controles, zichtbaarheid in ChatGPT en sites waar een link zou helpen. Reken op enkele minuten. Er wordt niets afgeschreven, en het rapport wordt ontgrendeld met het auditkrediet van de organisatie als ze dat heeft. Limiet: 10 audits per sleutel per 24 uur; vraagt u hetzelfde domein binnen een uur opnieuw aan, dan krijgt u de bestaande audit terug.get_auditgeeft de status en de huidige stap, daarna het rapport insummaryzodra de statusreadyis. Roep het elke 30 tot 60 seconden aan.list_auditstoont de audits van de organisatie, de nieuwste eerst.plan_linksmaakt uit een klare audit een kalender: een maandbudget in euro excl. btw (minstens 100 €), 2 tot 12 maanden en optioneel een startdatum en de doelpagina's. Net als bij een aankoop zijn er twee stappen. Zonder token wordt niets opgeslagen: de agent krijgt de kalender (links, verzenddata, totaal) en eenconfirmation_tokendat 10 minuten geldig is. Na uw akkoord roept hij de tool opnieuw aan met dezelfde velden en het token, en wordt het plan opgeslagen.get_planvolgt elke link: doelpagina, ankertekst, prijs en status (ingepland, besteld, gepubliceerd, geannuleerd of mislukt, met de oorzaak van een mislukking, zoalsinsufficient_credits).cancel_planned_linkannuleert een via de API geplande link, of alle nog niet bestelde links van een domein. Links die ons team heeft ingepland blijven staan:team_plannedvoor één link,skipped_team_plannedvoor hun aantal.
Bij het opslaan van het plan wordt niets afgeschreven. Elke link wordt op de dag van verzending in credits afgeschreven, tegen de prijs die die dag opnieuw is opgehaald, tijdens de dagelijkse ochtendronde (rond 06:20 UTC). Is het saldo die dag te laag, dan wordt de link niet besteld en staat hij in get_plan als mislukt. Een link die al besteld is, kan niet meer worden geannuleerd.
Rechten: run_audit en cancel_planned_link vragen cart, plan_links vraagt purchase, en get_audit, list_audits en get_plan vragen read. De bestedingslimieten van de sleutel gelden ook voor geplande links.
In het dashboard toont de pagina Delegatie deze links in het blok ‘Geplande links’. De eigenaar van de organisatie kan daar de via de API geplande links verwijderen. Links die ons team heeft gepland, zijn alleen-lezen.
Referentie
Elke route met het bijbehorende recht en de bijbehorende MCP-tool. Parameters, antwoordschema's en fouten per route: de OpenAPI 3.1-beschrijving.
| Route | Recht | MCP-tool | Functie |
|---|---|---|---|
GET /sites | read | search_sites | Zoeken in de catalogus: metrics, prijs, categorie, taal, product; sortering en paginering. |
GET /sites/{id} | read | get_site | Eén site: metrics, prijzen en publicatieregels. |
GET /sites/{id}/pages | read | list_site_pages | De pagina's van een site die openstaan voor linkinvoeging, met prijs en Google-verkeer. |
GET /categories | read | list_categories | De categorieën en hun id's, voor het filter category. |
GET /account | read | get_account | Organisatie, tegoedsaldo, rechten en limieten van de sleutel, uitgaven over 24 uur. |
GET /credits/transactions | read | geen | Tegoedgeschiedenis. |
GET /orders | read | list_orders | Uw bestellingen, te filteren op status en datum. |
GET /orders/{id} | read | get_order | Eén bestelling en haar regels, met hun status. |
GET /cart/items | cart | get_cart | De winkelwagen: regels, actuele prijzen en blokkerende problemen. |
POST /cart/items | cart | add_to_cart | Een gastartikel of een linkinvoeging toevoegen. |
PATCH /cart/items/{id} | cart | update_cart_item | De briefing van een regel aanvullen of wijzigen. |
DELETE /cart/items/{id} | cart | remove_cart_item | Een regel verwijderen. |
GET /audits/{id} | read | get_audit | Een audit lezen: status, huidige stap, daarna het rapport. |
POST /audits/{id}/pages | cart | add_audit_page | Voegt een te versterken pagina toe aan een klare audit (maximaal 8). De analyse duurt 1 tot 4 minuten: volg haar met get_audit. Er wordt niets afgeschreven. |
POST /checkout | purchase | checkout | De winkelwagen bestellen met tegoed. |
POST /packs/quote | read | quote_pack | Een SEO/GEO-pakket laten berekenen, zonder afschrijving. |
POST /packs/orders | purchase | order_pack | Een SEO/GEO-pakket bestellen met tegoed. |
| Alleen MCP-server | cart | run_audit | De volledige audit van een domein starten. Er wordt niets afgeschreven. |
| Alleen MCP-server | read | list_audits | De audits van de organisatie tonen, de nieuwste eerst. |
| Alleen MCP-server | purchase | plan_links | Links over 2 tot 12 maanden plannen op basis van een audit, in twee stappen. Bij het opslaan wordt niets afgeschreven. |
| Alleen MCP-server | read | get_plan | De geplande links van een domein lezen: verzenddatum en status van elke link. |
| Alleen MCP-server | cart | cancel_planned_link | Eén geplande link annuleren, of alle nog niet bestelde links van een domein. |
Een vraag over de API? Schrijf ons, iemand van het team antwoordt u.
