OverSkill API
Build powerful integrations with the OverSkill platform. Automate app creation, manage users, and receive real-time updates via webhooks.
https://www.overskill.com/api/v1
Authentication
The OverSkill API supports two authentication methods:
API Key Authentication
Include your API key in the X-API-Key header:
curl -H "X-API-Key: os_your_api_key_here" \
https://www.overskill.com/api/v1/managed_apps
OAuth 2.0 Bearer Token
For OAuth integrations (like Zapier), use Bearer token authentication:
curl -H "Authorization: Bearer your_oauth_token" \
https://www.overskill.com/api/v1/managed_apps
⚠️ Keep your API keys secure
Never expose your API key in client-side code. Use environment variables and server-side requests.
Rate Limiting
API requests are rate limited based on your plan:
| Plan | Requests/Minute |
|---|---|
| Free | 60 |
| Pro | 300 |
| Enterprise | 1,000 |
Rate limit headers are included in every response:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1703332800
Error Handling
The API uses standard HTTP status codes and returns errors in a consistent format:
{
"error": "Unauthorized",
"message": "Invalid or expired API key"
}
| Status Code | Description |
|---|---|
200 |
Success |
201 |
Created |
400 |
Bad Request - Invalid parameters |
401 |
Unauthorized - Invalid or missing authentication |
403 |
Forbidden - Insufficient permissions |
404 |
Not Found |
429 |
Too Many Requests - Rate limit exceeded |
500 |
Internal Server Error |
GET List Apps
Returns a paginated list of all apps in your workspace.
Endpoint
GET https://www.overskill.com/api/v1/managed_apps
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page |
integer | Page number (default: 1) |
per_page |
integer | Results per page (max: 100, default: 25) |
status |
string | Filter by status (draft, generating, published) |
name |
string | Filter by name (partial match) |
Response
{
"apps": [
{
"id": "abc123",
"name": "Task Manager",
"status": "published",
"visibility": "public",
"preview_url": "https://preview-abc123.overskill.app",
"production_url": "https://abc123.overskill.app",
"created_at": "2025-12-23T10:00:00Z",
"updated_at": "2025-12-23T12:00:00Z"
}
],
"meta": {
"current_page": 1,
"total_pages": 5,
"total_count": 125,
"per_page": 25
}
}
GET Get App
Retrieve detailed information about a specific app by its ID.
Endpoint
GET https://www.overskill.com/api/v1/managed_apps/:id
Response
{
"app": {
"id": "abc123",
"name": "Task Manager",
"description": "A task management app",
"status": "published",
"visibility": "public",
"ai_model": "claude-sonnet-4-5",
"preview_url": "https://preview-abc123.overskill.app",
"production_url": "https://abc123.overskill.app",
"published_at": "2025-12-23T12:00:00Z",
"creator": {
"id": 42,
"email": "[email protected]"
},
"versions_count": 5,
"files_count": 24,
"users_count": 89,
"urls": {
"editor": "https://overskill.com/account/apps/abc123/edit",
"preview": "https://preview-abc123.overskill.app",
"production": "https://abc123.overskill.app"
},
"created_at": "2025-12-20T10:00:00Z",
"updated_at": "2025-12-23T12:00:00Z"
}
}
POST Create App
Create a new app. Optionally provide a prompt to immediately queue generation.
Endpoint
POST https://www.overskill.com/api/v1/managed_apps
Request Body
{
"name": "My Task Manager",
"prompt": "Create a task management app with projects, tasks, due dates, and team collaboration",
"visibility": "public",
"ai_model": "claude-sonnet-4-5",
"auto_generate": true
}
Response (201 Created)
{
"app": {
"id": "xyz789",
"name": "My Task Manager",
"status": "generating",
"preview_url": null,
"created_at": "2025-12-23T14:00:00Z"
},
"message": "App created and generation queued"
}
POST Deploy App
Trigger a production deployment for an app. The deployment runs asynchronously.
Endpoint
POST https://www.overskill.com/api/v1/managed_apps/:id/deploy
Response (202 Accepted)
{
"deployment_id": 42,
"status": "queued",
"message": "Production deployment queued"
}
POST Queue Generation
Queue a new app generation or edit with a prompt. Receive webhook updates as the generation progresses.
Endpoint
POST https://www.overskill.com/api/v1/generation_queue
Request Body
{
"prompt": "Add a dark mode toggle to the settings page",
"app_id": "abc123",
"callback_url": "https://your-server.com/webhook"
}
Response (202 Accepted)
{
"job_id": "jid_abc123",
"app_id": "abc123",
"message_id": 456,
"status": "queued",
"estimated_time_seconds": 45,
"webhook_events": [
"app.generation.started",
"app.generation.progress",
"app.generation.completed",
"app.generation.failed"
],
"status_url": "https://www.overskill.com/api/v1/generation_queue/jid_abc123"
}
GET Check Generation Status
Check the status of a queued generation job. Poll this endpoint after queuing a generation.
Endpoint
GET https://www.overskill.com/api/v1/generation_queue/:id
Status Values
| Status | Description |
|---|---|
queued | Waiting to start |
processing | Generation in progress |
completed | Successfully finished |
failed | Error occurred |
Response
{
"job_id": "jid_abc123",
"app_id": "abc123",
"status": "processing",
"progress": 65,
"message": "Generating components...",
"started_at": "2025-12-23T12:05:15Z",
"completed_at": null
}
Tip: Poll every 2-3 seconds. Most generations complete in 30-60 seconds.
GET List App Users
List users who have access to your apps. Filter by app, tier, or email.
Endpoint
GET https://www.overskill.com/api/v1/managed_users
Query Parameters
| Parameter | Type | Description |
|---|---|---|
app_id | string | Filter by app |
tier | string | Filter by access tier |
email | string | Search by email (partial match) |
page, per_page | integer | Pagination |
Response
{
"app_users": [
{
"id": 789,
"app_id": "abc123",
"email": "[email protected]",
"access_tier": "pro",
"tier_granted_at": "2025-12-20T10:00:00Z",
"tier_expires_at": "2026-12-20T10:00:00Z",
"revoked": false,
"first_accessed_at": "2025-12-20T10:05:00Z",
"last_accessed_at": "2025-12-23T15:30:00Z",
"access_count": 47
}
],
"meta": { "current_page": 1, "total_pages": 3, "total_count": 64, "per_page": 25 }
}
POST Grant User Access
Grant a user access to an app with a specific access tier.
Endpoint
POST https://www.overskill.com/api/v1/managed_users/grant_access
Request Body
{
"app_id": "abc123",
"email": "[email protected]",
"tier": "pro",
"expires_at": "2026-12-23T00:00:00Z"
}
Access Tiers
| Tier | Description |
|---|---|
free |
Basic access (default) |
basic |
Standard paid tier |
pro |
Professional tier |
premium |
Premium tier |
enterprise |
Enterprise tier |
Response (201 Created)
{
"app_user": {
"id": 789,
"app_id": "abc123",
"email": "[email protected]",
"access_tier": "pro",
"tier_granted_at": "2025-12-23T14:00:00Z",
"tier_expires_at": "2026-12-23T00:00:00Z"
},
"message": "Access granted successfully"
}
POST Revoke User Access
Immediately revoke a user's access to an app.
Endpoint
POST https://www.overskill.com/api/v1/managed_users/:id/revoke
Response
{
"app_user": {
"id": 789,
"app_id": "abc123",
"email": "[email protected]",
"access_tier": "pro",
"revoked": true,
"revoked_at": "2025-12-23T16:00:00Z"
},
"message": "Access revoked"
}
GET List Webhooks
Retrieve all webhook subscriptions configured for your workspace.
Endpoint
GET https://www.overskill.com/api/v1/webhooks
Response
{
"webhooks": [
{
"id": 1,
"url": "https://your-server.com/webhook",
"name": "My Webhook",
"events": ["app.created", "app.generation.completed"],
"enabled": true,
"source": "api",
"created_at": "2025-12-20T10:00:00Z"
}
],
"meta": { "current_page": 1, "total_pages": 1, "total_count": 1, "per_page": 25 }
}
POST Create Webhook
Subscribe to webhook events. Your endpoint will receive POST requests when events occur.
Endpoint
POST https://www.overskill.com/api/v1/webhooks
Request Body
{
"url": "https://your-server.com/overskill-webhook",
"name": "My Integration Webhook",
"events": [
"app.created",
"app.generation.completed",
"app.user.created"
]
}
Available Events
app.created- New app createdapp.updated- App updatedapp.deleted- App deletedapp.generation.started- Generation startedapp.generation.progress- Generation progress updateapp.generation.completed- Generation completedapp.generation.failed- Generation failedapp.deployment.completed- Deployment completedapp.user.created- New user accessed appapp.user.access_granted- User granted accessapp.user.access_revoked- User access revoked
Webhook Signature Verification
Verify webhook authenticity using the X-Overskill-Signature header:
# Header format: t=timestamp,v1=signature
# Verify: HMAC-SHA256(timestamp + "." + payload, signing_secret)
X-Overskill-Signature: t=1703332800,v1=abc123...
GET List API Keys
List all API keys for your workspace. Keys are returned with masked values for security.
Endpoint
GET https://www.overskill.com/api/v1/api_keys
Response
{
"api_keys": [
{
"id": 1,
"name": "Production Key",
"key_prefix": "os_a1b2c3d4e",
"masked_key": "os_a1b2c3d4e...d4e",
"scope": "read_write",
"scope_description": "Read and write access to apps",
"active": true,
"expired": false,
"expires_at": null,
"last_used_at": "2025-12-23T15:00:00Z",
"request_count": 1547,
"created_at": "2025-12-01T10:00:00Z"
}
],
"meta": { "current_page": 1, "total_pages": 1, "total_count": 1, "per_page": 25 }
}
Scope Types
| Scope | Permissions |
|---|---|
read_only | List and view apps, users, analytics |
read_write | Create/update apps, grant/revoke access, queue generation |
full_access | All permissions including delete and admin operations |
POST Create API Key
Generate a new API key. The raw key is returned only once — save it immediately.
Endpoint
POST https://www.overskill.com/api/v1/api_keys
Request Body
{
"name": "Production Key",
"scope": "read_write",
"expires_in_days": 365
}
Response (201 Created)
{
"raw_key": "os_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4",
"api_key": {
"id": 2,
"name": "Production Key",
"key_prefix": "os_a1b2c3d4e",
"scope": "read_write",
"active": true,
"expires_at": "2026-12-23T15:00:00Z",
"created_at": "2025-12-23T15:00:00Z"
},
"warning": "Save this key now! It will not be shown again."
}
⚠️ Important
The raw_key is shown only once. Store it securely — you cannot retrieve it later.
SDKs & Libraries
Coming soon! We're working on official SDKs for popular languages.
Need Help?
Have questions about the API or need help with your integration?