Ironfang Render utilise une API HTTPS standard : PHP peut donc l'appeler avec cURL, sans SDK. Une requête réussie renvoie directement les octets de l'image, prêts à être écrits dans un fichier.
Obtenir une clé
Créez une clé API dans le portail. Le secret ne s'affiche qu'une fois et il est stocké sous forme de hachage. Conservez-le dans une variable d'environnement nommée IRONFANG_API_KEY plutôt que dans le fichier source ; l'exemple ci-dessous l'y lit.
export IRONFANG_API_KEY="if_live_..."Réaliser une capture d'écran
<?php
$key = getenv('IRONFANG_API_KEY');
if ($key === false || $key === '') {
fwrite(STDERR, "Set IRONFANG_API_KEY to your Ironfang API key.\n");
exit(1);
}
$ch = curl_init('https://api.ironfang.uk/render/v1/screenshot');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $key,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com',
'width' => 1280,
]),
]);
$body = curl_exec($ch);
if ($body === false) {
throw new RuntimeException('Request failed: ' . curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 200) {
$err = json_decode($body, true)['error'] ?? ['code' => 'unknown', 'message' => $body];
throw new RuntimeException("{$status} {$err['code']}: {$err['message']}");
}
file_put_contents('shot.png', $body);Exécutez-le, et la capture d'écran est enregistrée sous le nom shot.png dans le répertoire courant :
php shot.phpGérer les erreurs
Les réponses de rendu réussies sont binaires. Les erreurs sont en JSON, de la forme {"error": {"code", "message"}}. Une clé absente ou non reconnue renvoie 401 invalid_api_key. Une clé sans la portée render:render renvoie 403 insufficient_scope.
// CURLOPT_RETURNTRANSFER keeps the binary response in $body
// instead of writing it directly to stdout. curl_exec returns
// false only when the request never completed.PDF et modèles
La même forme d'appel fonctionne pour les PDF sur /render/v1/pdf, et pour les images issues de modèles sur /render/v1/image/{id}. Seuls le chemin et le corps changent.
Pour aller plus loin
- API de capture d'écran : tailles de fenêtre d'affichage, formats, captures épurées et tarifs
- Captures d'écran de page entière : capturer toute la page défilante en une seule image
- Captures d'écran de sites web en Python
- Captures d'écran de sites web en Node.js
- Référence complète de l'API

