Aller au contenu

SDK TypeScript et exemples REST — TemplateFox

Deux façons d’utiliser l’API TemplateFox depuis Node.js :

  • SDK (@templatefox/sdk) — client typé, généré automatiquement depuis notre spécification OpenAPI.
  • REST — fetch ou n’importe quel client HTTP. Pratique sur les runtimes edge ou pour limiter les dépendances.

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

Version npm Dépôt GitHub

Fenêtre de terminal
npm install @templatefox/sdk
# or
yarn add @templatefox/sdk
# or
pnpm add @templatefox/sdk

La variante REST ne demande aucune dépendance : fetch est intégré à Node 18+ et à tous les runtimes récents.

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

import { Configuration, PDFApi } from "@templatefox/sdk";

const api = new PDFApi(
new Configuration({
  apiKey: process.env.TEMPLATEFOX_API_KEY!,
}),
);

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

const response = await api.createPdf({
templateId: "YOUR_TEMPLATE_ID",
data: {
  customer_name: "John Doe",
  invoice_number: "INV-001",
  amount: "$1,234.56",
},
});

console.log(response.url);              // signed URL valid 24h
console.log(response.creditsRemaining); // credits left on the team

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

import fs from "node:fs";

const { url } = await api.createPdf({
templateId: "YOUR_TEMPLATE_ID",
data: { customer_name: "Jane Doe" },
});

const pdf = await fetch(url).then((r) => r.arrayBuffer());
fs.writeFileSync("invoice.pdf", Buffer.from(pdf));

Avec le SDK, vous téléchargez le fichier depuis l’URL signée. En REST, export_type: "binary" renvoie directement les octets du PDF : un aller-retour de moins.

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

const response = await api.createPdf({
templateId: "YOUR_TEMPLATE_ID",
data: { invoice_number: "INV-001" },
filename: "invoice-001",           // no extension, .pdf appended
storeS3: true,                      // upload to your configured bucket
s3Filepath: "invoices/2026/04/",   // key prefix (optional)
// s3Bucket: "custom-bucket",      // override bucket from integration
});

console.log(response.s3Bucket, response.s3Key);

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

const response = await api.createPdf({
templateId: "YOUR_TEMPLATE_ID",
data: { customer_name: "John Doe" },
pdfVariant: "pdf/a-2b",   // "pdf/a-1b" | "pdf/a-2b" | "pdf/a-3b"
});

Pour les gros documents ou les traitements par lots, passez par l’endpoint asynchrone : un webhook vous prévient quand le PDF est prêt. Le déroulé complet est décrit dans Créer un PDF (asynchrone).

const res = await fetch(`${BASE_URL}/v1/pdf/create-async`, {
method: "POST",
headers,
body: JSON.stringify({
  template_id: "YOUR_TEMPLATE_ID",
  data: { invoice_number: "INV-001" },
  webhook_url: "https://example.com/webhooks/pdf",
  webhook_secret: "whk_a1b2c3d4e5f6g7h8i9j0k1l2",  // HMAC-SHA256 signing
}),
});

const { job_id } = await res.json();
// Poll GET /v1/pdf/jobs/{job_id} or wait for the webhook.

Le SDK couvre aussi ces endpoints, dans la classe PDFAsyncApi (createPdfAsync, getPdfJob, listPdfJobs) ; l’exemple ci-dessus appelle l’API REST avec fetch.

import { ResponseError } from "@templatefox/sdk";

try {
const response = await api.createPdf({
  templateId: "INVALID_ID",
  data: {},
});
} catch (error) {
if (error instanceof ResponseError) {
  const body = await error.response.json();
  console.error(error.response.status, body.detail);
}
}

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.