API Risultati per le società
Calendario, risultati, classifiche e risultati in diretta delle squadre della tua società, in formato JSON. Versione 1.
Accesso e chiavi
Ogni richiesta deve contenere la chiave dell'abbonamento nell'header X-Api-Key. La chiave dà accesso solo ai dati delle gare in cui gioca una squadra della tua società.
curl -H "X-Api-Key: fpv_..." https://api-societa.portalefipav.net/v1/gare
Esistono due tipi di chiave:
| Tipo | Uso |
|---|---|
| server | Per chiamate dal server del tuo sito o della tua app. La chiave è segreta: non va mai inserita in una pagina web o in un'app distribuita. Le richieste provenienti da un browser vengono rifiutate. |
| sito | Per chiamate direttamente dal JavaScript di una pagina web. Funziona solo dai domini indicati al momento dell'attivazione (es. www.lamiasocieta.it) e ha limiti più bassi. |
Se una chiave viene smarrita o diffusa per errore, contattaci: la revochiamo e te ne consegniamo una nuova. La revoca ha effetto entro un minuto.
Limiti e aggiornamento dei dati
- Il numero di richieste al minuto e al giorno dipende dal piano sottoscritto. Oltre il limite la risposta è
429; per il limite al minuto l'headerRetry-Afterindica dopo quanti secondi riprovare. - I dati sono quelli pubblicati dai comitati FIPAV su PortaleFIPAV. Le risposte possono avere fino a: 10 secondi di ritardo per il live, 1 minuto per le gare, 5 minuti per le classifiche, 10 minuti per le squadre. Non serve interrogare l'API più spesso di così.
- Tutte le date sono in formato ISO 8601 con fuso orario italiano, ad esempio
2026-10-25T18:00:00+01:00. - Il parametro
stagione(es.20262027) vale per tutti gli endpoint; se manca si usa la stagione in corso (da luglio a giugno).
Errori
In caso di errore la risposta ha un codice HTTP diverso da 200 e questo formato:
{ "error": { "code": "abbonamento_scaduto", "message": "L'abbonamento e' scaduto." } }
| HTTP | code | Significato |
|---|---|---|
| 400 | stagione_non_valida, data_non_valida, intervallo_non_valido, squadra_non_valida, id_non_valido | Parametro non valido. |
| 401 | chiave_mancante, chiave_non_valida | Chiave assente, errata o revocata. |
| 403 | abbonamento_non_attivo, abbonamento_non_iniziato, abbonamento_scaduto | L'abbonamento non consente l'accesso. |
| 403 | chiave_server_da_browser, dominio_non_consentito | Chiave usata nel posto sbagliato (vedi tipi di chiave). |
| 403 | live_non_incluso | Il piano non comprende i risultati in diretta. |
| 404 | endpoint_inesistente, gara_non_trovata, girone_non_trovato | Risorsa inesistente o non relativa alla tua società. |
| 429 | limite_minuto, limite_giorno | Superato il limite di richieste del piano. |
Endpoint
Tutte le risposte hanno la forma { "data": ..., "meta": { "societa_id", "stagione", "generato" } }.
GET/v1/societa
Dati della società e dell'abbonamento.
{ "data": { "id": 3608, "nome": "NEW VOLLEY CARTIGLIANO", "codice_societa": "060290310", "logo": "https://...",
"abbonamento": { "piano": "Live", "live": true, "scadenza": "2027-06-30" } }, "meta": { ... } }
GET/v1/squadre
Squadre della società nella stagione, con i gironi in cui giocano. Parametro facoltativo: squadra.
{ "data": [
{ "id": 203643, "nome": "NEW VOLLEY CARTIGLIANO", "gironi": [
{ "id": 92973, "nome": "VICENZA CUP MASCHILE GIRONE B", "campionato": "VICENZA CUP MASCHILE", "girone": "B", "codice": "VCMB" } ] }
], "meta": { ... } }
GET/v1/gare
Gare delle squadre della società, in ordine di data. Parametri facoltativi:
| Parametro | Formato | Descrizione |
|---|---|---|
dal | AAAAMMGG | Gare da questa data compresa. |
al | AAAAMMGG | Gare fino a questa data compresa (intervallo massimo 400 giorni). |
squadra | id | Solo le gare di questa squadra. |
{ "data": [ {
"id": 131628795, "numero": "437", "giornata": 1,
"girone": { "id": 92973, "nome": "VICENZA CUP MASCHILE GIRONE B", "campionato": "VICENZA CUP MASCHILE", "girone": "B", "codice": "VCMB" },
"data_ora": "2026-09-19T19:30:00+02:00", "data_ora_limite": "2026-09-19T22:00:00+02:00",
"impianto": { "nome": "PAL. LUNGOBRENTA", "indirizzo": "Viale Lungobrenta", "localita": "", "comune": "CARTIGLIANO", "provincia": "VI", "lat": 45.7155875, "lng": 11.6917774 },
"casa": { "squadra_id": 203643, "nome": "NEW VOLLEY CARTIGLIANO", "societa_id": 3608, "societa_nome": "NEW VOLLEY CARTIGLIANO", "codice_societa": "060290310", "logo": "https://...", "della_societa": true },
"ospite": { "squadra_id": 203528, "nome": "US CASTELLO ASD", "societa_id": 563, "societa_nome": "U.S. CASTELLO ASD", "codice_societa": "060290217", "logo": "https://...", "della_societa": false },
"stato": "omologata", "giocata": true, "risultato_ufficiale": true,
"set_casa": 1, "set_ospite": 3, "parziali": [[25,17],[16,25],[19,25],[23,25]]
} ], "meta": { ... } }
stato: da_disputare, risultato_ufficioso, non_disputata, documenti_mancanti, non_omologata, omologata, rinviata, sospesa.
risultato_ufficiale è true quando la gara è omologata; prima il risultato è quello comunicato dalle società e può cambiare.
Per le gare non giocate set_casa e set_ospite sono null. impianto e logo possono essere null.
GET/v1/gare/{id}
Una singola gara, nello stesso formato.
GET/v1/classifiche
Classifiche di tutti i gironi in cui gioca la società nella stagione. Parametro facoltativo: squadra.
{ "data": [ {
"girone": { "id": 92973, "nome": "...", "campionato": "...", "girone": "B", "codice": "VCMB" },
"squadre": [
{ "posizione": 1, "squadra_id": 203528, "nome": "US CASTELLO ASD", "societa_id": 563, "societa_nome": "U.S. CASTELLO ASD", "logo": "https://...",
"della_societa": false, "punti": 9, "giocate": 3, "vinte": 3, "perse": 0, "set_vinti": 9, "set_persi": 2,
"quoziente_set": 4.5, "punti_fatti": 260, "punti_subiti": 210, "quoziente_punti": 1.2381, "penalita": 0, "zona": "promozione" }
] } ], "meta": { ... } }
zona: promozione, playoff, playout, retrocessione oppure null. I quozienti sono null quando il divisore è zero.
GET/v1/classifiche/{id}
Classifica di un girone (l'id è quello di girone.id), solo se la società vi partecipa.
GET/v1/live
Gare delle squadre della società in corso in questo momento con il referto elettronico, più quelle terminate negli ultimi 30 minuti. Solo con i piani che comprendono il live.
{ "data": [ {
"id": 131630070, "girone_id": 93045, "numero": "88", "stato": "in_corso", "risultato_comunicato": false,
"casa": { "squadra_id": 204762, "nome": "...", "della_societa": true },
"ospite": { "squadra_id": 204111, "nome": "...", "della_societa": false },
"set_casa": 1, "set_ospite": 1,
"inizio": "2026-10-25T20:47:12+01:00", "fine": null, "ultimo_aggiornamento": "2026-10-25T21:13:58+01:00",
"set": [
{ "n": 1, "punti_casa": 25, "punti_ospite": 21, "inizio": "...", "fine": "...", "golden_set": false },
{ "n": 3, "punti_casa": 14, "punti_ospite": 11, "inizio": "...", "fine": null, "golden_set": false } ],
"set_corrente": 3
} ], "meta": { ... } }
stato: in_corso o terminata. "fine": null indica il set in corso. Si consiglia di interrogare questo endpoint non più di una volta ogni 10-15 secondi.
Esempi
PHP (chiave server)
$ch = curl_init('https://api-societa.portalefipav.net/v1/gare?dal=20261001&al=20261031');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Api-Key: ' . getenv('FIPAV_API_KEY')]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$gare = json_decode(curl_exec($ch), true)['data'];
JavaScript in una pagina web (chiave sito)
const risposta = await fetch('https://api-societa.portalefipav.net/v1/classifiche', {
headers: { 'X-Api-Key': 'fpv_...' }
});
const { data } = await risposta.json();