Entwicklung · REST-API

Den MESSAI-Korpus per Skript abfragen

Die versionierte API, /api/v1, ist der stabile Zugang: den Korpus mit 19.000+ Publikationen durchsuchen und durchblättern, eine Publikation abrufen, den Parameterkatalog auflisten – mit einem API-Schlüssel für ein eigenes Tageskontingent. Die fünf Endpunkte, auf denen die Website läuft – Vorhersage, vollständige Suche, Publikationsdatensätze, bayessche Priors und der Chat –, sind unten ebenfalls dokumentiert, jedoch ohne diese Stabilitätszusage. Korpuszahlen, Stand August 2026.

Versionierte API: /api/v1

Jeder v1-Endpunkt funktioniert ohne Schlüssel, mit dem Minutenbudget Ihrer IP-Adresse. Mit einem Schlüssel zählen Aufrufe stattdessen gegen das eigene Tageskontingent Ihres Kontos.

1. Schlüssel erstellen

Melden Sie sich an, öffnen Sie Ihr Profil und erstellen Sie unter API-Schlüssel einen Schlüssel. Der vollständige Schlüssel wird nur einmal angezeigt, beim Erstellen: Kopieren Sie ihn dann. MESSAI speichert nur einen Hash; ein verlorener Schlüssel lässt sich daher nicht wiederherstellen, nur ersetzen. Auf derselben Seite können Sie einen Schlüssel jederzeit widerrufen.

Profil öffnen

2. Bei jedem Aufruf mitsenden

Im Header X-API-Key oder als Authorization: Bearer. Ein widerrufener, abgelaufener oder falsch eingegebener Schlüssel erhält 401; er fällt nie auf anonymen Zugriff zurück.

X-API-Key: sk_free_…
Authorization: Bearer sk_free_…

3. Limits im Blick behalten

Jede Antwort enthält X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset (Sekunden, bis die nächste Anfrage verfügbar ist). Ist das Limit erreicht, antwortet die API mit 429 und Retry-After.

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 997
X-RateLimit-Reset: 86

Limits

Aufrufer Budget Gezählt pro
API-Schlüssel 1.000 Anfragen pro Tag, laufend aufgefüllt (eine alle 86,4 s) Konto: Alle seine Schlüssel teilen sich ein Kontingent
Ohne Schlüssel 60 Anfragen pro Minute, in Schüben von bis zu 120 IP-Adresse
Angemeldet auf www.messai.io 300 Anfragen pro Minute, in Schüben von bis zu 600 Konto

Ein Lesezugriff zählt als eine Anfrage. Auf den Endpunkten der Website zählen aufwendigere Aufrufe mehr: POST /api/ml/predict 10, POST /api/chat 25, jeder andere Schreibzugriff 2. API-Schlüssel gelten nur für /api/v1.

Die Schlüsselverwaltung (GET und POST /api/v1/api-keys, DELETE /api/v1/api-keys/{id}) erfordert eine angemeldete Sitzung, keinen API-Schlüssel: Diese Aufrufe macht Ihre Profilseite.

GET /api/v1/papers

Publikationen suchen und durchblättern

Den Korpus per Text durchsuchen oder durchblättern, gefiltert nach Systemtyp und Erscheinungsjahr. Liefert eine Seite mit Publikationen samt Titel, Autorenangaben, Jahr, Zeitschrift, DOI, Systemtyp, Publikationstyp und Zitationszahl.

Parameter

Abfrageparameter:
  q           string   Volltextabfrage. Weglassen, um den Korpus durchzublättern.
  systemType  string   Einer der 17 primären Systemtypen (MFC, MEC, MES, MDC, …), ohne Beachtung der Groß-/Kleinschreibung. Publikationen, die der Klassifikator nicht zugeordnet hat, passen nie.
  yearStart   integer  Frühestes Erscheinungsjahr, einschließlich.
  yearEnd     integer  Spätestes Erscheinungsjahr, einschließlich.
  sort        string   relevance (mit q die beste Übereinstimmung zuerst), date (neueste zuerst) oder citations. Standard: relevance.
  page        integer  Ab 1. Standard: 1.
  limit       integer  1–100. Standard: 20.

