API Documentation

The Infoton API provides programmatic access to the Thermodynamic Controllability Calculator. Compute the controllability metric 𝓜 for any reactor configuration using the full 12-module derivation — from Landauer energy through infoton particle physics.

Version

Current API version: v1. All endpoints are stable and backward-compatible.

Authentication

All requests require a Bearer token in the Authorization header. API keys are available from your Dashboard.

Header
Authorization: Bearer inf_prod_sk_7Xm9kL2pQ4vR8nT1wF6jB3hY...
Keep Keys Secret

Never expose API keys in client-side code or public repositories. Use environment variables and server-side requests.

Base URL

https://api.infoton.ai/v1

All endpoints are relative to this base. HTTPS is required for all requests.

Rate Limits

PlanRequests / MinuteRequests / MonthMax Batch Size
Research ($50/mo)0 (web calculator only)
Commercial ($2,500/mo)1050500 configs
GovernmentCustomCustomUp to 10,000

Rate limit headers are included in every response: X-RateLimit-Remaining, X-RateLimit-Reset.

Research Plan

Research licenses provide access to the web-based calculator only. API access requires a Commercial or Government license.

Controllability

Compute the controllability metric 𝓜 for a single reactor configuration. The engine runs the full 12-module derivation: Landauer energy, Braginskii spatial grid, bit rate, Landauer floor, three-tier overhead, controllability metric, Carnot correction, infoton particle physics, and information confinement.

POST /controllability

Request Body

ParameterTypeRequiredDescription
temperaturenumberYesOperating temperature in Kelvin (1 – 10¹²)
power_output_wnumberYesThermal power output in Watts (1 – 10³⁰)
confinement_mnumberNoConfinement dimension in meters. Default: 6
magnetic_field_tnumberNoMagnetic field strength in Tesla (0 – 100). Determines grid resolution via gyroradius.
energy_confinement_snumberNoEnergy confinement time in seconds (0 – 10¹⁶)
update_frequency_hznumberNoControl update frequency in Hz (1 – 10¹⁵). Default: 10⁶
T_blanketnumberNoBlanket / coolant temperature in K (100 – 10,000). Used for Carnot correction.
T_coldnumberNoCold reservoir temperature in K. Default: 300
turbine_effnumberNoTurbine efficiency factor (0 – 1). Applied to Carnot electrical output.
regimestringNoGrid resolution basis: "ion", "electron", or "multi" (default). Selects gyroradius scale.
Legacy Parameters

For backward compatibility, you can also pass grid_resolution_m, ops_per_cell, and overhead_factor directly. These override the engine's physics-based derivation.

Example Request

curl
curl -X POST https://api.infoton.ai/v1/controllability \
  -H "Authorization: Bearer inf_prod_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "temperature": 1.5e8,
    "power_output_w": 5e8,
    "confinement_m": 6,
    "magnetic_field_t": 5.3,
    "energy_confinement_s": 3.7,
    "update_frequency_hz": 1e6,
    "T_blanket": 1000,
    "turbine_eff": 0.40,
    "regime": "ion"
  }'

Response Fields

