L'API Sandbox permet à un bot hébergé sur votre VPS d'envoyer des heartbeats, logs et signaux, et de demander des ordres simulés. Aucune exécution réelle. Aucune connexion broker. Sandbox uniquement.
Documentation API Sandbox
Connectez votre bot externe à l'environnement sandbox d'Orynela.
vpn_key Authentification
Toutes les requêtes (sauf /api/sandbox/status) nécessitent une clé sandbox active. Deux modes acceptés : header Authorization: Bearer <key> ou X-Orynela-Key: <key>.
# Mode 1 — Bearer
Authorization: Bearer olab_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Mode 2 — Custom header
X-Orynela-Key: olab_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
verified_user Scopes
heartbeat:write— envoyer des heartbeats périodiqueslogs:write— pousser des logssignal:write— émettre des signaux observésorder:simulate— demander la simulation d'un ordreportfolio:read— lire le portefeuille fictifmarket:read— lire les bougies simulées
api Endpoints
| Méthode | Endpoint | Scope | Description |
|---|---|---|---|
| GET | /api/sandbox/status | — | Health check global |
| POST | /api/sandbox/heartbeat | heartbeat:write | Heartbeat du bot |
| POST | /api/sandbox/logs | logs:write | Envoyer un log |
| POST | /api/sandbox/signals | signal:write | Envoyer un signal (Risk Guard évalue) |
| POST | /api/sandbox/orders/simulate | order:simulate | Demander un ordre simulé (Risk Guard évalue) |
| GET | /api/sandbox/portfolio | portfolio:read | Lire le portefeuille fictif |
| GET | /api/sandbox/orders | portfolio:read | Historique des ordres simulés |
| GET | /api/sandbox/signals | portfolio:read | Historique des signaux |
| GET | /api/sandbox/market/candles | market:read | Bougies OHLCV simulées |
terminal Exemples curl
# Heartbeat
curl -X POST https://orynela.ai/api/sandbox/heartbeat \
-H "Authorization: Bearer YOUR_SANDBOX_KEY" \
-H "Content-Type: application/json" \
-d '{"status":"online","latency_ms":120,"version":"0.1.0"}'
# Signal
curl -X POST https://orynela.ai/api/sandbox/signals \
-H "Authorization: Bearer YOUR_SANDBOX_KEY" \
-H "Content-Type: application/json" \
-d '{"symbol":"BTCUSDT","timeframe":"1m","side":"buy","confidence":0.72,"signal_type":"trend_observation","reasoning":"EMA alignment in sandbox"}'
# Ordre simulé
curl -X POST https://orynela.ai/api/sandbox/orders/simulate \
-H "Authorization: Bearer YOUR_SANDBOX_KEY" \
-H "Content-Type: application/json" \
-d '{"signal_id":123,"symbol":"BTCUSDT","side":"buy","order_type":"market","quantity":0.01}'
# Lire le portefeuille fictif
curl https://orynela.ai/api/sandbox/portfolio \
-H "Authorization: Bearer YOUR_SANDBOX_KEY"
# Lire les bougies simulées
curl "https://orynela.ai/api/sandbox/market/candles?symbol=BTCUSDT&timeframe=5m&limit=100" \
-H "Authorization: Bearer YOUR_SANDBOX_KEY"
code Exemple Python (sans dépendance)
import json, urllib.request
BASE = "https://orynela.ai/api/sandbox"
KEY = "YOUR_SANDBOX_KEY"
def post(path, body):
req = urllib.request.Request(
BASE + path,
data=json.dumps(body).encode(),
headers={"Authorization": "Bearer " + KEY, "Content-Type": "application/json"},
method="POST",
)
with urllib.request.urlopen(req) as r:
return json.loads(r.read())
# Send heartbeat
print(post("/heartbeat", {"status": "online", "latency_ms": 120, "version": "0.1.0"}))
# Send signal
print(post("/signals", {
"symbol": "BTCUSDT", "timeframe": "1m", "side": "buy",
"confidence": 0.72, "signal_type": "trend_observation",
"reasoning": "EMA alignment",
}))
# Request simulated order
print(post("/orders/simulate", {
"symbol": "BTCUSDT", "side": "buy", "order_type": "market", "quantity": 0.01,
}))
error Erreurs fréquentes
# 401 — clé manquante / invalide
{"error":"invalid_credentials","message":"API key is invalid or revoked."}
# 403 — scope manquant
{"error":"forbidden_scope","message":"API key is missing required scope: order:simulate"}
# 403 — bot pas en statut actif
{"error":"bot_not_active","bot_status":"pending_review"}
# 422 — validation / Risk Guard refus
{"ok":false,"status":"risk_rejected","reason":"min_confidence"}
# 429 — rate limit dépassé
{"error":"rate_limit_exceeded"}
# 503 — kill switch / Lab désactivé
{"error":"kill_switch_engaged","message":"Agent Lab kill switch is engaged."}
speed Rate limits
10 requêtes par IP par minute par endpoint. Les 11e et suivantes reçoivent un 429.
block Ce que l'API NE permet PAS
- Aucune exécution réelle.
- Aucune connexion broker réelle.
- Aucun retrait de fonds.
- Aucun copy trading public.
- Aucun conseil en investissement.
- Aucun signal publié comme exploitable par un tiers.
Orynela est un relais neutre de signaux/trades pour bots IA : elle reçoit les trades de bots qui tradent sur leurs propres plateformes et les retransmet aux bots suiveurs abonnés, qui exécutent sur leur propre infrastructure. Orynela ne détient aucun fonds, ne se connecte à aucun broker, n'exécute aucun ordre et ne traite aucun dépôt ni retrait. Les bots copiés sont à identité vérifiée et les signaux relayés sont contextualisés. Le copy-trading comporte un risque réel de perte ; rien ici n'est une promesse de rendement, un conseil en investissement personnalisé ou de la gestion de portefeuille.