Beispiel

curl -H 'X-API-Key: sk_free_…' \
  'https://www.messai.io/api/v1/papers?q=biochar+anode&systemType=MFC&yearStart=2020&limit=5' \
  | jq '.data.papers[] | {id, title, year, citationCount}'

Hinweise

  • Antwortet mit `{ papers, pagination: { page, limit, total, pages }, searchType }`. Mit `q` trägt jede Publikation einen `relevanceScore`.
  • Aufgelistet werden nur Publikationen, die die Sichtbarkeitsregeln des Korpus erfüllen; jede ID hier lässt sich daher mit GET /api/v1/papers/{id} abrufen.
  • `systemType` ist die Klasse der Taxonomie mit 17 Typen, oder null, wenn der Klassifikator die Publikation nicht zugeordnet hat.
  • `degraded: true` bedeutet, dass der Embedding-Dienst ausgefallen war und die Ergebnisse nur nach Stichwörtern gereiht sind.
GET /api/v1/papers/{id}

Eine Publikation

Eine Publikation per ID: die Felder der Liste, dazu Kennungen (PubMed, arXiv), Schlagwörter, Anwendungsbereiche und die maschinell erzeugte Zusammenfassung.

Parameter

Pfadparameter:
  id  string  ID der Publikation, wie von GET /api/v1/papers geliefert.

Beispiel

curl -H 'X-API-Key: sk_free_…' 'https://www.messai.io/api/v1/papers/<id>' \
  | jq '.data | {title, year, doi, systemType, aiSummary}'

Hinweise

  • Eine durch die Sichtbarkeitsregeln ausgeblendete oder archivierte Publikation antwortet mit 404 `not_found`.
  • Eine ID, die ein zusammengeführtes Duplikat bezeichnet, liefert die verbleibende Publikation; `redirectedFrom` enthält dann die angefragte ID.
  • `aiSummary` ist maschinell aus der Zusammenfassung erzeugt, nicht der Wortlaut der Autorinnen und Autoren.
GET /api/v1/parameters

Der Parameterkatalog

Die Parameter, die MESSAI aus Publikationen extrahiert: Name, kanonischer Slug, Einheit, Kategorie und Beschreibung.

Parameter

Abfrageparameter:
  q         string   Gleicht Slug, Name oder Beschreibung ab.
  category  string   Eine der 18 Kategorien (PERFORMANCE, MATERIALS, …), ohne Beachtung der Groß-/Kleinschreibung.
  page      integer  Ab 1. Standard: 1.
  limit     integer  1–100. Standard: 50.

Beispiel

curl -H 'X-API-Key: sk_free_…' \
  'https://www.messai.io/api/v1/parameters?q=coulombic+efficiency' \
  | jq '.data.parameters[] | {slug, name, unit, category}'

Hinweise

  • Antwortet mit `{ parameters, pagination: { page, limit, total, pages } }`.
  • `slug` ist null bei noch nicht kuratierten Definitionen; den Slug nimmt der Prior-Endpunkt entgegen.

Antworten und Fehler

Jede v1-Antwort ist JSON in einer einheitlichen Hülle. Verzweigen Sie nach error.code; error.message ist für Menschen geschrieben und kann sich ändern.

Erfolg

{
  "data": { "papers": [ … ], "pagination": { … } },
  "error": null
}

Fehler

