L'API publique
Lecture seule, JSON, CORS ouvert, sans clé. Chaque point d'accès s'appuie sur les mêmes fonctions que les pages : searchWorks() sert à la fois /works et /api/v1/works, de sorte que l'API ne peut pas répondre à une autre question que la page au-dessus d'elle.
URL de base : https://metacan.xera.ac/api/v1
/api/v1/stats/summaryLa base en un seul objet : le total des travaux, les comptes sans affiliation et sans résumé, les marginales des quatre voies, et l'histogramme de consensus du tri.
curl -sS https://metacan.xera.ac/api/v1/stats/summary | jq/api/v1/worksParcourir et chercher toute la base. Plein texte sur les titres, tous les filtres de la page de consultation, paginé.
total_is_capped: true signifie donc « au moins 10 000 », et non « exactement 10 000 ». Paginez s'il vous en faut davantage.| Paramètre | Type | Signification |
|---|---|---|
q | string | Recherche plein texte sur les titres (tsvector Postgres ; les termes sont liés par ET). |
year_from, year_to | int | Bornes inclusives sur l’année de publication. |
lang | string | Code de langue, p. ex. en, fr. |
type | string | Type de travail, p. ex. article, preprint, dissertation. |
field | string | Domaine principal OpenAlex, p. ex. 'Medicine'. |
route | aff | fund | venue | about | no_aff | Provenance par voie : pourquoi le travail est dans la base. no_aff renvoie les travaux SANS affiliation canadienne, ceux qu'une base fondée sur la seule affiliation ne voit jamais. |
retracted | 1 | Seulement les travaux qu'OpenAlex signale comme rétractés. |
no_abstract | 1 | Seulement les travaux sans résumé. Le tri y repère moitié moins de métarecherche. |
n_in | 0..3 | Consensus du tri : combien des trois modèles ont qualifié le travail de métarecherche. |
sort | cited | year_desc | year_asc | Par défaut : cited. |
page, per_page | int | per_page : 100 au maximum, 25 par défaut. |
# Les travaux qu'une base fondée sur la seule affiliation n'aurait jamais vus,
# les plus cités d'abord :
curl -sS "https://metacan.xera.ac/api/v1/works?route=no_aff&sort=cited&per_page=5" | jq '.results[] | {id, title, cited_by, routes}'
# Travaux en français, sans résumé, parus depuis 2015 :
curl -sS "https://metacan.xera.ac/api/v1/works?lang=fr&no_abstract=1&year_from=2015&per_page=5" | jq
# Recherche plein texte :
curl -sS "https://metacan.xera.ac/api/v1/works?q=reproducibility+crisis&per_page=3" | jq '.results[].title'/api/v1/works/{id}Un travail, tous ses champs, les voies qui l'ont admis, son état Retraction Watch le cas échéant, et les étiquettes et motifs des trois modèles s'il a été trié.
| Paramètre | Type | Signification |
|---|---|---|
abstract | 1 | Récupérer le résumé en direct depuis OpenAlex et le désinverser. Désactivé par défaut : les résumés ne sont pas dans cette base de données, en demander un coûte donc un aller-retour vers l'amont. |
# Un travail, avec sa provenance :
curl -sS https://metacan.xera.ac/api/v1/works/W2342586781 | jq '{id, title, routes}'
# Avec le résumé récupéré en direct depuis OpenAlex :
curl -sS "https://metacan.xera.ac/api/v1/works/W2342586781?abstract=1" | jq '.abstract'/api/v1/screenedLes 1 000 travaux triés, avec les niveaux, genres, confiances et motifs des trois modèles, plus le poids de sondage.
weight (l'inverse de la probabilité de sélection). Tout taux calculé sur ces rangées sans appliquer le poids est faux.| Paramètre | Type | Signification |
|---|---|---|
contested_only | 1 | LE DOSSIER DES DÉSACCORDS : chaque travail qu'au moins un modèle a qualifié de métarecherche. Ce sous-ensemble, et non le taux de base, est le livrable du projet. |
n_in | 0..3 | Compte de consensus exact. |
stratum | string | p. ex. aff_core, about_only, french, venue_new, fund_new. |
page, per_page | int | per_page : 100 au maximum. |
# Le dossier des désaccords : les travaux qui marquent la frontière du domaine.
curl -sS "https://metacan.xera.ac/api/v1/screened?contested_only=1" | jq '.meta.summary'
# Les travaux qu'un SEUL modèle a qualifiés de métarecherche :
curl -sS "https://metacan.xera.ac/api/v1/screened?n_in=1" \
| jq '.results[] | {title, opus: .opus.tier, gpt: .gpt.tier, grok: .grok.tier}'/api/v1/stats/by-routeLes quatre voies : marginales, et combinaisons exactes de voies.
marginals totalise donc plus que la base. combinations compte chaque travail une seule fois et totalise le total exact.curl -sS https://metacan.xera.ac/api/v1/stats/by-route | jq '{no_aff: .meta.no_aff, marginals, combinations: .combinations[:5]}'/api/v1/stats/by-yearLes travaux par année, avec en regard les comptes sans affiliation et sans résumé, parce que les deux écarts évoluent dans le temps.
curl -sS https://metacan.xera.ac/api/v1/stats/by-year | jq '.results[-5:]'/api/v1/stats/by-fieldLa répartition par domaine, plus les langues, l'écart des résumés par type, les principales revues, les principaux organismes subventionnaires et le dossier de rétractation à quatre états : tout ce que dessine la page Analytique, en un seul appel.
curl -sS https://metacan.xera.ac/api/v1/stats/by-field | jq '.retraction_states'/api/v1/findingsLes 22 constats, servis tels quels depuis le fichier qu’écrivent les scripts du pilote. Chaque nombre cité où que ce soit sur ce site vient d’ici.
curl -sS https://metacan.xera.ac/api/v1/findings | jq '.findings.three_model_screen.headline'Remarques
- CORS est ouvert (
*). C'est un jeu de données de recherche public sous CC-BY ; l'intérêt de le publier est que vous puissiez l'interroger depuis votre propre page sans serveur mandataire. - Cache. Les réponses portent
s-maxage=3600. La base est un instantané épinglé : elle ne change pas entre les déploiements, un agrégat un peu vieux n'est donc pas un risque, alors que rebalayer 4,3 M de rangées à chaque requête en serait un. - Sans clé, sans limite de débit, mais c'est un seul petit serveur. Restez raisonnable, et s'il vous faut toute la base, prenez le dépôt et reconstruisez-la localement plutôt que d'en paginer quatre millions de rangées hors de cette machine.
- Licence. Données CC BY 4.0, code MIT. Citez OpenAlex et Retraction Watch comme sources amont.