FieldTypeDescription
Core Result
metricnumberControllability metric 𝓜 (conservative, α=10³)
statusstringVerdict: "controllable", "economically_impossible", "practically_impossible", or "thermodynamically_impossible"
computation_msnumberServer computation time in milliseconds
Landauer Energy (Module 3)
E_bitnumberLandauer energy per bit operation (J): kBT ln 2
Spatial Grid (Module 4)
rho_enumberElectron gyroradius (m)
rho_inumberIon gyroradius (m)
dxnumberGrid resolution (m)
cellsPerDimnumberGrid cells per dimension
N_cellsnumberTotal grid cells (3D)
Bit Rate (Module 5)
ops_totalnumberBinary operations per cell per update
N_dotnumberTotal bit rate (bits/s)
Landauer Floor (Module 6)
P_landauernumberTheoretical minimum dissipation (W)
Three-Tier Overhead (Module 7)
P_control_conservativenumberControl power at α = 10³ (W)
P_control_realisticnumberControl power at α = 10⁶ (W)
P_control_currentnumberControl power at α = 10⁹ (W)
Controllability vs Thermal (Module 8)
M_conservativenumber𝓜 at α = 10³ (conservative)
M_realisticnumber𝓜 at α = 10⁶ (realistic)
M_currentnumber𝓜 at α = 10⁹ (current technology)
verdict_conservativeobject{ status, class, code } — see status values below
Carnot Correction vs Electrical (Module 9)
eta_carnotnumberCarnot efficiency
P_electricalnumberUsable electrical output (W)
M_electricalnumber𝓜 vs electrical output at α = 10³
M_electrical_realisticnumber𝓜 vs electrical at α = 10⁶
M_electrical_currentnumber𝓜 vs electrical at α = 10⁹
Infoton Particle Physics (Module 10)
m_infotonnumberInfoton mass m(T) (kg): kBT ln 2 / c²
v_infotonnumberInfoton thermal velocity (m/s)
rho_infotonnumberInfoton gyroradius (m)
Information Confinement (Module 11)
tau_infonumberInformation confinement time (s)
tau_rationumberτ_E / τ_info ratio

Example Response

200 OK
{
  "metric": 5.92e-5,
  "status": "controllable",
  "E_bit": 2.87e-15,
  "rho_e": 3.19e-5,
  "rho_i": 2.88e-3,
  "dx": 2.88e-3,
  "N_cells": 9.01e9,
  "N_dot": 1.35e18,
  "P_landauer": 3.87e3,
  "P_control_conservative": 3.87e6,
  "P_control_realistic": 3.87e9,
  "P_control_current": 3.87e12,
  "M_conservative": 5.92e-5,
  "M_realistic": 5.92e-2,
  "M_current": 5.92e1,
  "verdict_conservative": {
    "status": "CONTROLLABLE",
    "class": "safe",
    "code": "ok"
  },
  "eta_carnot": 0.998,
  "P_electrical": 1.99e8,
  "M_electrical": 1.48e-4,
  "m_infoton": 3.19e-32,
  "v_infoton": 2.51e8,
  "tau_info": 1.15e-11,
  "tau_ratio": 3.23e11,
  "computation_ms": 2
}

Batch Analysis

Submit multiple configurations in a single request. Small batches (≤50 configs) return results synchronously. Larger batches return a job ID for polling.

POST /batch

Request Body

json
{
  "configurations": [
    {
      "name": "ITER",
      "temperature": 1.5e8,
      "power_output_w": 5e8,
      "confinement_m": 6,
      "magnetic_field_t": 5.3,
      "energy_confinement_s": 3.7,
      "T_blanket": 1000,
      "turbine_eff": 0.40
    },
    // ... up to 500 configurations (Commercial)
  ]
}

Batches ≤50 configurations return results synchronously. For batches over 50, the API returns a job_id. Poll GET /batch/{job_id} for results.

GET /batch/{job_id}
GET /batch

List all batch jobs for the authenticated user.

Presets

Manage saved reactor configurations.

GET /presets
POST /presets
GET /presets/{preset_id}
DELETE /presets/{preset_id}

Reports

Generate and retrieve CSV reports programmatically. Each report contains the full 12-module derivation trace.

POST /reports
GET /reports
GET /reports/{report_id}
GET /reports/{report_id}/download
DELETE /reports/{report_id}

Generate a Report

Request
curl -X POST https://api.infoton.ai/v1/reports \
  -H "Authorization: Bearer inf_prod_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "type": "single",
    "title": "ITER Analysis",
    "configuration": {
      "temperature": 1.5e8,
      "power_output_w": 5e8,
      "confinement_m": 6,
      "magnetic_field_t": 5.3,
      "energy_confinement_s": 3.7,
      "T_blanket": 1000,
      "turbine_eff": 0.40
    }
  }'

