Sviluppatori

API di Fanta-Trade

Collega il tuo programma o il tuo bot al tuo portafoglio virtuale: compra e vendi, inserisci ordini e stop loss, leggi portafoglio e movimenti. Stesse regole del gioco, nessun denaro reale.

1. Crea una chiave

Accedi e vai in Profilo › API: dai un nome alla chiave e copiala subito, perché viene mostrata una sola volta. Puoi averne fino a 3 e revocarle in ogni momento.

2. Autenticazione

Invia la chiave in ogni richiesta con l'intestazione Authorization (oppure X-API-Key). Le risposte sono in JSON: i dati in «data», gli errori in «error» con un codice e un messaggio.

curl -H "Authorization: Bearer ft_la_tua_chiave" https://www.fanta-trade.eu/api/v1/account

Indirizzo di base: https://www.fanta-trade.eu/api/v1 · importi e prezzi in euro, date in formato ISO 8601

3. Endpoint

GET /api/v1/account

Il tuo conto: liquidità, valore investito, valore totale, rendimento dall'inizio, numero di posizioni e di ordini in attesa.

Esempio di risposta
{"data":{"id":42,"name":"Marco Rossi","currency":"EUR","cash":22226.49,"invested":77870.2,"total":100096.69,"performance_pct":0.1,"positions":8,"open_orders":2,"starting_capital":100000.0}}

GET /api/v1/portfolio

Le posizioni aperte con quantità, prezzo medio di carico, ultimo prezzo, valore, guadagno o perdita e peso sul portafoglio.

Esempio di risposta
{"data":{"currency":"EUR","cash":22226.49,"total":100096.69,"positions":[{"symbol":"ENI.MI","name":"Eni","quantity":400.0,"avg_price":15.12,"price":15.48,"currency":"EUR","value":6192.0,"pl":144.0,"pl_pct":2.38,"weight_pct":6.19}]}}

GET /api/v1/transactions?limit=50&offset=0

I tuoi movimenti, dal più recente (al massimo 100 per richiesta).

Esempio di risposta
{"data":{"total":37,"limit":50,"offset":0,"items":[{"id":901,"date":"2026-10-14T10:02:11+02:00","symbol":"ENI.MI","name":"Eni","side":"buy","quantity":100.0,"price":15.48,"currency":"EUR","amount":1548.0,"realized_pl":null,"cash_after":22226.49}]}}

POST /api/v1/trades

Compra o vendi al prezzo attuale. Campi: symbol (formato Yahoo, es. ENI.MI, AAPL), side (buy o sell), quantity.

curl -X POST -H "Authorization: Bearer ft_la_tua_chiave" -H "Content-Type: application/json" \
  -d '{"symbol":"ENI.MI","side":"buy","quantity":100}' https://www.fanta-trade.eu/api/v1/trades
Esempio di risposta
{"data":{"message":"…","transaction":{"id":902,"symbol":"ENI.MI","side":"buy","quantity":100.0,"price":15.48,"amount":1548.0}}}

GET /api/v1/orders

Gli ordini in attesa. type vale buy_limit (compra se scende), buy_stop (compra se sale), stop_loss (vendi se scende) o take_profit (vendi se sale).

Esempio di risposta
{"data":[{"id":55,"symbol":"ENI.MI","side":"sell","type":"stop_loss","quantity":100.0,"price":14.5,"currency":"EUR","status":"open","created_at":"…","expires_at":"…"}]}

POST /api/v1/orders

Inserisce un ordine «compra a / vendi a»: si esegue quando il prezzo raggiunge price (in euro). Una vendita sotto il prezzo attuale è uno stop loss, sopra è una presa di profitto. expiry: 1w, 1m (predefinito) o 3m.

curl -X POST -H "Authorization: Bearer ft_la_tua_chiave" -H "Content-Type: application/json" \
  -d '{"symbol":"ENI.MI","side":"sell","quantity":100,"price":14.50,"expiry":"1m"}' https://www.fanta-trade.eu/api/v1/orders
Esempio di risposta
{"data":{"id":56,"symbol":"ENI.MI","side":"sell","type":"stop_loss","quantity":100.0,"price":14.5,"status":"open"}}

DELETE /api/v1/orders/{id}

Annulla un ordine in attesa.

curl -X DELETE -H "Authorization: Bearer ft_la_tua_chiave" https://www.fanta-trade.eu/api/v1/orders/56
Esempio di risposta
{"data":{"id":56,"status":"cancelled"}}

4. Errori

HTTPCodiceQuando
400invalid_symbol · invalid_side · invalid_quantity · invalid_priceCampi mancanti o non validi.
401unauthorizedChiave mancante, sbagliata o revocata.
404not_foundEndpoint inesistente, oppure ordine non trovato o già chiuso.
422trade_rejected · order_rejectedL'operazione non rispetta le regole del gioco (liquidità, limiti, prezzo non disponibile): il messaggio spiega il motivo.
429rate_limited · trade_limit · symbol_limitSuperato uno dei limiti qui sotto. L'intestazione Retry-After indica quanti secondi aspettare.

5. Limiti e uso corretto

  • 30 richieste al minuto e 1.000 al giorno per chiave (le intestazioni X-RateLimit-* mostrano quante ne restano).
  • 50 operazioni e ordini al giorno, contando anche quelli rifiutati.
  • Al massimo 10 titoli diversi al giorno che non hai già in portafoglio su cui comprare, vendere o inserire ordini; sui titoli che possiedi puoi operare liberamente.
  • Valgono tutte le regole del gioco: liquidità disponibile, peso massimo di un titolo nel portafoglio, limite sul volume giornaliero e al massimo 50 ordini in attesa.
  • Le API danno accesso solo al tuo conto. Non forniscono quotazioni, ricerche o storici: i prezzi compaiono solo per i titoli che possiedi e sono gli ultimi registrati da Fanta-Trade, che possono essere ritardati.
  • È vietato usare le API per raccogliere o ridistribuire dati di mercato: in caso di abuso le chiavi vengono revocate e l'account può essere sospeso.