API Aura by Henock Agbo

Construis avec un signal vivant.

Aura est une API IA complète créée par Henock Agbo. Conversation avec mémoire, analyse d'images, génération visuelle, synthèse et reconnaissance vocale — le tout via une API REST simple et rapide.
https://philbuilder-ai.fastapicloud.dev

01Introduction

Bienvenue dans la documentation de l'API Aura. Cette API te donne accès à un assistant IA polyvalent capable de converser, analyser des images, générer du contenu visuel, transcrire et synthétiser de la parole.

Que tu construises une application mobile, un chatbot web, un outil de productivité ou un agent automatisé — Aura fournit les briques essentielles pour intégrer l'intelligence artificielle en quelques lignes de code.

💬

Conversation

Dialogue naturel avec mémoire sémantique et historique de session persistant.

👁️

Vision

Analyse et description détaillée d'images uploadées via multipart/form-data.

🎨

Génération d'image

Crée des images uniques à partir d'un prompt texte, avec dimensions personnalisables.

🎙️

Audio

Transcription STT (speech-to-text) et synthèse TTS (text-to-speech) en flux direct.

⚡

Compatible OpenAI

Utilise ton SDK OpenAI préféré — change juste l'URL de base et la clé API.

🔐

Sécurisé

Authentification par clé API rotative, gestion de session et OAuth Google.

Base URL : https://philbuilder-ai.fastapicloud.dev
Toutes les requêtes doivent utiliser HTTPS. Le HTTP pur est refusé.

02Connexion

Connecte-toi ou cree un compte pour generer et gerer tes cles API. Chaque cle est liee a ton compte et peut etre revoquee a tout moment.

ou
?

Tes cles API

Chargement...

03Gestion des cles API

Les cles API sont ton passeport pour acceder a l'API Aura. Chaque cle est unique, liee a ton compte, et peut etre nommee pour identifier le projet ou l'environnement auquel elle est destinee.

Creer une cle

Connecte-toi ci-dessus, donne un nom a ta cle, puis clique sur Generer. La cle complete ne s'affiche qu'une seule fois — copie-la immediatement.

POST /api/v1/generer-cle
{"nom": "mon-projet"}

Utiliser une cle

Envoie ta cle dans le header X-API-Key pour les routes natives, ou Authorization: Bearer pour la compatibilite OpenAI.

X-API-Key: aura_sk_xxxxxxxx

Lister tes cles

Recupere la liste de tes cles actives avec leur nom et un apercu masque pour identifier chacune.

GET /api/v1/compte/mes-cles
Header: X-Session: <jeton>

Revoquer une cle

Si une cle est compromise ou obsolete, supprime-la depuis le tableau de bord. La revocation est immediate et irreversible.

DELETE /api/v1/compte/cles/<id>
Header: X-Session: <jeton>
Securite critique : Ne stocke jamais ta cle API dans du code front-end public, dans un depot Git, ou dans des variables d'environnement versionnees. Utilise un backend proxy ou des secrets manages (Vault, AWS Secrets Manager, etc.).

Flux recommande pour les developpeurs

  1. Cree un compte sur ce portail ou via l'endpoint /api/v1/compte/inscription
  2. Genere une cle nommee selon ton environnement (ex: aura-prod, aura-dev)
  3. Stocke la cle dans des variables d'environnement cote serveur uniquement
  4. Appelle l'API depuis ton backend avec le header X-API-Key
  5. Rotation : regenere une nouvelle cle et revoque l'ancienne periodiquement

04Authentification API

Une fois ta cle generee, utilise l'un des deux styles d'authentification selon l'endpoint appele :

