Hvad der er muligt — og efter hvilke regler
Via API'et opretter, ændrer og udgiver du det, du ellers gør i værktøjerne. De samme regler gælder: dine pakkegrænser, din AI-bjælke, et komplet brand før udgivelse, fortløbende fakturanumre uden huller og kontrollen af hvert uploadet billede. Det, der ikke er muligt i værktøjet, er heller ikke muligt her.
Hvis noget afvises, står der i type en fast engelsk kode, som dit program kan træffe beslutninger ud fra — for eksempel plan_limit_reached, brand_incomplete eller ai_quota_exhausted — og i detail den sætning, som værktøjet også ville vise dig.
{
"error": {
"type": "brand_incomplete",
"message": "The brand needs a name, an address and an email or phone number before anything is published.",
"detail": "Bevor diese Website online geht, muss klar sein, wer dahintersteht. Es fehlt: …"
}
}Rettighederne
Hvert område har én rettighed til at læse og én til at skrive: sites:read og sites:write for websites, domains:read og dns:write for domæner og DNS-poster, invoices:read og invoices:write for kunder, fakturaer og tilbud, media:read og media:write for MediaStudio, brand:read for dine brands. Vælg dem, når du opretter nøglen, under „Hvad må denne nøgle?“.
Websites
POST /v1/sites bygger et helt website ud fra én sætning — som kladde. Det tager som regel 20 til 60 sekunder og bruger AI-saldo, som i WebSiteBuilder. POST /v1/sites/{id}/edit ændrer en side i kladden efter din instruktion. Intet går online før POST /v1/sites/{id}/publish; POST /v1/sites/{id}/unpublish tager websitet offline igen uden at miste noget.
brand_id angiver det brand, hvis logo og virksomhedsoplysninger websitet viser. Har du kun ét brand, følger hvert website det automatisk — så står dets nummer der, og brand_assigned er false. Med flere brands viser et website kun logo og virksomhedsoplysninger fra det brand, du har tilknyttet det; uden tilknytning er brand_id null.
curl https://api.kenjtec.com/v1/sites \
-H "Authorization: Bearer kt_api_…" \
-H "Idempotency-Key: cafe-lumen-2026-10" \
-H "Content-Type: application/json" \
-d '{"brief": "Café Lumen in Lissabon: Frühstück, eigene Kaffeebohnen, Tische zum Reservieren."}'Send en Idempotency-Key med ved AI-endpoints. Hvis forbindelsen afbrydes, gentager du med den samme nøgle og får det website, der allerede er bygget — uden at betale to gange.
DNS-poster
GET /v1/domains viser dine domæner, hvis DNS ligger hos KENJTEC. Under dem opretter du poster (A, AAAA, CNAME, MX, TXT, NS), erstatter dem med PATCH og sletter dem — med de samme kontroller som i DomainStudio.
Poster, som KENJTEC har oprettet til et af dine værker, har managed: true. Dem ændrer API'et ikke; det gør du i DomainStudio, hvor konsekvenserne vises.
Fakturaer og tilbud
POST /v1/customers opretter en kunde, POST /v1/invoices en kladde — en faktura eller et tilbud. Summerne beregner KENJTEC; du sender antal, enhedspris i øre og momssats pr. linje.
POST /v1/invoices/{id}/issue udsteder: Bilaget får det næste nummer uden huller og er derefter låst. At rette betyder at annullere — POST /v1/invoices/{id}/cancel opretter en kreditnota med sit eget nummer. Intet bliver slettet.
Uploade medier
Upload sker i to trin, som i MediaStudio. POST /v1/media/uploads giver dig en adresse og headerne; dertil sender du filen med PUT. Derefter kontrollerer POST /v1/media/{id}/confirm, hvad der er modtaget, og først da er filen tilgængelig på sin adresse.
Tilladt er JPEG, PNG, WebP, GIF, PDF, MP4 og WebM. Et billede, der ikke består indholdskontrollen, afvises med 422.
Læse dit brand
GET /v1/brands returnerer dine brands fra BrandStudio: navn, logo, farver, skrifttyper, virksomhedsoplysninger og kanaler. Så kan dine egne programmer bygge i samme udtryk som dine KENJTEC-værker.