Intégrez la création instantanée de vos galeries de mariage avec votre CRM (Fotostudio, Shoot & Sell, Dubsado), vos automatisations Zapier / Make ou vos propres scripts et espaces clients.
Dès qu'un contrat de mariage est signé, votre webhook crée la galerie On est là et injecte automatiquement l'URL de la galerie et des chevalets QR code dans la fiche client.
Vérifiez si un studio existe et créez des galeries à partir d'un formulaire Typeform/Tally, d'une ligne Notion ou d'un e-mail reçu.
Intégrez la galerie live dans votre site WordPress, Squarespace ou votre propre plateforme sur-mesure.
Toutes les requêtes vers l'API On est là doivent inclure une clé d'API valide. Vous pouvez générer et révoquer vos clés à tout moment depuis votre console administrateur (menu API & Clés).
Passez votre clé d'API dans l'en-tête HTTP Authorization sous forme de jeton Bearer (recommandé), ou via l'en-tête X-API-Key :
Authorization: Bearer oel_live_9f8d1a3c7b5e204d88e612f901ab34cd56ef78
X-API-Key: oel_live_9f8d1a3c7b5e204d88e612f901ab34cd56ef78
Crée instantanément une galerie participative complète pour un mariage, avec son slug unique, son URL d'accès invité, son mur interactif projetable et son kit de chevalets imprimables.
| Paramètre | Type | Statut | Description & Exemples |
|---|---|---|---|
couple_names |
string | Requis | Prénoms ou nom du couple marié (ex: "Sophie & Thomas"). |
event_date |
string | Requis | Date du mariage au format standard AAAA-MM-JJ (ex: "2026-07-18"). |
email |
string | Optionnel | E-mail du photographe (ex: "contact@monstudiophoto.fr"). Si le compte existe, la galerie lui est rattachée ; sinon, son compte est automatiquement provisionné et créé ! |
studio_name |
string | Optionnel | Nom commercial du studio (ex: "Studio Horizon Photographie"). Utilisé sur la galerie, les invitations et les chevalets QR codes. |
venue |
string | Optionnel | Lieu ou domaine de la fête (ex: "Château de la Tour, Chantilly"). |
expected_guests |
integer | Optionnel | Nombre estimé d'invités adultes (ex: 120). |
moderation_mode |
string | Optionnel | "auto" (photos publiées en direct, défaut) ou "review" (validation manuelle préalable). |
show_banner |
boolean | Optionnel | true (défaut, affiche les encarts et la pastille flottante invité "Tu souhaites être prévenu(e)...") ou false pour masquer entièrement le bandeau et le bloc de collecte d'e-mails. |
bg_color |
string | Optionnel | Couleur de fond personnalisée de la galerie sous la forme hexadécimale #RRGGBB (ex: "#F3E9DB"). Par défaut : thème sombre (#0E0F11). Si une nuance claire comme #F3E9DB est passée, les cartes, polices et contrastes s'adaptent automatiquement pour une lisibilité optimale. |
status |
string | Optionnel | "draft" (brouillon pré-mariage, défaut) ou "published". |
require_payment |
boolean | Optionnel | true pour déclencher immédiatement une session Stripe Checkout à 19,99 € (ou montant personnalisé). La galerie est créée en statut draft et l'API renvoie l'URL de paiement checkout_url. Dès paiement du client, la galerie est automatiquement activée en published. Alias acceptés : trigger_payment, with_payment, checkout, pay. |
amount_cents |
integer | Optionnel | Montant à facturer en centimes (défaut : 1999 pour 19,99 €). Vous pouvez aussi utiliser price: "19.99". |
success_url |
string | Optionnel | URL de redirection personnalisée après validation du paiement Stripe (supporte le placeholder {CHECKOUT_SESSION_ID}). Par défaut : redirection directe vers la galerie déverrouillée. |
cancel_url |
string | Optionnel | URL de retour en cas d'abandon du paiement par le client sur Stripe Checkout. |
curl -X POST https://onestla.app/api/v1/events \
-H "Authorization: Bearer VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{
"couple_names": "Sophie & Thomas",
"event_date": "2026-07-18",
"email": "contact@monstudiophoto.fr",
"studio_name": "Studio Horizon Photographie",
"venue": "Château de la Tour, Chantilly",
"expected_guests": 120,
"moderation_mode": "auto",
"bg_color": "#F3E9DB",
"show_banner": false
}'
const response = await fetch('https://onestla.app/api/v1/events', {
method: 'POST',
headers: {
'Authorization': 'Bearer VOTRE_CLE_API',
'Content-Type': 'application/json'
},
body: JSON.stringify({
couple_names: 'Sophie & Thomas',
event_date: '2026-07-18',
email: 'contact@monstudiophoto.fr',
studio_name: 'Studio Horizon Photographie',
venue: 'Château de la Tour, Chantilly',
expected_guests: 120,
bg_color: '#F3E9DB'
})
});
const data = await response.json();
console.log('Galerie créée :', data.event.urls.gallery_url);
<?php
$payload = [
'couple_names' => 'Sophie & Thomas',
'event_date' => '2026-07-18',
'email' => 'contact@monstudiophoto.fr',
'studio_name' => 'Studio Horizon Photographie',
'venue' => 'Château de la Tour, Chantilly',
'expected_guests' => 120,
'bg_color' => '#F3E9DB',
];
$ch = curl_init('https://onestla.app/api/v1/events');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer VOTRE_CLE_API',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$result = curl_exec($ch);
$data = json_decode($result, true);
curl_close($ch);
echo "URL Galerie : " . $data['event']['urls']['gallery_url'];
import requests
url = "https://onestla.app/api/v1/events"
headers = {
"Authorization": "Bearer VOTRE_CLE_API",
"Content-Type": "application/json"
}
payload = {
"couple_names": "Sophie & Thomas",
"event_date": "2026-07-18",
"email": "contact@monstudiophoto.fr",
"studio_name": "Studio Horizon Photographie",
"venue": "Château de la Tour, Chantilly",
"expected_guests": 120,
"bg_color": "#F3E9DB"
}
r = requests.post(url, json=payload, headers=headers)
data = r.json()
print("URL Galerie :", data["event"]["urls"]["gallery_url"])
Dans Zapier (Webhooks by Zapier) ou Make (HTTP module) :
- Méthode : POST
- URL : https://onestla.app/api/v1/events
- Headers :
Authorization : Bearer VOTRE_CLE_API
Content-Type : application/json
- Body (JSON) :
{
"couple_names": "{{1.nom_des_maries}}",
"event_date": "{{1.date_mariage}}",
"email": "{{1.email_photographe}}",
"studio_name": "{{1.nom_studio}}",
"venue": "{{1.domaine_reception}}",
"expected_guests": {{1.nb_convives}},
"bg_color": "#F3E9DB"
}
{
"ok": true,
"payment_required": false,
"message": "Galerie créée avec succès.",
"is_new_studio": false,
"event": {
"id": 42,
"public_slug": "k7w9m2zp",
"couple_names": "Sophie & Thomas",
"event_date": "2026-07-18",
"venue": "Château de la Tour, Chantilly",
"expected_guests": 120,
"moderation_mode": "auto",
"status": "draft",
"show_banner": false,
"bg_color": "#F3E9DB",
"urls": {
"gallery_url": "https://onestla.app/g/k7w9m2zp",
"upload_url": "https://onestla.app/g/k7w9m2zp",
"wall_url": "https://onestla.app/wall/a4f890e1bc129482fa",
"admin_url": "https://onestla.app/admin/e/42",
"kit_url": "https://onestla.app/admin/e/42/kit"
},
"photographer": {
"id": 2,
"studio_name": "Studio Horizon Photographie",
"email": "contact@monstudiophoto.fr",
"is_new": false
},
"created_at": "2026-09-24 21:40:00"
}
}
Pour faire régler la galerie directement par le client avant toute création, passez "require_payment": true.
Ni la galerie ni le compte photographe ne sont créés en base de données avant le paiement : l'API génère une session Stripe sécurisée et vous retourne le lien checkout_url. Dès que le client effectue son règlement, la galerie et le compte photographe sont automatiquement créés et activés en direct avec les options spécifiées (y compris bg_color).
curl -X POST https://onestla.app/api/v1/events \
-H "Authorization: Bearer VOTRE_CLE_API" \
-H "Content-Type: application/json" \
-d '{
"couple_names": "Sophie & Thomas",
"event_date": "2026-07-18",
"venue": "Château de la Tour, Chantilly",
"expected_guests": 120,
"bg_color": "#F3E9DB",
"require_payment": true,
"amount_cents": 1999,
"success_url": "https://votresite.com/merci?session_id={CHECKOUT_SESSION_ID}",
"cancel_url": "https://votresite.com/annule"
}'
{
"ok": true,
"payment_required": true,
"message": "Session de paiement Stripe générée (19,99 €). Le compte photographe et la galerie seront créés automatiquement dès réception du paiement.",
"payment": {
"status": "pending",
"amount_cents": 1999,
"amount_eur": 19.99,
"currency": "EUR",
"checkout_url": "https://checkout.stripe.com/c/pay/cs_live_a1b2c3d4e5f6...",
"session_id": "cs_live_a1b2c3d4e5f6...",
"success_url": "https://votresite.com/merci?session_id=cs_live_a1b2c3d4e5f6...",
"cancel_url": "https://votresite.com/annule"
},
"event_preview": {
"couple_names": "Sophie & Thomas",
"event_date": "2026-07-18",
"venue": "Château de la Tour, Chantilly",
"expected_guests": 120,
"bg_color": "#F3E9DB",
"public_slug": "8dgxiphy",
"gallery_url": "https://onestla.app/g/8dgxiphy",
"wall_url": "https://onestla.app/wall/a4f890e1bc129482fa",
"status": "pending_payment"
}
}
Génère une session Stripe à 19,99 € pour une galerie en attente (brouillon) déjà créée auparavant.
Permet de tester avant création si un studio_name ou une adresse email est déjà enregistré sur On est là.
| Paramètre | Type | Description |
|---|---|---|
studio_name |
string | Nom du studio à vérifier (insensible à la casse). |
email |
string | Adresse e-mail à vérifier si aucun studio_name n'est trouvé. |
# Test par nom de studio curl -X GET "https://onestla.app/api/v1/studio/check?studio_name=Studio+Horizon+Photographie" \ -H "Authorization: Bearer VOTRE_CLE_API" # Ou test par e-mail curl -X GET "https://onestla.app/api/v1/studio/check?email=contact@monstudiophoto.fr" \ -H "Authorization: Bearer VOTRE_CLE_API"
const check = await fetch('https://onestla.app/api/v1/studio/check?studio_name=Studio+Horizon', {
headers: { 'Authorization': 'Bearer VOTRE_CLE_API' }
});
const result = await check.json();
if (result.exists) {
console.log('Studio trouvé, ID:', result.photographer.id);
} else {
console.log('Nouveau studio à créer');
}
import requests
r = requests.get(
"https://onestla.app/api/v1/studio/check",
params={"studio_name": "Studio Horizon Photographie"},
headers={"Authorization": "Bearer VOTRE_CLE_API"}
)
data = r.json()
print("Existe déjà :", data["exists"])
"exists": true) :{
"ok": true,
"exists": true,
"query": {
"studio_name": "Studio Horizon Photographie",
"email": null
},
"photographer": {
"id": 2,
"studio_name": "Studio Horizon Photographie",
"email": "contact@monstudiophoto.fr",
"brand_color": "#E0A458",
"events_count": 8,
"created_at": "2026-08-15 10:00:00"
}
}
"exists": false) :{
"ok": true,
"exists": false,
"query": {
"studio_name": "Studio Inconnu",
"email": null
},
"photographer": null
}
curl -X GET "https://onestla.app/api/v1/events?limit=25" \ -H "Authorization: Bearer VOTRE_CLE_API"
Renvoie les statistiques en direct : nombre de photos approuvées, photos en attente de modération et nombre de contacts e-mails d'invités collectés.
{
"ok": true,
"event": {
"id": 40,
"public_slug": "myxvp5nn",
"couple_names": "Clémence & Alexandre",
"event_date": "2026-08-22",
"venue": "Château de Chambord",
"expected_guests": 150,
"moderation_mode": "auto",
"status": "draft",
"show_banner": true,
"bg_color": "#F3E9DB",
"metrics": {
"approved_photos": 42,
"pending_photos": 3,
"guest_contacts": 58
},
"urls": {
"gallery_url": "https://onestla.app/g/myxvp5nn",
"wall_url": "https://onestla.app/wall/4c42e5e1f1ca07a26e",
"admin_url": "https://onestla.app/admin/e/40",
"kit_url": "https://onestla.app/admin/e/40/kit"
},
"created_at": "2026-09-24 07:11:05"
}
}
| Code HTTP | Signification | Explication |
|---|---|---|
200 OK |
Succès | Requête traitée avec succès (consultation, vérification). |
201 Created |
Création réussie | La nouvelle galerie a été créée et configurée. |
400 Bad Request |
Requête invalide | Paramètre de recherche ou payload manquant. |
401 Unauthorized |
Non authentifié | Clé d'API absente, invalide ou révoquée. |
422 Unprocessable |
Validation échouée | Champs obligatoires manquants, format d'e-mail invalide ou date incorrecte. |
404 Not Found |
Introuvable | La galerie demandée n'existe pas ou n'appartient pas à ce compte. |
Générez votre première clé d'API en 1 clic dans votre espace d'administration et créez votre première galerie en quelques millisecondes.
Accéder à l'espace API & Clés →