StyleHeaderUtilise par
Aura natifX-API-Key: ta_cleToutes les routes /api/v1/*
Compatible OpenAIAuthorization: Bearer ta_cle/v1/chat/completions
Garde ta cle privee. Ne la mets jamais dans du code front-end visible publiquement ni dans un depot Git. Utilise un backend proxy ou des variables d'environnement securisees.

05Premier appel

Voici comment faire ton premier appel a l'API Aura en trois langages. Remplace ta_cle_ici par ta cle API reelle.

curl -X POST https://philbuilder-ai.fastapicloud.dev/api/v1/causerie \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ta_cle_ici" \
  -d '{"message": "Bonjour Aura, qui es-tu ?"}'
import httpx

reponse = httpx.post(
    "https://philbuilder-ai.fastapicloud.dev/api/v1/causerie",
    headers={"X-API-Key": "ta_cle_ici"},
    json={"message": "Bonjour Aura, qui es-tu ?"},
    timeout=60.0,
)
print(reponse.json()["reponse"])
const res = await fetch("https://philbuilder-ai.fastapicloud.dev/api/v1/causerie", {
  method: "POST",
  headers: { 
    "Content-Type": "application/json", 
    "X-API-Key": "ta_cle_ici" 
  },
  body: JSON.stringify({ message: "Bonjour Aura, qui es-tu ?" }),
});
const data = await res.json();
console.log(data.reponse);
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    payload := map[string]string{"message": "Bonjour Aura, qui es-tu ?"}
    body, _ := json.Marshal(payload)
    req, _ := http.NewRequest("POST", 
        "https://philbuilder-ai.fastapicloud.dev/api/v1/causerie",
        bytes.NewBuffer(body))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("X-API-Key", "ta_cle_ici")
    client := &http.Client{}
    resp, _ := client.Do(req)
    // Traiter la reponse...
}
Reponse attendue : Un JSON contenant {"reponse": "..."} avec le message genere par Aura.

06Compatible OpenAI

Deja habitue au SDK OpenAI, Gemini ou Claude ? Change juste l'URL de base et utilise ta cle Aura. Aucune autre modification necessaire.

from openai import OpenAI

client = OpenAI(
    base_url="https://philbuilder-ai.fastapicloud.dev/v1",
    api_key="ta_cle_ici",
)

reponse = client.chat.completions.create(
    model="aura",
    messages=[{"role": "user", "content": "Bonjour Aura !"}],
    stream=False,
)
print(reponse.choices[0].message.content)

Tu peux aussi utiliser le streaming (Server-Sent Events) :

for chunk in client.chat.completions.create(
    model="aura",
    messages=[{"role": "user", "content": "Raconte une histoire"}],
    stream=True,
):
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

07Reference des endpoints

POST/api/v1/causerie

Conversation avec memoire — Aura s'appuie sur sa memoire semantique et l'historique de session pour maintenir le contexte.

ChampTypeRequisDescription
messagestringOuiLe message de l'utilisateur. Max 8000 caracteres.
session_idstringNonIdentifiant de session pour garder le contexte entre plusieurs messages.
systemstringNonInstructions systeme personnalisees pour orienter le comportement.
curl -X POST https://philbuilder-ai.fastapicloud.dev/api/v1/causerie \
  -H "X-API-Key: ta_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Quel est le sujet de notre conversation precedente ?",
    "session_id": "sess_abc123"
  }'

POST/api/v1/vision/analyser

Analyse une image et renvoie une description detaillee ou repond a une question specifique sur son contenu.

ChampTypeRequisDescription
imagefichierOuiFichier image (JPG, PNG, WEBP). Format multipart/form-data.
questionstringNonQuestion personnalisee. Par defaut : "Decris cette image en detail."
curl -X POST https://philbuilder-ai.fastapicloud.dev/api/v1/vision/analyser \
  -H "X-API-Key: ta_cle" \
  -F "image=@photo.jpg" \
  -F "question=Quels objets vois-tu sur cette image ?"

POST/api/v1/image/generer

Genere une image a partir d'un prompt texte. Renvoie l'image directement au format image/png.

ChampTypeRequisDescription
promptstringOuiDescription textuelle de l'image souhaitee.
largeurintNonLargeur en pixels. Par defaut : 1024. Max : 1792.
hauteurintNonHauteur en pixels. Par defaut : 1024. Max : 1792.
stylestringNonStyle visuel : realistic, anime, artistic, 3d.
curl -X POST https://philbuilder-ai.fastapicloud.dev/api/v1/image/generer \
  -H "X-API-Key: ta_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Un chat astronaute flottant dans l'espace, style realiste",
    "largeur": 1024,
    "hauteur": 1024,
    "style": "realistic"
  }' \
  --output image.png

POST/api/v1/audio/transcrire

Transcrit un fichier audio (MP3, WAV, OGG, M4A) en texte. Supporte plusieurs langues avec detection automatique.

ChampTypeRequisDescription
audiofichierOuiFichier audio. Format multipart/form-data. Max 25 Mo.
languestringNonCode langue ISO (ex: fr, en). Detection auto si absent.
curl -X POST https://philbuilder-ai.fastapicloud.dev/api/v1/audio/transcrire \
  -H "X-API-Key: ta_cle" \
  -F "audio=@enregistrement.wav" \
  -F "langue=fr"

POST/api/v1/audio/parler

Convertit un texte en audio. Renvoie le fichier directement au format audio/mpeg (MP3).

ChampTypeRequisDescription
textestringOuiLe texte a convertir en parole. Max 4000 caracteres.
voixstringNonIdentifiant de voix. Par defaut : aura-default.
vitessefloatNonVitesse de parole. 0.5 (lent) a 2.0 (rapide). Defaut : 1.0.
curl -X POST https://philbuilder-ai.fastapicloud.dev/api/v1/audio/parler \
  -H "X-API-Key: ta_cle" \
  -H "Content-Type: application/json" \
  -d '{"texte": "Bonjour, je suis Aura. Comment puis-je t aider ?"}' \
  --output voix.mp3

POST/v1/chat/completions

Format standard compatible OpenAI. Authentification via Authorization: Bearer. Supporte le streaming SSE.

ChampTypeRequisDescription
messagesarrayOuiTableau de messages {"role": "user"|"assistant", "content": "..."}
modelstringOuiUtilise aura comme identifiant de modele.
streamboolNonReponse en flux (Server-Sent Events). Defaut : false.
temperaturefloatNonCreativite (0.0 a 2.0). Defaut : 0.7.
max_tokensintNonTokens max en sortie. Defaut : 2000. Max : 4000.
curl -X POST https://philbuilder-ai.fastapicloud.dev/v1/chat/completions \
  -H "Authorization: Bearer ta_cle" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "aura",
    "messages": [
      {"role": "system", "content": "Tu es un expert en programmation."},
      {"role": "user", "content": "Explique les closures en JavaScript"}
    ],
    "temperature": 0.5,
    "max_tokens": 1500
  }'

08Limites & quotas

Les limites suivantes sont appliquees pour garantir la stabilite du service pour tous les utilisateurs :

RessourceLimiteNotes
Messages (entree)8000 caracteresComptes apres normalisation Unicode.
Reponses (sortie)2000 tokens~1500 mots en francais. Extensible sur demande.
Fichiers audio25 MoFormats supportes : MP3, WAV, OGG, M4A.
Images (upload)10 MoJPG, PNG, WEBP. Max 4096x4096 px.
Images (generation)1792x1792 pxRatio 1:1 recommande pour la meilleure qualite.
Requetes / minute60Par cle API. Contacte-nous pour augmenter.
Requetes / jour10 000Par compte. Usage raisonnable demande.
Besoin de plus ? Contacte henockagbo4@gmail.com pour discuter d'un quota personnalise ou d'un acces prioritaire.

09Codes d'erreur

CodeSignificationAction recommandee
400Requete invalideVerifie le format JSON, les champs requis et les types de donnees.
401Cle API manquante ou invalideVerifie que le header X-API-Key ou Authorization est present et correct.
403Quota depasse ou acces interditAttends la fenetre de rate limit ou contacte le support pour augmenter ton quota.
413Fichier trop volumineuxReduis la taille du fichier ou compresse-le avant envoi.
429Trop de requetesRalentis le rythme d'appels ou mets en place un backoff exponentiel.
500Erreur interne du serveurReessaie dans quelques secondes. Si persistant, contacte le support.
502Erreur d'un service sous-jacentReessaie avec un backoff. Le service redemarre automatiquement.

10SDK & integrations

Bien que l'API soit accessible directement via HTTP, voici quelques patterns d'integration recommandes :

Python — avec retry automatique

import httpx
from tenacity import retry, stop_after_attempt, wait_exponential

@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=2, max=10))
def ask_aura(message: str, api_key: str, session_id: str = None) -> str:
    payload = {"message": message}
    if session_id:
        payload["session_id"] = session_id

    r = httpx.post(
        "https://philbuilder-ai.fastapicloud.dev/api/v1/causerie",
        headers={"X-API-Key": api_key},
        json=payload,
        timeout=60.0,
    )
    r.raise_for_status()
    return r.json()["reponse"]

Node.js — avec streaming OpenAI

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://philbuilder-ai.fastapicloud.dev/v1",
  apiKey: process.env.AURA_API_KEY,
});

const stream = await client.chat.completions.create({
  model: "aura",
  messages: [{ role: "user", content: "Raconte-moi une histoire" }],
  stream: true,
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || "");
}