Brancher Ojin sur API Platform sans casser votre stack.
Ojin AI expose des agents conversationnels temps réel (voix, vision, world models) via une Model API et une Agent API. Côté back Symfony, ça veut dire un proxy WebSocket à écrire, une authentification à unifier, des conversations à persister et des quotas à plafonner. Je livre ce socle d'intégration en sprint court, sans déstabiliser votre stack API Platform existante.
SDK Node/Python uniquement — Les SDK officiels Ojin et l'écosystème Pipecat / LiveKit Agents sont pensés pour Node et Python — pas pour Symfony.
Clés exposées au front — Sans proxy serveur, les clés Ojin se retrouvent dans le navigateur — facture incontrôlée garantie.
Authentifications dissonantes — JWT applicatif côté Symfony, tokens Ojin côté inference — sans réconciliation, c'est l'usine à bugs.
Conversations perdues — Pas de persistance Doctrine : aucun replay possible pour le SAV, le contrôle qualité ou l'amélioration des prompts.
Coûts qui dérapent — Sans rate limiting et hard cap par tenant, un seul utilisateur peut faire exploser la facture mensuelle.
Avec Vulcain
Bundle proxy websocket et http côté serveur
Jwt applicatif unifié avec propagation du token ojin côté back uniquement
Persistance doctrine des conversations (turns
Tool calls
Scores)
Comptabilité par tenant et hard cap
Observabilité monolog + sentry/posthog.
§ 02 — Ce qui est livré
Ce qui est livré.
§ 01
Proxy temps réel Ojin ↔ Symfony
Bundle proxy WebSocket et HTTP vers la Model API et l'Agent API d'Ojin, compatible Pipecat et LiveKit Agents. Les clés d'API restent côté serveur, jamais exposées au navigateur.
Proxy WebSocket
Compatible Pipecat
Compatible LiveKit
Clés côté serveur
§ 02
Endpoints REST/GraphQL devant l'agent
Resources API Platform qui exposent l'historique de conversation, le contexte agent, les artefacts produits (audio, vision, tool calls). REST par défaut, GraphQL si votre front en a besoin.
Historique exposé
Contexte agent
Artefacts (audio, vision)
REST + GraphQL
§ 03
Authentification unifiée
JWT applicatif Symfony côté utilisateur final, propagation du token Ojin côté serveur uniquement. Pas de clé Ojin exposée au front, pas de double login pour vos utilisateurs.
JWT applicatif
Token Ojin côté serveur
Sans double login
Sans clé exposée
§ 04
Persistance & relecture
Stockage Doctrine des sessions Ojin : turns, tool calls, scores, métadonnées. Endpoints de replay pour le SAV et le contrôle qualité. Conformité RGPD intégrée (rétention configurable, droit à l'oubli, export).
Turns + tool calls
Endpoints de replay
Rétention configurable
Droit à l'oubli
§ 05
Quotas, billing & observabilité
Rate limiting natif API Platform, comptabilité par tenant (compte, équipe, utilisateur final), hard cap par compte pour éviter la dérive de coût. Logs Monolog structurés, traces PostHog/Sentry, métriques Prometheus si besoin.
Rate limiting
Hard cap par tenant
Stripe metered billing
Logs + traces
§ 06
Tests et CI
Mocks de la Model API pour rejouer les tests sans appeler Ojin, fixtures de conversations réalistes, PHPUnit pour les endpoints REST/GraphQL, Panther si UI temps réel à valider. Doc OpenAPI générée automatiquement à chaque déploiement.
Mocks Model API
Fixtures conversations
PHPUnit + Panther
OpenAPI auto
§ 04 — Tarifs & délais
§ 01
Cadrage Ojin
1 jour
Audit du besoin, choix entre Model API et Agent API, dimensionnement des quotas, estimation du coût Ojin mensuel attendu, cahier des charges 2 pages, devis ferme.
Tarifs sur devis après cadrage · forfait ou régie selon le format
§ 04 — Questions fréquentes
Questions côté intégrateurs.
§ 01Faut-il être client Ojin avant le cadrage ?+
Non. Le cadrage sert justement à choisir entre la Model API et l'Agent API d'Ojin selon votre cas. Je vous aide aussi à dimensionner les quotas et anticiper le coût mensuel avant de signer chez Ojin.
§ 02Vous travaillez avec Pipecat ou LiveKit ?+
Oui. Ojin expose des transports compatibles Pipecat et LiveKit Agents. Côté Symfony, je gère le proxy WebSocket et la persistance ; côté front, l'équipe choisit le transport qui colle au produit (WebRTC LiveKit pour la voix bidirectionnelle, pipeline Pipecat pour des cas plus simples).
§ 03Comment gérer la facturation des tokens Ojin par utilisateur final ?+
Comptabilité par tenant côté Doctrine, rate limiting API Platform, hard cap par compte pour éviter les explosions de facture. C'est exactement le modèle déjà en prod sur Qualifleads pour la facturation des appels LLM. Possibilité de brancher Stripe metered billing pour refacturer au client final.
§ 04Mon back est en Symfony 6 ou 7, c'est compatible ?+
Oui. Le bundle cible Symfony 6.4 LTS et 7.x, PHP 8.2+, API Platform 3.x ou 4.x. Pour une stack plus ancienne (Symfony 5.4), on cadre une montée de version en amont — ça reste rentable avant d'investir sur un agent IA.
§ 05Peut-on stocker les conversations en France (RGPD) ?+
Oui. La persistance Doctrine se fait dans votre base, hébergée où vous voulez (OVHcloud, Scaleway, Clever Cloud, on-premise). Ojin reste un sous-traitant de traitement côté inference : votre registre RGPD doit le mentionner et votre DPA Ojin doit être à jour.
§ 06Quel est le délai pour un premier agent en prod ?+
5 à 10 jours ouvrés après le cadrage pour un premier agent fonctionnel en préproduction (proxy + auth + persistance + un endpoint exposé). Comptez 2 à 3 semaines pour une mise en prod robuste avec tests complets, observabilité, runbook et formation équipe.
§ 07Combien ça coûte ?+
Sprint d'intégration entre 6 000 et 14 000 € HT selon le périmètre (Model API seule ou Agent API complète, nombre d'endpoints exposés, billing multi-tenant, intégration observabilité). Devis ferme délivré après le cadrage, sans engagement.
§ 05 — Cas client · SaaS B2B · IA · LLM en production
Qualifleads
SaaS B2B de scoring de leads par IA. La stack la plus proche d'Ojin dans mon portfolio : LLM en production, persistance des conversations, scoring multi-critères, quotas par tenant, facturation à l'usage. C'est la référence que vous voulez voir si vous intégrez Ojin.