Skip to content

API Ingest

This content is not available in your language yet.

L’endpoint d’ingest est ce que le SDK appelle pour envoyer un event. Tu peux aussi l’appeler directement depuis n’importe quel client HTTP.

POST https://api.pionne.app/ingest
X-Pionne-Token: pio_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{
"exception_type": "TypeError",
"message": "undefined is not an object (evaluating 'user.name')",
"stack": "TypeError: undefined is not an object\n at ...",
"level": "error",
"release": "1.0.0",
"environment": "production",
"platform": "ios",
"app_id": "com.acme.app",
"tags": {
"tier": "pro",
"ab_test": "variant_b"
},
"user": {
"id": "user_a8f2c1"
},
"contexts": {
"device": {
"manufacturer": "Apple",
"model": "iPhone 15 Pro",
"model_id": "iPhone16,1"
},
"app": {
"version": "1.0.0",
"build": "42",
"bundle_id": "com.acme.app"
},
"os": {
"name": "iOS",
"version": "18.2"
},
"expo": {
"runtime_version": "1.0.0",
"update_id": "abc123"
}
},
"mechanism": {
"type": "global",
"handled": false
},
"breadcrumbs": [
{
"category": "navigation",
"message": "/checkout",
"ts": 1714896000000
},
{
"category": "http",
"message": "GET https://api.example.com/cart",
"ts": 1714896001000,
"data": { "status": 200 }
}
],
"screenshot": "/9j/4AAQSkZJRgABA...",
"extra": {
"cart_id": 42
}
}
ChampTypeRequisDescription
exception_typestringOuiEx: TypeError, Error, custom
messagestringOuiMessage de l’erreur
stackstring | nullNonStack brute
level'fatal' | 'error' | 'warning' | 'info'NonDefault error
releasestringNon mais recommandéPour le matching sourcemap
environmentstringNonDefault production
platform'ios' | 'android'OuiAuto par le SDK
app_idstringOuiBundle ID, sert au pinning
tagsobjectNonClés/valeurs scalaires
user.idstringNonAnonyme uniquement
contextsobjectNonAuto-rempli par le SDK
mechanismobjectNon{ type, handled }
breadcrumbsarrayNonMax 50
screenshotstringNonJPG base64
extraobjectNonDonnées libres
{ "event_id": "evt_a1b2c3", "issue_id": "iss_xxx" }

L’event est en file de traitement. Il apparaît dans le dashboard sous quelques secondes.

CodeCauseSolution
400Payload mal forméVérifie le schéma
401Token invalide ou révoquéRégénère via /api/projects/{id}/regenerate
403app_id ne match pas le bundle_id pinnéVoir Bundle ID
413Payload > 1 MB (souvent screenshot trop lourd)Baisse screenshotQuality
429Rate limit : 1000/min/tokenRéduis le sampleRate
Fenêtre de terminal
curl -X POST https://api.pionne.app/ingest \
-H "Content-Type: application/json" \
-H "X-Pionne-Token: pio_live_xxx..." \
-d '{
"exception_type": "Error",
"message": "manual test",
"level": "info",
"platform": "ios",
"app_id": "com.acme.app"
}'