JSON API

Public, read-only, no rate limit. Everything on the site — the whole idea corpus, filters, tags, categories — is queryable as JSON.

Endpoints

Authentication: none. All endpoints are GET-only and read-only. Machine-readable contract: OpenAPI 3.1 specification. Discovery manifest: API Catalog.

GET /api/ideasfiltered, paginated idea list (compact records)
GET /api/idea/{id}.jsonfull record of one idea: description, math, implementation, verification, artifacts
GET /api/idea/{id}.mdsame idea as clean Markdown for agents and scripts; HTML idea URLs also negotiate Markdown with Accept: text/markdown
GET /api/categoriesall categories with idea counts
GET /api/tagsthree tag taxonomies — math, ml, solves — with counts

/api/ideas — filters

Same axes as the Ideas page. Repeatable parameters accept multiple values: tags are AND-ed within and across taxonomies, so an idea must carry every requested tag. If you want to discover valid slugs first, call /api/tags and /api/categories.

Verification has three explicit fields: verification_axes.toy_mechanism_gate is the Stage-1 prerequisite; verification_axes.benchmark_mechanism says whether the claimed phenomenon transferred to the trained benchmark model; verification_axes.practical_benchmark says whether task performance significantly beat the tuned baseline. Stage 1 must pass before Stage 2 runs. A practical win with benchmark_mechanism.confirmed=false means “performance improved, but the claimed cause was not reproduced,” not “the failed toy mechanism was promoted.”

statusunverified (no experiment ran yet) · beats_baseline (benchmark won vs tuned baseline, 8 paired seeds) · mech_ok_no_baseline (mechanism transferred to the benchmark model, practical win not established) · failed_benchmark (mechanism ran, benchmark lost) · mechanism_failed (Stage-1 toy gate failed, benchmark never ran)
categorycategory name, see /api/categories
solves · ml · mathtag names per taxonomy, see /api/tags
tagshorthand tax/slug, repeatable (e.g. tag=math/optimization)
min_usefulnessinteger 1–10 (rating axis)
max_difficultyinteger 1–10 (lower = easier to implement)
min_noveltyinteger 1–10
yearsource-paper year
qfree-text search over titles and summaries
trivial=1also include “re-invented” ideas. During extraction the pipeline flags an idea as trivial when its core trick is already a known ML technique (standard attention, plain dropout, vanilla augmentation…). Such ideas are hidden by default everywhere on the site and in the API; pass trivial=1 if you want the full corpus including them.
sortvalue (default) · newest · easiest · hardest
page · per_pagepagination; per_page default 50, max 200

The response carries total, pages and an echoed filters object, so a client can page without guessing.

Examples

1. Filtered idea list

Ideas tagged math/optimization and ml/training-dynamics, newest first. Repeatable tag/solves/ml/math parameters are AND-ed: an idea must carry every listed tag. The response echoes the applied filters and always carries total / pages, so a client knows when to stop paging.

curl 'https://synthcore.org/api/ideas?tag=math/optimization&tag=ml/training-dynamics&sort=newest&per_page=2'
{
  "filters": {
    "category": "",
    "math": [
      "optimization"
    ],
    "max_difficulty": -1,
    "min_novelty": -1,
    "min_usefulness": -1,
    "ml": [
      "training-dynamics"
    ],
    "q": "",
    "solves": [],
    "sort": "newest",
    "status": "",
    "trivial": false,
    "year": ""
  },
  "items": [
    {
      "api_url": "https://synthcore.org/api/idea/1338.json",
      "arxiv_id": "2607.23866",
      "category": "dynamics",
      "difficulty": 6,
      "has_experiment": {
        "benchmark": false,
        "mechanism": false
      },
      "id": 1338,
      "math_tags": [
        "control-theory",
        "stochastic-processes",
        "optimization",
        "probability",
        "linear-algebra"
      ],
      "ml_areas": [
        "optimizer",
        "training-dynamics",
        "scheduler"
      ],
      "novelty": 7,
      "paper": "Bound-Optimized Task Choice for Path Integral Control",
      "solves": [
        "stability",
        "speed"
      ],
      "status": "unverified",
      "status_label": "Unverified",
      "title": "Bound-Optimized Stochastic Preconditioner",
      "trivial": false,
      "url": "https://synthcore.org/idea/1338/bound-optimized-stochastic-preconditioner",
      "usefulness": 6,
      "year": "2026"
    },
    {
      "api_url": "https://synthcore.org/api/idea/1335.json",
      "arxiv_id": "2607.23839",
      "category": "dynamics",
      "difficulty": 5,
      "has_experiment": {
        "benchmark": false,
        "mechanism": false
      },
      "id": 1335,
      "math_tags": [
        "control-theory",
        "dynamical-systems",
        "optimization"
      ],
      "ml_areas": [
        "rl",
        "mlp",
        "training-dynamics"
      ],
      "novelty": 6,
      "paper": "Flight Envelope Protection for a Hypersonic Glide Vehicle Using Adaptive Safety-Critical Control",
      "solves": [
        "stability",
        "accuracy",
        "generalization"
      ],
      "status": "unverified",
      "status_label": "Unverified",
      "title": "Adaptive CBF Safety Layer for Neural Policies",
      "trivial": false,
      "url": "https://synthcore.org/idea/1335/adaptive-cbf-safety-layer-for-neural-policies",
      "usefulness": 8,
      "year": "2026"
    }
  ],
  "page": 1,
  "pages": 89,
  "per_page": 2,
  "total": 177
}

