API Reference Overview
The SELab.ai API allows you to integrate our systems engineering platform with your existing tools and workflows.
Base URL
https://api.selab.ai/v1
Authentication
All API requests require authentication using an API key.
Getting Your API Key
- Log in to SELab.ai
- Navigate to Settings → API Keys
- Click "Generate New Key"
- Copy and securely store your key
Using Your API Key
Include your API key in the request header:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.selab.ai/v1/projects
Rate Limits
| Plan | Requests per Hour | Requests per Day |
|---|---|---|
| Free | 100 | 1,000 |
| Pro | 1,000 | 10,000 |
| Enterprise | 10,000 | 100,000 |
API Endpoints
Projects
GET /projects # List all projects
POST /projects # Create a new project
GET /projects/{id} # Get project details
PUT /projects/{id} # Update a project
DELETE /projects/{id} # Delete a project
Models
GET /projects/{id}/models # List models
POST /projects/{id}/models # Create a model
GET /models/{id} # Get model details
PUT /models/{id} # Update a model
DELETE /models/{id} # Delete a model
Requirements
GET /projects/{id}/requirements # List requirements
POST /projects/{id}/requirements # Create a requirement
GET /requirements/{id} # Get requirement details
PUT /requirements/{id} # Update a requirement
DELETE /requirements/{id} # Delete a requirement
Documents
POST /projects/{id}/documents/generate # Generate document
GET /documents/{id} # Get document
GET /documents/{id}/download # Download document
Request Format
All POST and PUT requests should use JSON:
{
"name": "My Project",
"description": "Project description",
"domain": "aerospace"
}
Response Format
Successful responses return JSON:
{
"status": "success",
"data": {
"id": "proj_123456",
"name": "My Project",
"created_at": "2026-03-18T09:00:00Z"
}
}
Error responses include details:
{
"status": "error",
"error": {
"code": "INVALID_REQUEST",
"message": "Project name is required"
}
}
Status Codes
| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 429 | Rate Limit Exceeded |
| 500 | Internal Server Error |
Examples
Create a Project
curl -X POST https://api.selab.ai/v1/projects \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Autonomous Vehicle System",
"description": "Self-driving car project",
"domain": "automotive"
}'
List Requirements
curl https://api.selab.ai/v1/projects/proj_123/requirements \
-H "Authorization: Bearer YOUR_API_KEY"
Generate Document
curl -X POST https://api.selab.ai/v1/projects/proj_123/documents/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template": "requirements_spec",
"format": "pdf"
}'
SDKs
Official SDKs are available for:
- Python:
pip install selab-sdk - JavaScript/Node.js:
npm install @selab/sdk - Java: Maven/Gradle available
- C#/.NET: NuGet package available
Python Example
from selab import SELabClient
client = SELabClient(api_key="YOUR_API_KEY")
# Create a project
project = client.projects.create(
name="My Project",
domain="aerospace"
)
# List requirements
requirements = client.requirements.list(project.id)
JavaScript Example
const { SELabClient } = require('@selab/sdk');
const client = new SELabClient({
apiKey: 'YOUR_API_KEY',
});
// Create a project
const project = await client.projects.create({
name: 'My Project',
domain: 'aerospace',
});
// List requirements
const requirements = await client.requirements.list(project.id);
Webhooks
Subscribe to events in your projects:
POST /webhooks
Supported events:
project.createdmodel.updatedrequirement.createddocument.generated