Get started with DocsCI
Prevent broken examples and API/SDK drift from reaching production. Set up in under 5 minutes with the GitHub Actions template.
๐ Quick setup
Sign up & create your org
Create a free account at snippetci.com/signup. Create an org matching your GitHub organization name.
Import your GitHub repo
Import any public GitHub repo by URL. DocsCI auto-detects your docs folder structure.
POST https://snippetci.com/api/repos
{
"repo_url": "https://github.com/your-org/your-repo",
"org_id": "<your-org-id>",
"docs_path": "docs/",
"sdk_languages": ["python", "typescript"]
}Add the GitHub Actions workflow
Copy the template to .github/workflows/docsci.yml and add DOCSCI_API_KEY as a repository secret.
โ Download docsci.ymlImport your OpenAPI spec (optional)
Point DocsCI at your staging API spec. It checks all docs examples against the live schema on every run.
POST https://snippetci.com/api/openapi-import
{
"source_url": "https://api.your-company.com/openapi.json",
"org_id": "<your-org-id>"
}Trigger your first run
DocsCI fetches your docs, extracts code snippets, executes them in hermetic sandboxes, and generates AI fix suggestions for failures.
POST https://snippetci.com/api/runs
{
"repo_id": "<your-repo-id>",
"branch": "main"
}๐ Hermetic Sandbox Specifications
Every snippet runs in an ephemeral, isolated environment. No shared state between runs โ eliminates flakiness caused by external dependencies.
| Feature | Behavior |
|---|---|
| JS/TS execution | Node.js subprocess โ no network, no fs writes |
| Python execution | Isolated Python subprocess โ no network access |
| Timeout | 10s default, configurable up to 60s |
| Memory limit | 256MB per snippet |
| Network access | Blocked (allowlist via customer-hosted runner) |
| Filesystem writes | Blocked โ tmpdir only, auto-cleaned |
| Credentials | Ephemeral โ never shared between runs |
| Customer-hosted runners | Bring your own infra with your real API credentials |
๐ก API Reference
All endpoints require Authorization: Bearer <supabase-jwt> except healthcheck.
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| GET | /api/healthcheck | None | Supabase connectivity & RLS status |
| GET | /api/repos | Bearer | List repos for current user's orgs |
| POST | /api/repos | Bearer | Import a public GitHub repo by URL |
| GET | /api/runs | Bearer | List recent CI runs (filter by repo_id) |
| POST | /api/runs | Bearer | Trigger a new CI run for a repo |
| GET | /api/runs/[id] | Bearer | Get run details + all snippet results |
| POST | /api/snippets | Bearer | Execute a code snippet in sandbox (JS/TS/Python) |
| POST | /api/openapi-import | Bearer | Import an OpenAPI spec from a URL |
| POST | /api/ai-fix | Bearer | Generate AI fix suggestion + patch diff |
| GET | /api/audit-log | Bearer | Paginated audit log for current org |
โ Whole-product checklist
Ready to ship docs that work?
10 design partner slots open. We'll set up your first pipeline together in a 30-minute call.