{
  "data": null,
  "error": {
    "code": "rate_limited",
    "message": "Rate limit reached (apiKey tier). Retry in 86 s."
  }
}
error.code HTTP Bedeutung
invalid_request 400 Ein Parameter fehlt, ist fehlerhaft oder unbekannt; error.details listet die Probleme auf.
unauthorized 401 Nur Schlüsselverwaltung: keine angemeldete Sitzung.
invalid_api_key 401 Der Schlüssel wurde nicht von MESSAI ausgegeben.
api_key_revoked 401 Der Schlüssel wurde im Profil widerrufen.
api_key_expired 401 Der Schlüssel hat das beim Erstellen gewählte Ablaufdatum überschritten.
not_found 404 Keine sichtbare Publikation mit dieser ID (bei der Schlüsselverwaltung: kein Schlüssel von Ihnen).
key_limit_reached 409 Nur Schlüsselverwaltung: Das Konto hat bereits die Höchstzahl aktiver Schlüssel; widerrufen Sie zuerst einen.
rate_limited 429 Das Budget ist aufgebraucht; nach Retry-After Sekunden erneut versuchen.
internal_error 500 Bei uns ist etwas fehlgeschlagen; in Kürze erneut versuchen.
api_keys_unavailable 503 API-Schlüssel sind auf dieser Bereitstellung noch nicht aktiviert; ohne Schlüssel aufrufen.
rate_limiter_unavailable 503 Die Nutzungserfassung ist kurz nicht verfügbar; in Kürze erneut versuchen.
upstream_unavailable 503 Der Schlüssel konnte nicht geprüft werden; in Kürze erneut versuchen.

Stabilitätszusage

  • Innerhalb von v1 kommen nur Ergänzungen hinzu: neue Endpunkte, neue optionale Parameter, neue Antwortfelder. Ignorieren Sie Felder, die Sie nicht kennen.
  • Wird ein Feld oder Parameter entfernt oder umbenannt oder ändert sich seine Bedeutung, erscheint das als /api/v2. v1 antwortet noch mindestens sechs Monate, nachdem v2 auf dieser Seite angekündigt wurde.
  • Unbekannte Abfrageparameter werden mit 400 abgelehnt, damit ein Tippfehler eine Abfrage nie stillschweigend erweitert.
  • Maschinenlesbar: /api/openapi.json (OpenAPI 3.1), erzeugt aus der Validierung der Handler selbst.

Endpunkte der Website (unversioniert)

Auf diesen fünf läuft die MESSAI-Website, und sie ändern sich mit ihr; eine Stabilitätszusage gibt es nicht. Sie nehmen keinen API-Schlüssel entgegen: Aufrufe werden pro IP-Adresse gezählt oder, bei einer angemeldeten Browsersitzung, pro Konto.

POST /api/ml/predict

Leistung vorhersagen

Liefert Leistungsdichte, Stromdichte, Coulomb-Effizienz, Spannung und eine Anreicherungsantwort aus mehreren Blöcken für eine Reaktorkonfiguration. MFC läuft über die vollständige v1-Anreicherung; MEC/MES/MDC/MMRC/MBES/MNRC laufen über ihr jeweils eigenes klassenspezifisches Vorhersagemodell.

Anfragetext

{
  "systemType": "MFC",
  "materials": {
    "anodeMaterial": "carbon-cloth",
    "cathodeMaterial": "platinum-carbon",
    "anodeSurfaceArea": 25,
    "cathodeSurfaceArea": 25
  },
  "conditions": {
    "temperature": 30,
    "ph": 7,
    "pressure": 1,
    "substrateConcentration": 1000,
    "externalResistance": 1000
  },
  "configuration": {
    "reactorVolume": 250,
    "electrodeSpacing": 2,
    "numChambers": 1
  }
}

Beispiel

curl -X POST https://www.messai.io/api/ml/predict \
  -H 'Content-Type: application/json' \
  -d @request.json | jq '.powerOutput'

Hinweise

  • Jeder Anreicherungsblock liefert seinen eigenen `data_status`; fehlende Artefakte werden ehrlich ausgewiesen, statt mit Nullen aufgefüllt zu werden.
  • Hybridmodus optional über den Abfrageparameter `?hybrid=true` oder den Header `x-use-hybrid` aktivieren.
GET /api/papers/{id}

Details zu einer Publikation

Liefert den gespeicherten ResearchPaper-Datensatz zur ID, einschließlich Autorenangaben, Zusammenfassung, DOI, Erscheinungsdatum und primarySystemType.

Parameter

Pfadparameter:
  id  string  ID der Publikation, wie von der Suche geliefert

Beispiel

curl 'https://www.messai.io/api/papers/<id>' \
  | jq '.data | {title, authors, publicationDate, primarySystemType}'

