SDK Go et exemples REST — TemplateFox
Deux façons d’utiliser l’API TemplateFox depuis Go :
- SDK (
github.com/TemplateFoxPDF/gosdk) — client typé, généré automatiquement depuis notre spécification OpenAPI. - REST — le paquet
net/httpde la bibliothèque standard. Pratique pour limiter les dépendances.
Les exemples de cette page montrent les deux côte à côte.
Installation
Section intitulée « Installation »go get github.com/TemplateFoxPDF/gosdkLa variante REST n’a besoin que de la bibliothèque standard (net/http, encoding/json).
Configuration
Section intitulée « Configuration »Définissez votre clé API une fois, puis réutilisez le client.
import (
"context"
"os"
templatefox "github.com/TemplateFoxPDF/gosdk"
)
config := templatefox.NewConfiguration()
config.AddDefaultHeader("x-api-key", os.Getenv("TEMPLATEFOX_API_KEY"))
client := templatefox.NewAPIClient(config)
ctx := context.Background() Générer un PDF
Section intitulée « Générer un PDF »Seuls template_id et data sont obligatoires ; tous les autres champs sont facultatifs.
request := templatefox.CreatePdfRequest{
TemplateId: "YOUR_TEMPLATE_ID",
Data: map[string]interface{}{
"customer_name": "John Doe",
"invoice_number": "INV-001",
"amount": "$1,234.56",
},
}
response, _, err := client.PDFApi.CreatePdf(ctx, request)
if err != nil {
log.Fatal(err)
}
fmt.Println(*response.Url) // signed URL valid 24h
fmt.Println(*response.CreditsRemaining) // credits left on the team Tous les paramètres sont détaillés dans Créer un PDF.
Enregistrer le PDF dans un fichier
Section intitulée « Enregistrer le PDF dans un fichier »response, _, err := client.PDFApi.CreatePdf(ctx, templatefox.CreatePdfRequest{
TemplateId: "YOUR_TEMPLATE_ID",
Data: map[string]interface{}{"customer_name": "Jane Doe"},
})
if err != nil {
log.Fatal(err)
}
pdfResp, _ := http.Get(*response.Url)
defer pdfResp.Body.Close()
file, _ := os.Create("invoice.pdf")
defer file.Close()
io.Copy(file, pdfResp.Body) Envoyer le PDF dans votre bucket S3
Section intitulée « Envoyer le PDF dans votre bucket S3 »Configurez l’intégration S3 une fois dans le tableau de bord, puis passez StoreS3: true dans n’importe quel appel.
storeS3 := true
filepath := "invoices/2026/04/" // key prefix (optional)
filename := "invoice-001" // no extension, .pdf appended
request := templatefox.CreatePdfRequest{
TemplateId: "YOUR_TEMPLATE_ID",
Data: map[string]interface{}{"invoice_number": "INV-001"},
Filename: &filename,
StoreS3: &storeS3,
S3Filepath: &filepath,
// S3Bucket: &bucket, // override bucket from integration
}
response, _, _ := client.PDFApi.CreatePdf(ctx, request)
fmt.Println(*response.S3Bucket, *response.S3Key) Conformité PDF/A
Section intitulée « Conformité PDF/A »Pour l’archivage ou les usages juridiques, demandez une variante PDF/A.
variant := "pdf/a-2b" // "pdf/a-1b" | "pdf/a-2b" | "pdf/a-3b"
response, _, _ := client.PDFApi.CreatePdf(ctx, templatefox.CreatePdfRequest{
TemplateId: "YOUR_TEMPLATE_ID",
Data: map[string]interface{}{"customer_name": "John Doe"},
PdfVariant: &variant,
}) Génération asynchrone avec webhooks
Section intitulée « Génération asynchrone avec webhooks »Pour les gros documents ou les traitements par lots, passez par l’endpoint asynchrone. Le déroulé complet est décrit dans Créer un PDF (asynchrone).
payload, _ := json.Marshal(map[string]any{
"template_id": "YOUR_TEMPLATE_ID",
"data": map[string]string{"invoice_number": "INV-001"},
"webhook_url": "https://example.com/webhooks/pdf",
"webhook_secret": "whk_a1b2c3d4e5f6g7h8i9j0k1l2", // HMAC-SHA256 signing
})
req, _ := http.NewRequest("POST", baseURL+"/v1/pdf/create-async", bytes.NewReader(payload))
setHeaders(req)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result struct{ JobId string `json:"job_id"` }
json.NewDecoder(resp.Body).Decode(&result)
// Poll GET /v1/pdf/jobs/{job_id} or wait for the webhook. L’exemple ci-dessus appelle l’API REST directement, avec net/http.
Gestion des erreurs
Section intitulée « Gestion des erreurs »response, httpResp, err := client.PDFApi.CreatePdf(ctx, request)
if err != nil {
if apiErr, ok := err.(templatefox.GenericOpenAPIError); ok {
fmt.Printf("status=%d body=%s\n", httpResp.StatusCode, apiErr.Body())
}
log.Fatal(err)
} La liste complète est dans Codes d’erreur.
Principales méthodes du SDK
Section intitulée « Principales méthodes du SDK »| Service | Méthode | Endpoint |
|---|---|---|
PDFApi | CreatePdf | POST /v1/pdf/create |
TemplatesApi | ListTemplates | GET /v1/templates |
TemplatesApi | GetTemplateFields | GET /v1/templates/{id}/fields |
AccountApi | GetAccount | GET /v1/account |
AccountApi | ListTransactions | GET /v1/account/transactions |
IntegrationsApi | SaveS3Config | POST /v1/integrations/s3 |
IntegrationsApi | GetS3Config | GET /v1/integrations/s3 |
IntegrationsApi | DeleteS3Config | DELETE /v1/integrations/s3 |
IntegrationsApi | TestS3Connection | POST /v1/integrations/s3/test |
Tous les endpoints REST sont documentés dans la référence API.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Créer un PDF — chaque paramètre en détail
- Créer un PDF (asynchrone) — webhooks et suivi des tâches
- Dépôt GitHub — code source, historique des versions, tickets
- Collection Postman — testez les endpoints de façon interactive