onlinecompiler-io Reference API
Compilers, limits and health. No API key needed.
Compilers, limits and health. No API key needed.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/onlinecompiler-io:onlinecompiler-io-reference-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: OnlineCompiler.io Reference API
version: '2026-10-24'
summary: Run code in a sandbox, judge it against test cases, and read limits and usage.
description: 'Execute source code in isolated, network-less sandboxes in dozens of languages and get stdout, stderr, exit code, time and memory back as JSON. This file describes the native REST API: synchronous runs, asynchronous runs with a callback, judging a program against test cases, the compiler list, execution limits, usage and health.
**Authentication.** Create an API key (type API) in the dashboard at https://api.onlinecompiler.io/compilers/api-keys/ and send the bare key in the `Authorization` header, for example `Authorization: YOUR_API_KEY`. A `Bearer ` prefix is not accepted on this API. Widget keys cannot call it. `GET /api/compilers/`, `GET /api/limits/` and `GET /api/health/` need no key.
Paths are written with a trailing slash; every path except `/api/files/{file_id}/` also works without it.
**Limits.** Per-run limits (memory, CPUs, timeout, output size, file counts) and your plan''s allowance and rate limits change over time and are not repeated here: read `GET /api/limits/` for the defaults and `GET /api/usage/` for your account. A refusal for a limit answers HTTP 429 with `{"error": "..."}` and nothing runs or is counted.
**Compatible APIs.** Existing clients can also talk to OnlineCompiler.io through compatibility layers that are not part of this description: Judge0 CE (https://onlinecompiler.io/docs/judge0), Piston v2 (https://onlinecompiler.io/docs/piston) and Jobe for Moodle CodeRunner (https://onlinecompiler.io/docs/jobe). The MCP server and WebSocket widget are documented at https://onlinecompiler.io/docs.
Full documentation: https://onlinecompiler.io/docs'
termsOfService: https://onlinecompiler.io/terms
contact:
name: OnlineCompiler.io
url: https://onlinecompiler.io/contact
servers:
- url: https://api.onlinecompiler.io
description: Production
tags:
- name: Reference
description: Compilers, limits and health. No API key needed.
paths:
/api/compilers/:
get:
operationId: listCompilers
tags:
- Reference
summary: List the compilers and their ids
description: The current compiler ids, with display names and, for Python, the preinstalled packages. No API key needed. Use an id as `compiler` in the run endpoints.
security: []
responses:
'200':
description: The compilers.
content:
application/json:
schema:
$ref: '#/components/schemas/CompilerList'
example:
compilers:
- id: python-3.14
name: Python
packages:
- name: numpy
version: 2.5.4
- id: gcc-15
name: C
/api/limits/:
get:
operationId: getLimits
tags:
- Reference
summary: Execution limits and default account limits
description: 'Per-run limits and the default (Free) account limits. File sizes are in bytes. No API key needed. An account on a paid plan has higher account limits: see `GET /api/usage/`.'
security: []
responses:
'200':
description: The limits.
content:
application/json:
schema:
$ref: '#/components/schemas/Limits'
/api/health/:
get:
operationId: getHealth
tags:
- Reference
summary: Whether a run gets through right now
description: Checks the database and sends a one-line program through the job queue into a real sandbox. Answers 200 when every check is ok and 503 otherwise. The report is shared and reused for a minute, so `checked_at` can be up to a minute old; calling it costs no runs. Not cacheable. No API key needed.
security: []
responses:
'200':
description: Every check is ok.
headers:
Cache-Control:
schema:
type: string
description: no-store
content:
application/json:
schema:
$ref: '#/components/schemas/Health'
example:
status: ok
checked_at: '2026-10-24T10:41:07.512345+00:00'
checks:
database: ok
queue: ok
sandbox: ok
run_seconds: 0.84
'503':
description: At least one check failed.
content:
application/json:
schema:
$ref: '#/components/schemas/Health'
example:
status: down
checked_at: '2026-10-24T10:41:07.512345+00:00'
checks:
database: ok
queue: timeout
sandbox: unknown
run_seconds: null
components:
schemas:
CompilerList:
type: object
required:
- compilers
properties:
compilers:
type: array
items:
type: object
required:
- id
- name
properties:
id:
$ref: '#/components/schemas/CompilerId'
name:
type: string
description: The language's display name.
packages:
type: array
items:
type: object
required:
- name
- version
properties:
name:
type: string
version:
type: string
description: Preinstalled packages, present for compilers that ship some.
CompilerId:
type: string
description: A compiler id from GET /api/compilers/. Retired ids (the dotnet-*-9 ids, now dotnet-*-10) are still accepted and run on their successor, but are not listed.
examples:
- python-3.14
- gcc-15
- nodejs-24
enum:
- python-3.14
- python-3.14-pandas2
- duckdb-1.5
- gcc-15
- g++-15
- openjdk-25
- dotnet-csharp-10
- dotnet-fsharp-10
- php-8.5
- ruby-4.0
- haskell-9.12
- go-1.26
- rust-1.93
- typescript-deno
- nodejs-24
- sqlite-3
- bash-5.2
- gfortran-15
- dotnet-vbnet-10
- kotlin-2.4
- r-4.6
- swift-6.4
- gnucobol-3.2
- perl-5.44
- julia-1.13
- fpc-3.2
- octave-11
- nasm-3
- lua-5.5
- ocaml-5.4
- sbcl-2.6
- erlang-29
- elixir-1.20
- swipl-10
- ldc-1.43
- fbc-1.10
- dart-3.13
- clojure-1.12
- groovy-6.0
- scala-3.10
- zig-0.17
- nim-2.2
- crystal-1.22
- gnat-15
- powershell-7.6
- racket-9.3
- clang-objc-21
Limits:
type: object
properties:
memory_mb:
type: integer
cpus:
type: integer
timeout_seconds:
type: integer
processes:
type: integer
code_kb:
type: integer
input_kb:
type: integer
output_kb:
type: integer
description: Cap per stream (stdout, stderr).
submissions_per_minute:
type: integer
pending_submissions:
type: integer
running_submissions:
type: integer
submissions_per_month:
type: integer
input_files:
type: integer
input_files_bytes:
type: integer
output_files:
type: integer
output_files_bytes:
type: integer
run_tests_files_bytes:
type: integer
file_retention_days:
type: integer
file_quota_bytes:
type: integer
required:
- memory_mb
- cpus
- timeout_seconds
- processes
- code_kb
- input_kb
- output_kb
- submissions_per_minute
- pending_submissions
- running_submissions
- submissions_per_month
- input_files
- input_files_bytes
- output_files
- output_files_bytes
- run_tests_files_bytes
- file_retention_days
- file_quota_bytes
description: Defaults for a Free account; sizes in bytes where the name says bytes.
Health:
type: object
required:
- status
- checked_at
- checks
- run_seconds
properties:
status:
type: string
enum:
- ok
- down
checked_at:
type: string
format: date-time
checks:
type: object
required:
- database
- queue
- sandbox
properties:
database:
type: string
description: ok or unreachable.
queue:
type: string
description: ok, unreachable, timeout (no run within 20 seconds) or checking.
sandbox:
type: string
description: ok, busy, failed or unknown.
run_seconds:
type:
- number
- 'null'
description: How long the check's one-line program took, null when it did not run.
securitySchemes:
ApiKey:
type: apiKey
in: header
name: Authorization
description: Your API key (key type API) from https://api.onlinecompiler.io/compilers/api-keys/, sent as the bare value of the Authorization header. Do not add a Bearer prefix. A key may be restricted to an origin in the dashboard.
externalDocs:
description: OnlineCompiler.io documentation
url: https://onlinecompiler.io/docs