Parameter Reference

ParameterUnitRangeDefaultNotes
temperatureK1 – 10¹²Required. Fission ~600 K, Fusion ~10⁸ K
power_output_wW1 – 10³⁰Required. Thermal output
confinement_mm10⁻⁶ – 10⁹6Characteristic confinement length
magnetic_field_tT0 – 100Determines gyroradius → grid resolution
energy_confinement_ss0 – 10¹⁶For τ_E / τ_info confinement ratio
update_frequency_hzHz1 – 10¹⁵10⁶MHz for ion scale, GHz for electron
T_blanketK100 – 10,000Hot reservoir for Carnot correction
T_coldK1 – 5,000300Cold reservoir temperature
turbine_eff0 – 1Applied to Carnot electrical output
regime"multi""ion", "electron", or "multi"
Legacy Override Parameters

These bypass the physics-based derivation. Useful when you want to specify exact values rather than have the engine derive them from plasma parameters.

ParameterRangeNotes
grid_resolution_m10⁻¹² – 10³Overrides gyroradius-derived grid spacing
ops_per_cell1 – 10¹⁰Overrides Braginskii state variable count
overhead_factor1 – 10¹²Overrides three-tier α, recomputes 𝓜

Response Format

All responses are JSON. The engine returns the full 12-module derivation. The status field maps to one of four verdict levels based on 𝓜 (conservative, α = 10³):

𝓜 RangeStatusVerdict
𝓜 < 0.01"controllable"CONTROLLABLE
0.01 ≤ 𝓜 < 0.1"economically_impossible"ECONOMICALLY IMPOSSIBLE
0.1 ≤ 𝓜 < 1"practically_impossible"PRACTICALLY IMPOSSIBLE
𝓜 ≥ 1"thermodynamically_impossible"THERMODYNAMICALLY IMPOSSIBLE

The verdict_conservative object includes status (display string), class ("safe", "warn", or "critical"), and code ("ok", "economic", "practical", or "thermo").

Error Codes

StatusCodeDescription
400invalid_parametersMissing required parameter or value out of range.
401unauthorizedMissing or invalid API key.
403forbiddenYour plan does not include API access (e.g. Research tier).
404not_foundThe requested resource does not exist.
429rate_limitedToo many requests. Check X-RateLimit-Reset header.
500internal_errorServer error. Contact January@infoton.ai if persistent.

Error Response Format

400 Bad Request
{
  "error": {
    "code": "invalid_parameters",
    "message": "Parameter temperature out of range: -500 (valid: 1–1000000000000)"
  }
}

Code Examples

Python

python
import requests

response = requests.post(
    "https://api.infoton.ai/v1/controllability",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "temperature": 1.5e8,
        "power_output_w": 5e8,
        "confinement_m": 6,
        "magnetic_field_t": 5.3,
        "energy_confinement_s": 3.7,
        "T_blanket": 1000,
        "turbine_eff": 0.40,
    }
)

data = response.json()
print(f"𝓜 = {data['metric']}{data['status']}")
print(f"Landauer floor: {data['P_landauer']:.2e} W")
print(f"Infoton mass:   {data['m_infoton']:.2e} kg")

JavaScript

javascript
const response = await fetch("https://api.infoton.ai/v1/controllability", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    temperature: 1.5e8,
    power_output_w: 5e8,
    confinement_m: 6,
    magnetic_field_t: 5.3,
    energy_confinement_s: 3.7,
    T_blanket: 1000,
    turbine_eff: 0.40,
  }),
});

const data = await response.json();
console.log(`𝓜 = ${data.metric} — ${data.status}`);
console.log(`Three-tier: ${data.P_control_conservative.toExponential(2)} W (α=1e3)`);
console.log(`Infoton: ${data.m_infoton.toExponential(2)} kg`);