Aller au contenu

SDK PHP et exemples REST — TemplateFox

Deux façons d’utiliser l’API TemplateFox depuis PHP :

  • SDK (templatefox/sdk) — client typé, généré automatiquement depuis notre spécification OpenAPI.
  • REST — cURL ou Guzzle. Pratique pour limiter les dépendances.

Les exemples de cette page montrent les deux côte à côte.

Version Packagist Dépôt GitHub

Fenêtre de terminal
composer require templatefox/sdk

La variante REST ne demande aucune dépendance : elle utilise l’extension cURL de PHP.

Définissez votre clé API une fois, puis réutilisez le client.

<?php

require_once __DIR__ . '/vendor/autoload.php';

use TemplateFox\Api\PDFApi;
use TemplateFox\Configuration;

$config = Configuration::getDefaultConfiguration()
  ->setApiKey('x-api-key', getenv('TEMPLATEFOX_API_KEY'));

$api = new PDFApi(null, $config);

Seuls template_id et data sont obligatoires ; tous les autres champs sont facultatifs.

<?php

use TemplateFox\Model\CreatePdfRequest;

$request = new CreatePdfRequest([
  'template_id' => 'YOUR_TEMPLATE_ID',
  'data' => [
      'customer_name'  => 'John Doe',
      'invoice_number' => 'INV-001',
      'amount'         => '$1,234.56',
  ],
]);

$response = $api->createPdf($request);

echo $response->getUrl() . "\n";              // signed URL valid 24h
echo $response->getCreditsRemaining() . "\n"; // credits left on the team

Tous les paramètres sont détaillés dans Créer un PDF.

<?php

$response = $api->createPdf($request);
file_put_contents('invoice.pdf', file_get_contents($response->getUrl()));

Configurez l’intégration S3 une fois dans le tableau de bord, puis passez store_s3 = true dans n’importe quel appel.

<?php

use TemplateFox\Model\CreatePdfRequest;

$request = new CreatePdfRequest([
  'template_id' => 'YOUR_TEMPLATE_ID',
  'data'        => ['invoice_number' => 'INV-001'],
  'filename'    => 'invoice-001',           // no extension, .pdf appended
  'store_s3'    => true,                     // upload to your configured bucket
  's3_filepath' => 'invoices/2026/04/',     // key prefix (optional)
  // 's3_bucket' => 'custom-bucket',        // override bucket from integration
]);

$response = $api->createPdf($request);
echo $response->getS3Bucket() . '/' . $response->getS3Key();

Pour l’archivage ou les usages juridiques, demandez une variante PDF/A.

<?php

use TemplateFox\Model\CreatePdfRequest;

$request = new CreatePdfRequest([
  'template_id' => 'YOUR_TEMPLATE_ID',
  'data'        => ['customer_name' => 'John Doe'],
  'pdf_variant' => 'pdf/a-2b',   // "pdf/a-1b" | "pdf/a-2b" | "pdf/a-3b"
]);

$response = $api->createPdf($request);

Pour les gros documents ou les traitements par lots, passez par l’endpoint asynchrone. Le SDK PHP expose createPdfAsync, getPdfJob et listPdfJobs dans la classe PDFAsyncApi ; le déroulé complet est décrit dans Créer un PDF (asynchrone).

<?php

use TemplateFox\Api\PDFAsyncApi;
use TemplateFox\Model\CreateAsyncPdfRequest;

$asyncApi = new PDFAsyncApi(null, $config);

$request = new CreateAsyncPdfRequest([
  'template_id'    => 'YOUR_TEMPLATE_ID',
  'data'           => ['invoice_number' => 'INV-001'],
  'webhook_url'    => 'https://example.com/webhooks/pdf',
  'webhook_secret' => 'whk_a1b2c3d4e5f6g7h8i9j0k1l2',  // HMAC-SHA256 signing
]);

$response = $asyncApi->createPdfAsync($request);
echo $response->getJobId();
// Poll $asyncApi->getPdfJob($jobId) or wait for the webhook.
<?php

use TemplateFox\ApiException;

try {
  $response = $api->createPdf($request);
} catch (ApiException $e) {
  echo 'status=' . $e->getCode() . "\n";
  echo 'body=' . $e->getResponseBody() . "\n";
}

La liste complète est dans Codes d’erreur.

ClasseMéthodeEndpoint
PDFApicreatePdfPOST /v1/pdf/create
PDFAsyncApicreatePdfAsyncPOST /v1/pdf/create-async
PDFAsyncApigetPdfJobGET /v1/pdf/jobs/{id}
PDFAsyncApilistPdfJobsGET /v1/pdf/jobs
ImageApicreateImagePOST /v1/image/create
TemplatesApilistTemplatesGET /v1/templates
TemplatesApigetTemplateFieldsGET /v1/templates/{id}/fields
AccountApigetAccountGET /v1/account
AccountApilistTransactionsGET /v1/account/transactions
IntegrationsApisaveS3ConfigPOST /v1/integrations/s3
IntegrationsApigetS3ConfigGET /v1/integrations/s3
IntegrationsApideleteS3ConfigDELETE /v1/integrations/s3
IntegrationsApitestS3ConnectionPOST /v1/integrations/s3/test

Tous les endpoints REST sont documentés dans la référence API.