2. Pagination

page starts at 1. pages tells you the last valid page; if you request beyond it you get "items": [] with the meta intact — just stop, or step back. Example: page 2 of beaten-baseline ideas rated ≥ 8:

curl 'https://synthcore.org/api/ideas?status=beats_baseline&min_usefulness=8&sort=newest&page=2&per_page=2'
{
  "filters": {
    "category": "",
    "math": [],
    "max_difficulty": -1,
    "min_novelty": -1,
    "min_usefulness": 8,
    "ml": [],
    "q": "",
    "solves": [],
    "sort": "newest",
    "status": "beats_baseline",
    "trivial": false,
    "year": ""
  },
  "items": [
    {
      "api_url": "https://synthcore.org/api/idea/1067.json",
      "arxiv_id": "2607.17358",
      "category": "architecture",
      "difficulty": 7,
      "has_experiment": {
        "benchmark": true,
        "mechanism": true
      },
      "id": 1067,
      "math_tags": [
        "dynamical-systems",
        "control-theory",
        "spectral-theory",
        "linear-algebra"
      ],
      "ml_areas": [
        "rnn",
        "ssm",
        "training-dynamics"
      ],
      "novelty": 7,
      "paper": "Richards' equation as a hydrodynamic limit: Chapman--Enskog reduction of the continuum kinetic equation for unsaturated soil water",
      "solves": [
        "stability",
        "accuracy",
        "memory"
      ],
      "status": "beats_baseline",
      "status_label": "Beats tuned baseline",
      "title": "Conservative Chapman–Enskog Neural Layer",
      "trivial": false,
      "url": "https://synthcore.org/idea/1067/conservative-chapman-enskog-neural-layer",
      "usefulness": 8,
      "year": "2026"
    },
    {
      "api_url": "https://synthcore.org/api/idea/1020.json",
      "arxiv_id": "2607.16676",
      "category": "architecture",
      "difficulty": 5,
      "has_experiment": {
        "benchmark": true,
        "mechanism": true
      },
      "id": 1020,
      "math_tags": [
        "probability",
        "stochastic-processes",
        "information-theory"
      ],
      "ml_areas": [
        "graph-nn",
        "architecture",
        "training-dynamics"
      ],
      "novelty": 6,
      "paper": "The Value of Depth in Message Passing on Sparse Graphs: A Kesten-Stigum Dichotomy",
      "solves": [
        "accuracy",
        "stability",
        "scalability"
      ],
      "status": "beats_baseline",
      "status_label": "Beats tuned baseline",
      "title": "Kesten–Stigum Attenuated Message Passing",
      "trivial": false,
      "url": "https://synthcore.org/idea/1020/kesten-stigum-attenuated-message-passing",
      "usefulness": 8,
      "year": "2026"
    }
  ],
  "page": 2,
  "pages": 6,
  "per_page": 2,
  "total": 11
}

Got an empty list? Check total first: if total: 0, your filter combination matched nothing (e.g. a tag slug that exists in one taxonomy but not another — pick slugs from /api/tags). If total > 0 but items is empty, your page is past pages.

3. Full idea record

