---
title: Go
description: >-
  Apprenez à installer et utiliser le SDK Go de Firmreader, requis avec Go 1.21 ou ultérieur, pour créer et lister des publications et gérer les erreurs d’API.
lastUpdated: "2026-08-21"
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

Le SDK Go requiert Go 1.21 ou une version ultérieure. Chaque méthode accepte un `context.Context`, ce qui vous permet d’appliquer des délais d’expiration et une annulation.

## Installer

```bash
go get github.com/firmreader/firmreader-go
```

## Initialiser le client

```go
package main

import (
	"os"

	"github.com/firmreader/firmreader-go"
)

func main() {
	client := firmreader.NewClient(os.Getenv("FIRMREADER_API_KEY")) // fr_live_...
	_ = client
}
```

## Créer une publication

```go
post, err := client.Posts.Create(ctx, &firmreader.PostParams{
	ChannelID: "ch_company_news",
	Title:     "Welcome to Firmreader",
	Body:      "We're excited to announce our new internal communications platform.",
	Priority:  "normal",
})
if err != nil {
	log.Fatal(err)
}

fmt.Printf("Published post %s\n", post.ID)
```

## Lister les publications

```go
posts, err := client.Posts.List(ctx, &firmreader.ListParams{
	ChannelID: "ch_company_news",
	Limit:     20,
})
if err != nil {
	log.Fatal(err)
}

for _, post := range posts.Data {
	fmt.Println(post.Title)
}
```

## Gérer les erreurs

Le client renvoie une `*firmreader.Error` pour les réponses qui ne sont pas 2xx. Utilisez `errors.As` pour lire le statut et le code.

```go
var apiErr *firmreader.Error
if errors.As(err, &apiErr) {
	fmt.Printf("%d: %s\n", apiErr.Status, apiErr.Code)
}
```

<Note>
Définissez `firmreader.WithIdempotencyKey("...")` sur tout appel d’écriture afin que les nouvelles tentatives ne créent pas de publications en double.
</Note>
