onlinecompiler-io Reference API

Compilers, limits and health. No API key needed.

Operations 3

GET /api/compilers/ List the compilers and their ids #
GET /api/limits/ Execution limits and default account limits #
GET /api/health/ Whether a run gets through right now #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/onlinecompiler-io:onlinecompiler-io-reference-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

onlinecompiler-io-reference-api-openapi.yml Raw ↑
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