curl 'https://synthcore.org/api/idea/502.json'
{
  "artifacts": [
    {
      "name": "README.md",
      "url": "https://synthcore.org/code/240/README.md"
    },
    {
      "name": "bench_experiment.py",
      "url": "https://synthcore.org/code/240/bench_experiment.py"
    },
    "… 4 more"
  ],
  "category": "optimization",
  "description": "Replace ordinary randomized coordinate descent inside a least-squares neural subproblem with RPLSS's projected …",
  "download_zip": "https://synthcore.org/download/240",
  "formulas_latex": [
    "$$\\mathbf{s}_{k}=\\mathbf{A}\\mathbf{e}_{i}$$",
    "$$\\mathbf{p}_{k}=\\gamma_{k-1}\\left(\\mathbf{W}\\mathbf{A}^{T}\\mathbf{s}_{k}-\\mathbf{P}_{k-1}\\mathbf{\\Theta}_{k-1}^{-1}\\mathbf{P}_{k-1}^{T}\\mathbf{A}^{T}\\mathbf{s}_{k}\\right),\\qquad \\mathbf{\\Theta}_{k-1}=\\mathbf{P}_{k-1}^{T}\\mathbf{W}^{-1}\\mathbf{P}_{k-1}$$",
    "$$\\gamma_{k-1}=\\frac{\\mathbf{s}_{k}^{T}(\\mathbf{b}-\\mathbf{A}\\mathbf{x}_{k-1})}{\\mathbf{s}_{k}^{T}\\mathbf{A}\\mathbf{W}\\mathbf{A}^{T}\\mathbf{s}_{k}-\\|\\mathbf{d}_{k-1}\\|_{2}^{2}},\\qquad \\mathbf{d}_{k-1}=\\mathbf{\\Theta}_{k-1}^{-1/2}\\mathbf{P}_{k-1}^{T}\\mathbf{A}^{T}\\mathbf{s}_{k}$$",
    "$$\\mathbf{x}_{k}=\\mathbf{x}_{k-1}+\\mathbf{p}_{k}$$"
  ],
  "id": 502,
  "implementation": "1. Integration point: implement this as an inner optimizer for a small …",
  "math_summary": "For a linear system A x = b with A in R^{m x n}, x in R^n, choose a po …",
  "math_tags": [
    "optimization",
    "linear-algebra",
    "numerical-analysis"
  ],
  "ml_areas": [
    "optimizer",
    "fine-tuning",
    "training-dynamics"
  ],
  "paper": {
    "arxiv_id": "2607.06917",
    "arxiv_url": "https://arxiv.org/abs/2607.06917",
    "summary_what_math_gives_to_ml": "The paper's transferable asset is a projected randomized coordinate solver that stores previously discovered search directions and removes their contribution before accepting a new direction. Unlike ordinary randomized Kaczmarz or coordinate descent, the update is globally corrected by an explicit Gram-matrix projection, which can prevent repeated work in already-explained subspaces and can terminate after a finite number of independent directions. The most plausible neural-network use is not generic nonlinear training, but solving least-squares Gauss–Newton subproblems for a linear output head, LoRA adapter, or small last-layer block using minibatch Jacobian columns and partial parameter access.",
    "title": "RPLSS: A randomized projected linear systems solver",
    "year": "2026"
  },
  "ratings": {
    "difficulty": 6,
    "novelty": 7,
    "usefulness": 7
  },
  "solves": [
    "speedup",
    "stability",
    "sample-efficiency"
  ],
  "title": "Projected Randomized Gauss–Newton Updates",
  "url": "https://synthcore.org/idea/502/projected-randomized-gauss-newton-updates",
  "verification": {
    "benchmark": "…",
    "mechanism_confirmed": false,
    "peer_reviewed": false,
    "practical_verdict": "helps",
    "stage1_mechanism_check": "…",
    "status": "beats_baseline",
    "status_label": "Beats tuned baseline",
    "updated_at": "2026-08-30T21:28:06",
    "verdict_source": "deterministic test code (paired-seed permutation statistics)"
  }
}
title · id · urlidea identity and canonical page URL
descriptionplain-language statement of the idea
math_summarythe mathematical core (LaTeX in $…$ / display math)
implementationnumbered integration and implementation notes
formulas_latexkey formulas as standalone LaTeX strings
ratingsusefulness / difficulty / novelty, each 1–10
category · solves · ml_areas · math_tagstaxonomy slugs (same vocabulary as /api/tags, /api/categories)
papersource arXiv paper: arxiv_id, arxiv_url, title, year, summary_what_math_gives_to_ml
verificationverdict block: status + status_label, mechanism_confirmed, stage1_mechanism_check (toy-system report with metrics/verdict), benchmark (paired-seed comparison with per-seed results and p-value), practical_verdict, verdict_source, updated_at
artifacts · download_zipcode viewer / raw file URLs for the experiment, and the ZIP of everything

All experiment files are also fetchable directly: /raw/{exp}/{file} for contents, /code/{exp}/{file} for the highlighted viewer.

List item fields

id · title · url · api_urlnumeric id, idea title, canonical page URL, full-record JSON URL
status · status_labelmachine slug and human wording of the verification verdict
usefulness · difficulty · noveltypublic ratings 1–10 (novelty = 10 − how well the idea is already represented in ML)
category · solves · ml_areas · math_tagstaxonomy assignments; slugs match /api/tags and /api/categories
has_experimentmechanism — stage-1 toy-system report exists; benchmark — stage-2 paired-seed benchmark report exists
paper · arxiv_id · yearsource paper the idea was extracted from

Notes

  • Rate limit: none. The database is opened read-only; feel free to iterate.
  • Updates: the pipeline appends new ideas continuously; list responses are cached for 5 minutes.
  • Machine-readable alternative: every idea page also embeds schema.org JSON-LD (TechArticle with experiment artifacts as Dataset/SoftwareSourceCode) — use that if you prefer structured-data markup over this API.
  • Corpus: 3136 public ideas, 879 of them with a passed verification stage.