Embeddable code playgrounds
for education, documentation, and fun 🎉
Codapi is a platform for embedding interactive code snippets directly into your product documentation, online course, or blog post.
python
┌───────────────────────────────┐
│ msg = "Hello, World!" │
│ print(msg) │
│ │
│ │
│ run ► │
└───────────────────────────────┘
✓ Done
┌───────────────────────────────┐
│ Hello, World! │
└───────────────────────────────┘
Codapi manages sandboxes (isolated execution environments) and provides an API to execute code in these sandboxes. It also provides a JavaScript widget codapi-js for easier integration.
Highlights:
- Supports dozens of playgrounds out of the box, plus custom sandboxes if you need them.
- Available as a cloud service and as a self-hosted version.
- Open source. Uses the permissive Apache-2.0 license.
- Lightweight and easy to integrate.
Learn more at codapi.org
Installation
See Installing Codapi for details.
Usage (API)
Call /v1/exec to run the code in a sandbox:
POST https://api.codapi.org/v1/exec
content-type: application/json
{
"sandbox": "python",
"command": "run",
"files": {
"": "print('hello world')"
}
}
sandbox is the name of the pre-configured sandbox, and command is the name of a command supported by that sandbox. See Configuration for details.
files is a map, where the key is a filename and the value is its contents. When executing a single file, it should either be named as the command expects, or be an empty string (as in the example above).
Response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "python_run_9b7b1afd",
"ok": true,
"duration": 314,
"stdout": "hello world\n",
"stderr": ""
}
idis the unique execution identifier.okistrueif the code executed without errors, orfalseotherwise.durationis the execution time in milliseconds.stdoutis what the code printed to the standard output.stderris what the code printed to the standard error, or a compiler/os error (if any).
Usage (JavaScript)
See codapi-js to embed the JavaScript widget into a web page. The widget uses exactly the same API as described above.
Contributing
Pull requests are welcome. For new features and improvements, please first open an issue to discuss what you would like to change.
Be sure to add or update tests as appropriate.
License
Copyright 2023 Anton Zhiyanov.
The software is available under the Apache-2.0 license.
Stay tuned
★ Subscribe to stay on top of new features.