> ## Documentation Index
> Fetch the complete documentation index at: https://docs.i-pay.money/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentification

> Clés API, en-têtes communs et réponses d'authentification de l'API iMoney Encaissement.

L'API iMoney Encaissement est une API REST en JSON, accessible à l'URL de base
`https://i-pay.money/api/v1`. Sauf pour l'unique opération publique signalée plus bas, chaque appel
s'authentifie avec la clé secrète du compte correspondant à l'environnement visé, et porte les
quatre en-têtes communs décrits ici.

## En-têtes requis

```http theme={null}
Content-Type: application/json
Authorization: Bearer IPAY_SECRET_KEY
Ipay-Target-Environment: sandbox
Ipay-Payment-Type: mobile
```

| En-tête                   | Règle                                                                                                                                                                                |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Content-Type`            | Utilisez exactement `application/json`.                                                                                                                                              |
| `Authorization`           | Utilisez le préfixe `Bearer` suivi de la clé secrète.                                                                                                                                |
| `Ipay-Target-Environment` | Valeur `sandbox` ou `live`, cohérente avec la clé.                                                                                                                                   |
| `Ipay-Payment-Type`       | `mobile` pour `POST /payments` (seul moyen de paiement pris en charge par cette opération). Les autres moyens passent par les [liens de paiement](/api-reference/liens-de-paiement). |

## Clés API et environnements

Le tableau de bord (**Développeurs → Clés API**) fournit une clé publique et une clé secrète pour
chaque environnement :

| Clé          | Format                       | Usage                                                                                              |
| ------------ | ---------------------------- | -------------------------------------------------------------------------------------------------- |
| Clé publique | `pk_sandbox_…` / `pk_live_…` | Réservée aux intégrations explicitement conçues pour une clé côté client, comme le SDK JavaScript. |
| Clé secrète  | `sk_sandbox_…` / `sk_live_…` | Appels API effectués par votre serveur, avec `Authorization: Bearer`.                              |

Sandbox et Live sont deux comptes entièrement séparés, chacun avec sa propre paire de clés. Une clé
Sandbox utilisée avec `Ipay-Target-Environment: live` échoue avec une erreur d'authentification (et
inversement) : les deux environnements ne se substituent jamais silencieusement l'un à l'autre.
Prévoyez donc une configuration par environnement (URL de base identique, clés et en-tête distincts)
plutôt qu'un simple interrupteur booléen dans votre code.

## Protéger les clés

* Placez la clé secrète dans un gestionnaire de secrets ou une variable d'environnement serveur.
* Ne l'intégrez jamais dans du JavaScript frontend, une application mobile, une capture d'écran ou
  un dépôt Git.
* Utilisez des clés différentes pour Sandbox et Live, et ne réutilisez jamais une clé Live dans un
  environnement de test.
* Après une régénération, mettez à jour les services concernés avant de retirer l'ancienne
  configuration.
* Journalisez la référence et le code HTTP, mais jamais l'en-tête `Authorization`.

## Réponses d'authentification

Les vérifications d'en-têtes s'exécutent dans un ordre fixe, sur toute opération authentifiée : la
première condition non satisfaite détermine la réponse. L'ordre exact et les messages littéraux sont
détaillés dans [Erreurs](/api-reference/erreurs).

| Code  | Signification                                                                           |
| ----- | --------------------------------------------------------------------------------------- |
| `400` | En-tête absent, environnement ou type de paiement non autorisé, format `Bearer` absent. |
| `401` | Aucune clé valide ne correspond à l'environnement demandé.                              |
| `403` | Le compte n'est pas validé pour l'environnement demandé.                                |
| `406` | Le `Content-Type` n'est pas `application/json`.                                         |

Une clé Sandbox utilisée avec `Ipay-Target-Environment: live` (ou l'inverse) est syntaxiquement
valide : elle échoue en `401`, pas en `400`.

## Opération publique

Une seule opération de cette API ne demande aucune clé ni aucun en-tête d'authentification :
[Consulter un lien de paiement](/api-reference/liens-de-paiement#get-external-payments-reference)
(`GET /external_payments/{reference}`). Toute personne connaissant la référence peut l'appeler :
utilisez une référence aléatoire à forte entropie, jamais un identifiant séquentiel.

## Webhooks

iMoney Encaissement envoie le secret que vous avez configuré dans l'en-tête `Secret-Hash` de ses
notifications. C'est une valeur statique partagée, à comparer avec votre propre secret côté serveur,
et non une signature HMAC calculée sur le corps de la requête. La configuration complète est décrite
dans [Webhooks](/guides/webhooks).
