L'API d'ingestion Data Cloud (Ingestion API) est le point d'entrée programmatique permettant d'envoyer des données depuis n'importe quelle source externe vers Data Cloud, sans passer par un connecteur préconstruit. Pour un data engineer, c'est l'outil à connaître dès qu'un système tiers n'est pas couvert par les connecteurs natifs (ERP maison, application interne, plateforme SaaS non référencée). Cet article pose les fondations : architecture, authentification, structure des appels et pièges à éviter.
L'Ingestion API est une API REST exposée par Data Cloud qui accepte des payloads JSON structurés et les route vers un Data Lake Object (DLO) via un connecteur d'ingestion personnalisé (Ingestion Connector). Contrairement aux connecteurs Salesforce CRM ou Marketing Cloud qui répliquent automatiquement les objets natifs, l'Ingestion API exige de définir explicitement un schéma (yaml ou via l'interface Setup) qui décrit la structure des données entrantes : champs, types, clé primaire.
Une fois le schéma déployé, Data Cloud génère un connecteur dédié qui expose un endpoint HTTPS. Chaque appel à cet endpoint dépose un lot d'enregistrements dans une zone de staging avant que le pipeline d'ingestion ne les persiste dans le DLO correspondant.
Avant d'écrire le premier appel API, il faut comprendre trois composants qui interagissent :
Ce découpage est important car il sépare la responsabilité de "recevoir la donnée" (le connecteur) de celle de "l'interpréter métier" (le DMO, via le mapping). En pratique, on ne modifie jamais le DLO directement : on ajuste le schéma du connecteur puis on relance le data stream.
L'authentification repose sur le protocole OAuth 2.0 avec le flow Client Credentials ou JWT Bearer, adossé à un Connected App Salesforce. Il faut récupérer un access token via l'endpoint d'autorisation avant chaque session d'ingestion, puis l'utiliser en en-tête Authorization: Bearer sur les appels suivants. Le token a une durée de vie limitée (généralement 2 heures) : tout pipeline d'ingestion doit implémenter un mécanisme de rafraîchissement automatique.
POST /services/data/v60.0/ssot/ingest/{connectorApiName}/{objectApiName}
Authorization: Bearer <access_token>
Content-Type: application/json
{
"data": [
{
"id": "CUST-10245",
"email": "client@example.com",
"createdDate": "2026-01-20T10:15:00Z"
}
]
}
Le nom du connecteur (connectorApiName) et de l'objet (objectApiName) proviennent directement du schéma déclaré dans Setup > Data Cloud > Ingestion API. Une erreur fréquente est d'utiliser le label affiché dans l'UI plutôt que l'API name réel, ce qui provoque une erreur 404 silencieuse.
Le schéma d'un connecteur d'ingestion se définit via un fichier OpenAPI YAML ou directement dans l'assistant Setup. Chaque objet doit déclarer :
primaryKey) utilisé pour les upserts.Le comportement par défaut est un upsert basé sur la clé primaire : un enregistrement existant est mis à jour, un nouveau est inséré. Il n'y a pas de suppression via l'Ingestion API — pour purger des données, il faut passer par les Data Retention Policies ou une purge manuelle du DLO.
Quelques points de vigilance qui reviennent systématiquement en mission :
À retenir : l'Ingestion API n'est pas un remplaçant universel des connecteurs batch. Elle est optimale pour des flux applicatifs à fréquence modérée (webhooks, événements métier) ; pour des chargements massifs et ponctuels, préférez Bulk API 2.0.
Maîtriser ces bases permet ensuite d'aborder sereinement les sujets plus avancés : streaming via SDK, connecteurs batch automatisés, ou stratégies de transformation avant/après ingestion, qui feront l'objet des prochains articles de cette série.
Notre équipe DevToSpace accompagne vos projets d'ingestion de données vers Data Cloud et Marketing Cloud Next.
Parler à un expert