Aller au contenu principal

API REST SendAs.me

L'API REST SendAs.me permet de gérer programmatiquement toutes vos ressources : applications, connexions OAuth, webhooks, logs et facturation.

URL de base

L'URL de base de l'API est configurée via la variable d'environnement API_URL lors du déploiement.

https://api.sendas.me

Toutes les URLs ci-dessous sont relatives à cette base.

Authentification

Chaque requête à l'API doit inclure le header X-Api-Secret avec votre clé d'API :

X-Api-Secret: sk_prod_votre_cle_api_secrete
Sécurité de la clé API

Ne committez jamais votre clé API dans votre code source. Utilisez des variables d'environnement. La clé API donne un accès complet à toutes vos ressources SendAs.me.

Exemple avec cURL

curl https://api.sendas.me/apps \
-H "X-Api-Secret: sk_prod_votre_cle_api_secrete"

Exemple avec Python

import httpx

API_URL = "https://api.sendas.me"
API_SECRET = "sk_prod_votre_cle_api_secrete"

headers = {"X-Api-Secret": API_SECRET}

async with httpx.AsyncClient() as client:
response = await client.get(f"{API_URL}/apps", headers=headers)
data = response.json()

Format des réponses

Toutes les réponses sont au format JSON avec le header Content-Type: application/json.

Réponse de succès

Les réponses de succès retournent directement l'objet ou la liste :

{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Mon Application",
"created_at": "2024-01-15T10:30:00Z"
}

Réponse de liste

Les listes sont enveloppées dans un objet avec une clé de contexte :

{
"apps": [
{ "id": "...", "name": "App 1" },
{ "id": "...", "name": "App 2" }
],
"total": 2
}

Réponse d'erreur

En cas d'erreur, la réponse contient un objet detail :

{
"detail": "Application not found"
}

Ou, pour les erreurs de validation (422) :

{
"detail": [
{
"loc": ["body", "name"],
"msg": "field required",
"type": "value_error.missing"
}
]
}

Codes HTTP

CodeSignification
200 OKRequête réussie
201 CreatedRessource créée avec succès
204 No ContentOpération réussie sans corps de réponse (suppression)
400 Bad RequestRequête malformée
401 UnauthorizedHeader X-Api-Secret absent ou invalide
403 ForbiddenAccès refusé à cette ressource
404 Not FoundRessource introuvable
409 ConflictConflit (ex: ressource déjà existante)
422 Unprocessable EntityErreur de validation des données
429 Too Many RequestsRate limiting dépassé
500 Internal Server ErrorErreur serveur interne

Rate Limiting

L'API applique un rate limiting pour protéger le service :

TypeLimite
Requêtes globales1000 req / heure / tenant
Création d'application10 / heure
Reset mot de passe SMTP5 / heure / application
OAuth connect20 / heure

Lorsque la limite est dépassée, l'API retourne un 429 Too Many Requests avec le header Retry-After indiquant le délai en secondes.

Pagination

Les endpoints qui retournent des listes supportent la pagination via les paramètres :

ParamètreTypeDéfautDescription
limitinteger20Nombre d'éléments par page (max: 100)
offsetinteger0Décalage pour la pagination

Exemple :

curl "https://api.sendas.me/logs?limit=50&offset=100" \
-H "X-Api-Secret: ..."

Versioning

L'API actuelle est à la version v1. Le versioning est intégré à l'URL de base. Les changements non rétrocompatibles seront publiés sur /v2/ avec une période de dépréciation de 6 mois.

Endpoints disponibles

MéthodeEndpointDescription
GET/meInformations du tenant courant
GET/statsStatistiques globales
GET/email-statsStatistiques d'envoi mensuelles
GET/logsLogs des e-mails
GET/appsListe des applications
POST/appsCréer une application
GET/apps/{pushable_key}Détails d'une application
PUT/apps/{pushable_key}Modifier une application
DELETE/apps/{pushable_key}Supprimer une application
POST/apps/{pushable_key}/reset-smtp-passwordRéinitialiser le mot de passe SMTP
GET/oauth/connect/{app_id}Initier la connexion OAuth
GET/oauth/callback/{plugin}Callback OAuth (Google/Microsoft)
GET/stripe/subscriptionDétails de l'abonnement Stripe
POST/stripe/checkout-setupCréer une session Stripe Checkout
POST/stripe/cancel-subscriptionAnnuler l'abonnement