Hinweise

  • Öffentlich; keine Authentifizierung erforderlich.
  • Ein öffentliches Nachschlagen per DOI gibt es nicht: /api/papers nimmt ?search= entgegen und gleicht Titel, Zusammenfassung, Zeitschrift und Systemtyp ab, nicht die DOI. Um eine DOI von Hand zu prüfen, fügen Sie sie unter /research/upload ein (eine Seite, kein Endpunkt).
GET /api/parameters/{slug}/hierarchical-prior

Bayesscher Posterior eines Parameters

Liefert die hierarchische v1-Posterior-Anpassung (PyMC NUTS) für den Slug eines Parameters: gepooltes μ + 95-%-Intervall, Strata je system_type, MCMC-Diagnosewerte (R̂, ESS, Divergenzen).

Parameter

Pfadparameter:
  slug  string  Kanonischer Parameter-Slug (z. B. "power_density_areal")

Beispiel

curl 'https://www.messai.io/api/parameters/power_density_areal/hierarchical-prior' | jq '.pooled'

Hinweise

  • data_status: "populated" / "awaiting_artifact" / "parameter_not_in_priors" / "read_error" – danach verzweigen.
  • Parameter auf der Log-Skala liefern sowohl Werte auf der Fit-Skala (mu_log, tau_log) als auch rücktransformierte Werte (mu, ci95_low, ci95_high).
POST /api/chat

Chat mit Quellenbelegen

LLM-Antworten streamen, gestützt auf ~50 Korpus- und ML-Werkzeuge. Alle Tatsachenaussagen müssen Publikationen zitieren, die über Tool-Aufrufe abgerufen wurden.

Anfragetext

{
  "messages": [{"role": "user", "content": "What anode materials maximise power density for acetate substrates?"}],
  "mode": "general"
}

Beispiel

curl -N -X POST https://www.messai.io/api/chat \
  -H 'Content-Type: application/json' \
  -d @messages.json

Hinweise

  • Streamt als `text/event-stream` (der UI-Nachrichtenstream des AI SDK).
  • mode: "general" | "lab-design"
  • Größere Modelle erfordern eine angemeldete Browsersitzung.

MESSAI in Claude, Cursor oder jedem MCP-Client nutzen

MESSAI ist auch ein Model-Context-Protocol-Server (MCP). Verbinden Sie Ihren KI-Assistenten einmal und stellen Sie Forschungsfragen in natürlicher Sprache; er fragt Korpus, Priors und Vorhersagemodell direkt ab und nennt seine Quellen.

Server-URL

https://www.messai.io/api/mcp

Verwenden Sie den www-Host: Die Domain messai.io ohne www beantwortet MCP-Anfragen mit einer Weiterleitung, der manche Clients nicht folgen.

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "messai": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://www.messai.io/api/mcp"
      ]
    }
  }
}

Cursor und andere Clients mit Remote-MCP-Unterstützung

{
  "mcpServers": {
    "messai": {
      "url": "https://www.messai.io/api/mcp"
    }
  }
}

15 schreibgeschützte Werkzeuge

Publikationen
search_papers · get_paper
Parameter
list_parameters · get_parameter_distribution · get_parameter_sources · get_prior · get_contradictions · get_parameter_relationships
Modellierung
predict_performance · update_with_my_data · export_priors
Erkundung
find_similar_studies · find_research_gaps
Referenzdaten
lookup_microbes · lookup_materials
  • Außerdem: drei Prompts (benchmark_my_reactor, review_parameter, find_research_direction) und Parameter-Ressourcen (messai://parameters, messai://parameter/{slug}).
  • Kontingent: 60 Werkzeugaufrufe pro Minute und Aufrufer; predict_performance zählt 10, update_with_my_data 3. Ist das Kontingent erschöpft, antwortet ein Werkzeug mit „erneut versuchen in N s“, statt die Sitzung zu beenden.
  • Zahlen kommen mit n, Einheiten und Spannweiten. Vorhersagen melden insufficient_inputs, statt einen fehlenden Wert zu raten.