Publieke testfase We zitten in een publieke testfase — kijk gerust rond, maar bestellen kan nog niet. Bestellen kan vanaf 1 oktober 2026. Bekijk prijzen →

API-referentie

Met de veldhost-API kun je alles scripten wat de knoppen in het portaal doen: deploys, logs, health, staging, cron, back-ups, domeinen en DNS. De API drijft de mpc-CLI aan en werkt vanuit elke HTTP-client, CI-pipeline of AI-agent.

Authenticatie

Maak een token aan onder API tokens en stuur het mee als bearer-token:

curl -H "Authorization: Bearer mpc_..." https://manage.veldhost.eu/api/v1/sites

Bij het aanmaken van een token kies je welke apps het mag aanraken en wat het mag doen: read (altijd aan), deploy, manage (staging, cron, back-ups en herstel) en dns. Rate limit: 120 verzoeken per minuut. Een machineleesbare specificatie staat op /api/v1/openapi.json.

Sites

GET    /api/v1/sites                      your sites: state, url, health, deploy_state
POST   /api/v1/sites/{slug}/deploy        deploy from git ({"ref": "main"} optional)
GET    /api/v1/sites/{slug}/deploys       deploy history
GET    /api/v1/sites/{slug}/logs?log=app  last 200 lines (app, php, nginx-error, access)
GET    /api/v1/sites/{slug}/health        live health + open incidents
GET    /api/v1/sites/{slug}/traffic       disk + monthly traffic

Back-ups en staging

GET    /api/v1/sites/{slug}/backups       list restore points
POST   /api/v1/sites/{slug}/backups       back up now
POST   /api/v1/sites/{slug}/restore       {"backup_id": 12} — replaces live content
GET    /api/v1/sites/{slug}/staging       staging status + url
POST   /api/v1/sites/{slug}/staging       {"action": "create" | "refresh" | "off"}

Staging is alleen voor eigenaren en wordt in rekening gebracht op abonnementen waar het niet bij inbegrepen is — dezelfde regels als in het portaal.

Geplande taken

GET    /api/v1/sites/{slug}/cron          list jobs with their index
POST   /api/v1/sites/{slug}/cron          {"schedule": "*/5 * * * *", "command": "php artisan queue:work"}
DELETE /api/v1/sites/{slug}/cron/{index}  remove a job

Domeinen en DNS

GET    /api/v1/domains                    registered domains: expiry, auto-renew, DNSSEC
GET    /api/v1/domains/{domain}/registrar registry vs live nameservers, DNSSEC state, lock, privacy
PUT    /api/v1/domains/{domain}/nameservers  {"mode": "custom", "nameservers": ["ns1.example.com", "ns2.example.com"]}
GET    /api/v1/dns                        your DNS zones
POST   /api/v1/dns/zones/probe            {"domain": "example.com"} dry run: live zone as an import plan + registrar steps (dns scope)
GET    /api/v1/dns/{zone}/records         zone records
POST   /api/v1/dns/{zone}/records         {"name": "www", "type": "CNAME", "ttl": 3600, "content": "example.com."}
PUT    /api/v1/dns/{zone}/records/{id}    update a record
DELETE /api/v1/dns/{zone}/records/{id}    delete a record

DNS-wijzigingen staan binnen een seconde live op onze nameservers.

Nameservers wijzigen vereist de scope dns, en wordt geweigerd met een 409 en een continue_url zolang DNSSEC actief is op het domein: het register staat in voor onze ondertekeningssleutel, dus de delegatie verplaatsen voordat die is ingetrokken (en de cachetijd ervan is verstreken) zou ervoor zorgen dat validerende resolvers het domein volledig weigeren. Het portaal leidt je erdoorheen. Je zone en records blijven hier hoe dan ook bewaard, dus terugschakelen gaat direct.

Wat de API bewust niet doet

Alles wat geld kost of een juridische toestemming vereist, blijft bij jou: POST /api/v1/sites valideert en prijst een nieuwe site en geeft daarna een continue_url terug naar het portaal, waar je de kosten bekijkt en bevestigt — de API rekent nooit iets af, en destructieve accountacties (een site verwijderen, een domein ontkoppelen) zijn helemaal niet beschikbaar.