Screenshot API v1

Parameter, Einschränkungen und Beispiele für POST /api/v1/screenshots.

Authentifizierung

Senden Sie Ihren API-Schlüssel im Authorization -Header:

Authorization: Bearer <api_key>

Screenshot erstellen

Endpunkt: POST /api/v1/screenshots
Body: JSON

Minimale Anfrage

curl -X POST "https://api.page-ops.com/api/v1/screenshots" \
  -H "Authorization: Bearer $SCREENSHOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com"}'

Sync-Anfrage (wenn erlaubt)

curl -X POST "https://api.page-ops.com/api/v1/screenshots" \
  -H "Authorization: Bearer $SCREENSHOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "mode": "sync",
    "timeoutMs": 8000,
    "fullPage": false
  }'
Wenn das Sync-Zeitfenster vor Abschluss abläuft, gibt die API status=processing. zurück. Pollen Sie weiter mit GET /api/v1/screenshots/{jobId}.

Wichtige Parameter

url
Erforderlich. Ziel-URL, die erfasst werden soll.
mode
Optional. async (Standard) oder sync.
timeoutMs
Erforderlich für sync. Muss > 0 und < 10000.
fullPage
Optional. Für sync -Modus muss es false.
Sync-Modus-Einschränkungen
Selbst wenn Sie mode=sync, anfordern, fällt der Server auf async zurück, sofern nicht gilt:
mode == "sync"
timeoutMs != null
0 < timeoutMs < 10000
fullPage == false

Parameterreferenz (vollständig)

Feld Typ Erforderlich Standard Hinweise
urlstringJa-Ziel-URL.
modestringNeinasyncAkzeptiert async oder sync (Groß-/Kleinschreibung wird ignoriert).;
timeoutMsint?Nein-Wird nur für Sync verwendet. Muss 0 < timeoutMs < 10000.
fullPageboolNeinfalseSync erfordert false.
viewportobject?Nein-Überschreibt den Viewport.
formatstring?Nein-Derzeit wird nur png unterstützt. Andere Formate sind für zukünftige Versionen reserviert.
qualityint?Nein-Derzeit ignoriert (künftig nur für jpeg/webp verwendet).
waitUntilstring?Nein-Empfohlen: load, domcontentloaded, networkidle.
delayMsint?Nein-Zusätzliche Verzögerung nach waitUntil.
selectorstring?Nein-Erfasst nur ein bestimmtes Element.
headersobject?Nein-Wörterbuch zusätzlicher Request-Header.
cookiesarray?Nein-Liste der zu injizierenden Cookies.
javascriptstring?Nein-Benutzerdefiniertes JS zum Injizieren (implementierungsabhängig).;
cssstring?Nein-Benutzerdefiniertes CSS zum Injizieren (implementierungsabhängig).;
devicestring?Nein-Empfohlen: desktop/iphone/ipad/pixel.
strictDevicebool?Nein-Wenn true, sollte ein nicht unterstütztes Gerät fehlschlagen (implementierungsabhängig).;
colorSchemestring?Nein-Empfohlen: light/dark/no-preference.
proxystring?Nein-Für zukünftige Versionen reserviert. Derzeit ignoriert.
tracebool?Nein-Für zukünftige Versionen reserviert. Derzeit ignoriert.
harbool?Nein-Für zukünftige Versionen reserviert. Derzeit ignoriert.
returnDombool?Nein-Für zukünftige Versionen reserviert. Derzeit ignoriert.
returnNetworkbool?Nein-Für zukünftige Versionen reserviert. Derzeit ignoriert.
priorityint?Nein-Für zukünftige Versionen reserviert. Derzeit ignoriert.

viewport

FeldTypErforderlichHinweise
viewport.widthintNeinViewport-Breite.
viewport.heightintNeinViewport-Höhe.

cookies[]

FeldTypErforderlichHinweise
cookies[].namestringJaCookie-Name.
cookies[].valuestringJaCookie-Wert.
cookies[].domainstring?NeinCookie-Domain.
cookies[].pathstring?NeinCookie-Pfad.

Antworten

Async (Standard)
{ "jobId": "<guid>", "status": "pending" }
Sync (abgeschlossen)
{ "jobId": "<guid>", "status": "completed", "result": { "url": "https://..." } }
Sync (fehlgeschlagen)
{ "jobId": "<guid>", "status": "failed", "errorMessage": "..." }
Sync (Zeitüberschreitung)
{ "jobId": "<guid>", "status": "processing" }
Für Async-Aufrufe (oder Sync-Timeouts) verwenden Sie GET /api/v1/screenshots/{jobId} zur Statusprüfung. Mögliche Werte: pending, processing, completed, failed, expired.

Fehler

HTTPWannBody
400Body fehlt oder url fehlt/ist leerBadRequest
401Ungültiger/fehlender API-SchlüsselMiddleware-Antwort
402Kontingent überschritten{ "error": "quota_exceeded", "operationKey": "screenshot.capture", ... }
429Rate-Limit erreicht{ "error": "rate_limited", "operationKey": "screenshot.capture", ... }
404Job nicht gefundenNotFound

Anwendungsbeispiele

Praktische Beispiele für häufige Integrationsanforderungen.

Auth-Token der Zielseite übergeben (via headers)

Wenn die zu erfassende Seite geschützt ist (Bearer/JWT/Session-Token), leiten Sie es weiter über headers:
{
  "url": "https://example.com/dashboard",
  "headers": {
    "Authorization": "Bearer <target_site_token>"
  }
}

Cookies setzen (sitzungsbasierter Login)

Wenn die Website Cookies zur Authentifizierung verwendet, übergeben Sie diese mit cookies:
{
  "url": "https://example.com/account",
  "cookies": [
    { "name": "session", "value": "<cookie_value>", "domain": "example.com", "path": "/" }
  ]
}

Benutzerdefinierte Request-Header (User-Agent / Locale)

{
  "url": "https://example.com",
  "headers": {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
    "Accept-Language": "en-US,en;q=0.9"
  }
}

Viewport + Format + Qualität

{
  "url": "https://example.com",
  "viewport": { "width": 1280, "height": 720 },
  "format": "jpeg",
  "quality": 85
}

Auf Seitenaufbau warten + Verzögerung hinzufügen

{
  "url": "https://example.com",
  "waitUntil": "networkidle",
  "delayMs": 500
}

Ein bestimmtes Element erfassen (Selector)

{
  "url": "https://example.com/pricing",
  "selector": "#pricing"
}

Status abrufen

Job pollen:

GET /api/v1/screenshots/{jobId}