Référence API REST
L'ensemble des services de la passerelle Boundry est disponible au travers d'une API REST HTTPS haute performance. Les mutations sont protégées contre les rejeux et respectent les standards d'interopérabilité cloud.
Informations Générales
- Point d'Entrée Principal :
https://api.boundry.cloud - Encodage & Format :
application/json(UTF-8 strict) - Authentification : Jeton Bearer d'organisation ou en-tête
X-Api-Key:
Authorization: Bearer sk_org_votre_cle_ici
X-Api-Key: sk_org_votre_cle_ici
Content-Type: application/json
1. Proxy LLM Compatible OpenAI (/v1/chat/completions)
Permet de relayer vos requêtes de modèles au travers du pare-feu d'exécution sans modifier le code de vos applications. Compatible à 100% avec les SDKs officiels OpenAI et les frameworks d'agents.
Endpoint
POST /v1/chat/completions
Paramètres de Requête (JSON Body)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
model | string | OUI | Modèle ciblé (ex: gpt-4o, gpt-4-turbo, claude-3-5-sonnet). |
messages | array<object> | OUI | Liste des messages contenant role (system, user, assistant, tool) et content. |
temperature | number | Optionnel | Température d'échantillonnage (défaut: 1.0). |
max_tokens | integer | Optionnel | Nombre maximal de jetons générés. |
stream | boolean | Optionnel | Mode streaming de jetons en temps réel (défaut: false). |
Exemple de Requête
curl -X POST "https://api.boundry.cloud/v1/chat/completions" \
-H "Authorization: Bearer sk_org_votre_cle_ici" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "Assistant SecOps."},
{"role": "user", "content": "Analyse les journaux d’événements récents."}
]
}'
Réponse 200 OK (Format OpenAI Conforme)
{
"id": "chatcmpl-boundry-7f91a02b3c4d5e",
"object": "chat.completion",
"created": 1729605600,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "[Boundry Shield Verified] Analysis of 2 message(s) completed successfully. Security compliance: Passed."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 18,
"total_tokens": 46
}
}
Réponse d'Interception 400 Bad Request (Tentative d'Attaque)
Lorsqu'une tentative d'injection de prompt directe ou une adresse SSRF est détectée, la passerelle bloque la requête et retourne un format d'erreur conforme aux spécifications OpenAI :
{
"error": {
"message": "Blocked by Boundry AI Firewall: Prompt injection detected (bypass_ignore_instructions_en).",
"type": "boundry_security_violation",
"param": "messages",
"code": "prompt_injection_detected"
}
}
2. Ingestion & Évaluation d'Outil (/events)
C'est le point de terminaison sollicité de manière synchrone ou asynchrone par les Sensor SDKs lors de l'exécution d'un outil d'agent.
Endpoint
POST /events (alias: /ingest/event)
Corps de la Requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
agent_id | string | OUI | Identifiant logique de l'agent (ex: billing-bot-01). |
tool_name | string | OUI | Nom de la fonction ou outil exécuté (ex: send_wire_transfer). |
tool_input | string | Optionnel | Arguments transmis à l'outil sous forme textuelle ou JSON. |
tool_output | string | Optionnel | Retour de l'outil pour analyse anti-injection indirecte. |
event_type | string | OUI | Phase du cycle : tool_start, tool_end, ou tool_error. |
framework | string | Optionnel | Framework de l'agent : langchain, crewai, autogpt, generic. |
run_id | string | Optionnel | Identifiant de corrélation pour la traçabilité de session. |
Exemple de Requête (tool_start)
curl -X POST "https://api.boundry.cloud/events" \
-H "X-Api-Key: sk_org_votre_cle_ici" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "finance-agent-01",
"tool_name": "database_query",
"tool_input": "SELECT * FROM transactions WHERE amount > 5000",
"event_type": "tool_start",
"framework": "langchain",
"run_id": "run_982b14e"
}'
Réponses Possibles
Action Validée (200 OK)
{
"status": "approved",
"redacted_input": "SELECT * FROM transactions WHERE amount > 5000"
}
Action Suspendue en Quarantaine (200 OK avec HITL)
{
"status": "quarantine",
"quarantine_id": "quar_89ab31f4e"
}
Action Bloquée Définitivement
{
"status": "blocked",
"reason": "SSRF Protection: Blocked 1 target(s). Cloud instance metadata service '169.254.169.254' is strictly blocked."
}
3. Gestion de la Quarantaine (Human-in-the-Loop)
Consultation du Statut d'une Action (GET /api/quarantine/{id}/status)
Les Sensors en attente interrogent cet endpoint pour savoir si l'opérateur a débloqué l'action :
GET /api/quarantine/{quarantine_id}/status
curl -X GET "https://api.boundry.cloud/api/quarantine/quar_89ab31f4e/status" \
-H "X-Api-Key: sk_org_votre_cle_ici"
{
"status": "approved",
"resolved_by": "secops-lead@entreprise.com",
"resolved_at": "2026-10-22T14:15:30Z"
}
4. Catalogue des Modèles Supportés (GET /v1/models)
GET /v1/models
curl -X GET "https://api.boundry.cloud/v1/models" \
-H "Authorization: Bearer sk_org_votre_cle_ici"
{
"object": "list",
"data": [
{"id": "gpt-4o", "object": "model", "created": 1715367049, "owned_by": "boundry-gateway"},
{"id": "gpt-4-turbo", "object": "model", "created": 1712361441, "owned_by": "boundry-gateway"},
{"id": "claude-3-5-sonnet", "object": "model", "created": 1718841600, "owned_by": "boundry-gateway"},
{"id": "mistral-large", "object": "model", "created": 1708905600, "owned_by": "boundry-gateway"}
]
}
5. Synthèse des Codes HTTP
| Code HTTP | Description Technique | Action Recommandée |
|---|---|---|
200 OK | Requête évaluée et autorisée avec succès. | Poursuivre le traitement normal. |
400 Bad Request | Injection de prompt, tentative SSRF ou payload invalide. | Consulter le message d'erreur et corriger l'instruction. |
401 Unauthorized | Clé d'API absente, révoquée ou malformée. | Vérifier la clé sk_org_... dans la console Boundry. |
403 Forbidden | Action interdite par une règle stricte du pare-feu. | Vérifier les permissions de l'outil et les plafonds configurés. |
404 Not Found | Identifiant de ressource (agent, quarantaine) inconnu. | Contrôler l'identifiant transmis. |
429 Too Many Requests | Quota de requêtes par minute ou par organisation dépassé. | Répartir les requêtes ou augmenter les limites de débit. |
500 Internal Error | Erreur serveur de passerelle. | Consulter la page d'état de service. |