THE AURA WORKSPACE

Developer API

The Aura trading API for Python strategies, scoped personal keys, and server-authoritative risk controls.

Built for your code.

Create a personal read or trade key in settings. API orders use simulated trading capital. Orders use the same risk engine and minimum-hold policy as the terminal. Keep API keys private and give each integration only the scope it needs.

Manage API keys

Authentication & retries

Send Authorization: Bearer aura_sk_…. Use a unique Idempotency-Key for each POST; reuse that same key and body for a retry. A changed body with a reused key is rejected. Keys expire after up to 90 days and can be revoked.

Endpoints

MethodPathPurpose
GET/api/v1/accountsOwned account state
GET/api/v1/quotesFresh server-side bid/ask
GET/api/v1/candles?symbol=EURUSD&interval=300Candles, seconds per interval
POST/api/v1/ordersMarket, limit, or stop entry
POST/api/v1/closeFull or partial linked close
POST/api/v1/cancelCancel a pending order
POST/api/v1/syncMark an account to current quotes

A Python starting point

import os, uuid, requests

base = "https://aurafunding.cfd/api/v1"
headers = {"Authorization": "Bearer " + os.environ["AURA_API_KEY"]}

accounts = requests.get(base + "/accounts", headers=headers, timeout=10)
accounts.raise_for_status()
account_id = accounts.json()["accounts"][0]["id"]

# Fetch quotes and calculate an appropriate protective stop first.
quotes = requests.get(base + "/quotes", headers=headers, timeout=10).json()
quote = quotes["quotes"]["EURUSD"]

order = {"accountId": account_id, "symbol": "EURUSD",
         "side": "buy", "kind": "market", "quantity": 1000,
         "stop": round(quote["ask"] * 0.998, 5), "take": None}
request_key = str(uuid.uuid4())  # preserve this key for retries
result = requests.post(base + "/orders", json=order,
    headers={**headers, "Idempotency-Key": request_key}, timeout=10)
result.raise_for_status()
print(result.json())
Download the small Python client →

Limits and errors

Only NAS100, US500, EURUSD, GBPUSD, and XAUUSD are valid. Every entry requires a protective stop. API limits are 120 requests per minute per key and 240 per user. A 400 response contains a validation error; 401 means an invalid key; 403 means insufficient scope; 429 means back off. Do not retry a rejected trading condition without reviewing it.

Copy settings apply to API entries and linked closes. A discretionary close under 5 seconds is rejected. Original protective stops and forced risk exits remain exempt. A separate account-protection service checks active accounts. New orders pause if that service is unavailable.