Connexion
Serveur
Pseudo
Mot de Passe

Mot de passe oublié ?

API des exports publics

Chaque nuit, Fourmizzz publie pour chaque serveur deux fichiers JSON : la liste des joueurs et la liste des alliances. Ils ne contiennent que des données déjà publiques en jeu (classements, fiche d'alliance, diplomatie visible) et sont destinés aux joueurs et aux outils communautaires : cartes, suivi de progression, outils d'alliance.

L'API est en lecture seule, gratuite et sans authentification.

Le contrat complet au format OpenAPI 3, importable dans Swagger Editor, Postman ou un générateur de client, est disponible ici : api-exports.fr.openapi.yaml.

Adresse de l'API

L'API se sert sur l'adresse du serveur dont on veut les données :

Serveur Adresse de base
S1 http://s1.fourmizzz.fr
S2 http://s2.fourmizzz.fr
S3 http://s3.fourmizzz.fr
S4 http://s4.fourmizzz.fr
S5 https://s5.fourmizzz.fr
Test https://test.fourmizzz.fr
Serveur anglais http://s1.antzzz.org

Respecter le protocole indiqué : S1 à S4 et le serveur anglais ne sont servis qu'en HTTP, pas en HTTPS.

Chaque serveur a ses propres exports. Le domaine d'accueil (www.fourmizzz.fr, www.antzzz.org) et tout hôte qui n'est pas un serveur ouvert répondent 404.

Routes

Requête Réponse
GET /api/exports/ Liste des versions disponibles, par type d'export
GET /api/exports/players/ Dernière version du fichier des joueurs
GET /api/exports/players/?version=AAAAMMJJHHmm Fichier des joueurs de cette version
GET /api/exports/alliances/ Dernière version du fichier des alliances
GET /api/exports/alliances/?version=AAAAMMJJHHmm Fichier des alliances de cette version

Le / final fait partie de l'adresse : sans lui, le serveur répond d'abord une redirection 301 vers l'adresse avec slash. Mieux vaut l'écrire directement pour économiser un aller-retour.

Versions et historique

Une version est la date et l'heure UTC du passage du job d'export, au format AAAAMMJJHHmm (année, mois, jour, heure, minutes), par exemple 202609292200.

Liste des versions

GET /api/exports/ renvoie, pour chaque type d'export, les versions disponibles de la plus récente à la plus ancienne :

{
  "players": ["202609292200", "202609282200"],
  "alliances": ["202609292200", "202609282200"]
}

Les deux types sont générés au même passage du job et ont donc normalement les mêmes versions. Ils sont listés séparément car un passage peut échouer sur un seul type. Les tableaux sont vides ([]) si aucun export n'existe encore.

Paramètre version

La date, l'heure et les minutes doivent exister : 202602300000 (30 février), 202609292400 ou 202609292260 répondent 400, tout comme un format différent (2026-09-29, 2026092922) ou un tableau (version[]=…).

En-têtes de réponse

Codes de réponse

Les erreurs sont toujours un objet JSON {"error": "<message>"}, jamais une page HTML. Le message est en français et n'est pas traduit : un outil doit se fier au code HTTP, pas au texte.

Code Cas
200 Fichier ou liste des versions
301 Adresse sans / final : redirection vers l'adresse avec slash
400 Paramètre version malformé ou date/heure impossible
404 Aucun export pour cette version (ou aucun export de ce type avec latest) ; hôte qui n'est pas un serveur ouvert
502 Stockage des exports injoignable (incident côté serveur, déjà signalé à l'équipe)
503 Exports non configurés sur cet hébergement

Fichier des joueurs

Un tableau d'objets, un par joueur, trié par id :

[
  {
    "id": 123,
    "pseudo": "Fourmi",
    "alliance": "TAG",
    "masterPlayerId": 456,
    "x": 10,
    "y": -4,
    "field": 98765,
    "grade": "Chef",
    "buildingScore": 1500,
    "technologyScore": 700,
    "trophyScore": 1234,
    "onHoliday": false,
    "isBanned": false
  }
]
Champ Type Signification
id entier Identifiant du joueur. Unique dans le serveur seulement : deux serveurs ont chacun leur joueur 123
pseudo chaîne Pseudo affiché en jeu
alliance chaîne ou null Tag de l'alliance, null si le joueur n'en a pas
masterPlayerId entier ou null id du joueur qui colonise ce joueur, null s'il n'est pas colonisé
x, y entiers Coordonnées sur la carte
field entier Terrain de chasse (cm²)
grade chaîne ou null Nom du grade du joueur dans son alliance, null sans alliance ou sans grade
buildingScore entier Score fourmilière (bâtiments)
technologyScore entier Score technologie
trophyScore entier Score de trophées (classement Elo), 0 si le joueur n'est pas classé
onHoliday booléen Mode vacances actif au moment de l'export
isBanned booléen Joueur banni au moment de l'export

Fichier des alliances

Un tableau d'objets, un par alliance, trié par tag :

[
  {
    "tag": "TAG",
    "name": "Les Fourmis",
    "playersCount": 12,
    "totalField": 5000000,
    "totalBuildingScore": 300,
    "totalTechnologyScore": 200,
    "totalTrophyScore": 9000,
    "diplomacy": {
      "pacts": [{ "tag": "AMI", "name": "Pacte de non-agression", "description": "…" }],
      "wars": ["ENN"]
    }
  }
]
Champ Type Signification
tag chaîne Tag de l'alliance
name chaîne Nom de l'alliance
playersCount entier Nombre de membres
totalField entier Terrain de chasse cumulé des membres
totalBuildingScore entier Score fourmilière cumulé
totalTechnologyScore entier Score technologie cumulé
totalTrophyScore entier Somme (pas la moyenne) des scores de trophées des membres, 0 si l'alliance n'est pas classée
diplomacy.pacts tableau Pactes en cours (voir ci-dessous). Un pacte figure dans les deux alliances concernées. Ordre : celui que chaque alliance a fixé pour ses pactes, comme sur sa page
diplomacy.wars tableau de tags Alliances auxquelles cette alliance a déclaré la guerre (sens affiché sur sa page publique) ; les alliances disparues sont écartées. Ordre alphabétique, sans tenir compte de la casse

Chaque pacte est un objet :

Champ Type Signification
tag chaîne Tag de l'alliance partenaire
name chaîne Nom du pacte (pas celui de l'alliance partenaire)
description chaîne Description du pacte

Données non exportées

Aucune donnée privée n'est exportée : ni e-mail, ni adresse IP, ni ressources, ni armée, ni date de dernière connexion, ni description ou règles d'alliance.

Exemples

Lister les versions du serveur S1, en-têtes compris :

curl -i http://s1.fourmizzz.fr/api/exports/

Télécharger le fichier des alliances d'une version précise :

curl -o alliances.json "http://s1.fourmizzz.fr/api/exports/alliances/?version=202609292200"

Charger la dernière version des joueurs en Python, bibliothèque standard uniquement :

import json
import urllib.request

with urllib.request.urlopen("http://s1.fourmizzz.fr/api/exports/players/") as reponse:
    joueurs = json.load(reponse)

sans_alliance = [j["pseudo"] for j in joueurs if j["alliance"] is None]
print(len(joueurs), "joueurs, dont", len(sans_alliance), "sans alliance")

Bonnes pratiques