API Reference

Fundraising Expert API

Integra l'AI specializzata nel fundraising direttamente nei tuoi strumenti, CRM, workflow e applicazioni. REST API semplice, autenticazione con API key.

Panoramica

L'API di Fundraising Expert ti permette di accedere al motore AI — con fine-tuning specializzato e knowledge base da 6.000+ blocchi — da qualsiasi applicazione esterna.

Base URL:

text
https://fundraisingexpert.eu/api/v1

Tutte le richieste e risposte usano JSON. L'API è stateless — ogni chiamata è indipendente, ma puoi passare la cronologia della conversazione per mantenere il contesto.

Autenticazione

Ogni richiesta deve includere la tua API key nell'header X-API-Key.

http
X-API-Key: fe_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Le API key vengono mostrate una sola volta al momento della creazione. Conservala in modo sicuro — non è recuperabile. Se la perdi, crea una nuova chiave e revoca quella vecchia.

Creare una API key

Vai su Impostazioni → API nella tua dashboard. Puoi avere fino a 5 chiavi attive contemporaneamente.

Prezzi

Le chiamate API sono a consumo, indipendentemente dal piano di abbonamento.

ModelloCosto per chiamataNote
Mistral Large + fine-tuning€0.002Incluso in tutti i piani
Claude Sonnet 4.6 + fine-tuning€0.008Solo piano Pro
Il costo viene addebitato per ogni chiamata completata con successo. Le chiamate che restituiscono errore (4xx, 5xx) non vengono addebitate.

Limiti

  • Piano Free: 150.000 token output/mese (condivisi con la chat web)
  • Piano Pro: Mistral illimitato, Claude 200.000 token/mese
  • Rate limit: 60 richieste/minuto per chiave
  • Dimensione richiesta: max 50KB per payload
  • Cronologia: max 20 messaggi passati per chiamata

Endpoint

POST /api/v1/chat Invia un messaggio all'AI

Parametri richiesta

CampoTipoObbligatorioDescrizione
message string required Il messaggio dell'utente
model string optional mistral-large-latest (default) oppure claude-sonnet-4-20250514
system_prompt string optional System prompt personalizzato. Se omesso, usa il prompt fundraising di default.
history array optional Cronologia conversazione. Array di oggetti {"role": "user"|"assistant", "content": "..."}. Max 20 elementi.

Risposta

json
{
  "ok": true,
  "reply": "La DEM di fine anno dovrebbe iniziare con...",
  "model": "mistral-large-latest"
}

Quickstart

Una chiamata minimale in meno di 30 secondi:

cURL

bash
curl -X POST https://fundraisingexpert.eu/api/v1/chat \
  -H "X-API-Key: fe_live_LA_TUA_CHIAVE" \
  -H "Content-Type: application/json" \
  -d '{"message": "Scrivi una CTA per una donazione di fine anno"}'

Python

python
# pip install requests
import requests

response = requests.post(
    "https://fundraisingexpert.eu/api/v1/chat",
    headers={"X-API-Key": "fe_live_LA_TUA_CHIAVE"},
    json={"message": "Scrivi una CTA per una donazione di fine anno"}
)

data = response.json()
print(data["reply"])

JavaScript / Node.js

javascript
const res = await fetch("https://fundraisingexpert.eu/api/v1/chat", {
  method: "POST",
  headers: {
    "X-API-Key": "fe_live_LA_TUA_CHIAVE",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    message: "Scrivi una CTA per una donazione di fine anno"
  })
});

const data = await res.json();
console.log(data.reply);

Esempi avanzati

Conversazione multi-turno

python
history = []

# Primo messaggio
r1 = requests.post(url, headers=headers, json={
    "message": "Scrivi una DEM per la campagna 5x1000",
    "history": history
}).json()

history.append({"role": "user", "content": "Scrivi una DEM per la campagna 5x1000"})
history.append({"role": "assistant", "content": r1["reply"]})

# Secondo messaggio — l'AI ricorda il contesto
r2 = requests.post(url, headers=headers, json={
    "message": "Rendila più emozionale, aggiungi una storia",
    "history": history
}).json()

print(r2["reply"])

System prompt personalizzato

python
requests.post(url, headers=headers, json={
    "message": "Analizza questa campagna",
    "system_prompt": "Sei un esperto di fundraising per organizzazioni culturali. "
                  "Rispondi sempre in modo formale e cita esempi dal settore culturale.",
    "model": "claude-sonnet-4-20250514"
})

Errori

Codice HTTPErroreCausa
401API key non valida o revocataChiave mancante, errata o revocata
400Campo 'message' obbligatorioBody JSON mancante o campo vuoto
429Limite mensile raggiuntoToken esauriti per il mese corrente
500Errore internoProblema temporaneo — riprova

Tutte le risposte di errore hanno questa struttura:

json
{
  "error": "Descrizione dell'errore"
}