OptimoCMSDocs

Authenticatie

Authenticatie voor de OptimoCMS API — API keys aanmaken, scopes configureren, sandbox keys gebruiken, rate limits begrijpen en security best practices.

Authenticatie

Alle API requests vereisen authenticatie via een API key in de X-Api-Key header.

API key aanmaken

  1. Ga naar Instellingen → API Keys in je OptimoCMS dashboard
  2. Klik op API Key Aanmaken
  3. Geef de key een beschrijvende naam (bijv. "Productie Backend", "CI/CD Pipeline")
  4. Selecteer de gewenste scopes
  5. Kopieer de key — deze wordt slechts één keer getoond

API key gebruiken

REST API

curl https://api.optimocms.com/v1/sites \
  -H "X-Api-Key: optimo_live_abc123def456"

TypeScript SDK

import { OptimoCMS } from '@optimocms/sdk';

const cms = new OptimoCMS({
  apiKey: process.env.OPTIMOCMS_API_KEY!,
});

MCP configuratie

{
  "mcpServers": {
    "optimocms": {
      "command": "npx",
      "args": ["-y", "@optimocms/mcp-server"],
      "env": {
        "OPTIMOCMS_API_KEY": "optimo_live_abc123def456"
      }
    }
  }
}

Scopes

Scopes bepalen wat een API key mag doen. Gebruik altijd het minimum aan scopes dat je nodig hebt.

ScopeBeschrijving
sites:readSites ophalen
sites:writeSites aanmaken en bijwerken
pages:readPagina's ophalen
pages:writePagina's aanmaken, bijwerken en verwijderen
media:readMedia bestanden ophalen
media:writeMedia uploaden en verwijderen
analytics:readAnalytics data ophalen
ai:writeAI generatie, vertaling en content assist
publish:writeSites publiceren
ecommerce:readProducten, bestellingen en coupons lezen
ecommerce:writeProducten en coupons beheren
booking:readBoekingen en beschikbaarheid ophalen
booking:writeBoekingen aanmaken en beheren
loyalty:readLoyaliteitspunten ophalen
loyalty:writePunten verdienen en inwisselen
webhooks:readWebhook configuratie ophalen
webhooks:writeWebhooks aanmaken en beheren
forms:readFormulier inzendingen ophalen
push:writePush notificatie campagnes versturen

Voorbeeld: een key voor alleen content lezen:

Scopes: sites:read, pages:read, media:read

Voorbeeld: een key voor een CI/CD pipeline die deployt:

Scopes: sites:read, pages:write, media:write, publish:write

Sandbox vs. Live keys

SandboxLive
Prefixoptimo_sandbox_optimo_live_
DataTest-data, geen echte publicatiesProductie-data
Rate limitsZelfde als je tierZelfde als je tier
KostenGratis (AI calls tellen niet mee)Normaal
PublicerenGeen effect (dry-run)Site wordt echt gepubliceerd

Gebruik sandbox keys voor ontwikkeling en testen. Schakel over naar live keys voor productie.

const cms = new OptimoCMS({
  apiKey: process.env.NODE_ENV === 'production'
    ? process.env.OPTIMOCMS_LIVE_KEY!
    : process.env.OPTIMOCMS_SANDBOX_KEY!,
});

Rate limits

Rate limits zijn afhankelijk van je tier:

TierRequests/minBurst (per seconde)Dagelijks maximum
Gratis60105.000
Pro60050100.000
Enterprise6.000200Onbeperkt

Rate limit headers

Elk API antwoord bevat rate limit informatie:

HTTP/1.1 200 OK
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 594
X-RateLimit-Reset: 1748260860
HeaderBeschrijving
X-RateLimit-LimitMaximum requests in het huidige window
X-RateLimit-RemainingResterende requests
X-RateLimit-ResetUnix timestamp wanneer het window reset

429 Too Many Requests

Bij overschrijding ontvang je een 429 response:

{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 45 seconds.",
    "details": { "retryAfter": 45 }
  },
  "meta": { "requestId": "req_abc123", "timestamp": "2026-05-26T12:00:00Z" }
}

SDK: De SDK heeft ingebouwde retry met exponential backoff. Zie SDK foutafhandeling.

curl:

# Retry-After header bevat de wachttijd in seconden
curl -i https://api.optimocms.com/v1/sites \
  -H "X-Api-Key: jouw_api_key"
# → Retry-After: 45

MCP: De MCP server handelt rate limits automatisch af met retry.

Security best practices

1. Gebruik environment variables

# .env (NOOIT committen naar git)
OPTIMOCMS_API_KEY=optimo_live_abc123def456
// ✅ Goed
const cms = new OptimoCMS({ apiKey: process.env.OPTIMOCMS_API_KEY! });

// ❌ Fout — hardcoded key
const cms = new OptimoCMS({ apiKey: 'optimo_live_abc123def456' });

2. Minimale scopes

Geef elke key alleen de scopes die nodig zijn. Een frontend-integratie heeft geen publish:write nodig.

3. Aparte keys per omgeving

Maak aparte keys voor development, staging en productie. Zo kun je individuele keys revoeken zonder alles te breken.

4. Roteer keys periodiek

Roteer je API keys elk kwartaal. Oude keys kun je revoeken in het dashboard.

5. Monitor gebruik

Houd het API gebruik in de gaten via Instellingen → API Keys → Gebruik. Stel alerts in voor onverwacht hoog gebruik.

6. Nooit client-side

Gebruik API keys nooit in client-side code (browser, mobile app). Maak een backend proxy die de calls doet.

Foutcodes

StatusCodeBeschrijving
401UNAUTHORIZEDGeen of ongeldige API key
403FORBIDDENKey heeft niet de juiste scope
429RATE_LIMIT_EXCEEDEDTe veel requests
{
  "error": {
    "code": "FORBIDDEN",
    "message": "API key does not have scope: pages:write"
  },
  "meta": { "requestId": "req_err123", "timestamp": "2026-05-26T12:00:00Z" }
}

Volgende stappen

On this page