API Overview
Zamski provides a comprehensive API that allows you to integrate our platform with your existing tools and workflows. This guide provides an overview of the API and how to get started.
API Basics
Authentication
All API requests require authentication using an API key:
curl -X GET "https://api.zamski.com/v1/projects" \
-H "Authorization: Bearer YOUR_API_KEY"
To get an API key:
- Navigate to Settings > API Keys in the Zamski dashboard
- Click Create API Key
- Name your key and select the appropriate permission scope
- Store the key securely — it will only be shown once
Base URL
All API endpoints use the following base URL:
https://api.zamski.com/v1
Response Format
All responses are returned in JSON format:
{
"data": {
// Response data here
},
"meta": {
// Metadata about the response
"requestId": "req_123abc",
"timestamp": "2025-05-04T12:30:45Z"
}
}
Error Handling
Errors return appropriate HTTP status codes and detailed error messages:
{
"error": {
"code": "invalid_request",
"message": "The request was invalid",
"details": "Project ID is required",
"requestId": "req_123abc"
}
}
API Resources
Projects
Manage projects in your Zamski organization:
GET /projects
- List all projectsGET /projects/{id}
- Get details for a specific projectPOST /projects
- Create a new projectPUT /projects/{id}
- Update an existing projectDELETE /projects/{id}
- Delete a project
Teams
Manage teams within your organization:
GET /teams
- List all teamsGET /teams/{id}
- Get details for a specific teamPOST /teams
- Create a new teamPUT /teams/{id}
- Update a teamDELETE /teams/{id}
- Delete a team
Users
Manage users within your organization:
GET /users
- List all usersGET /users/{id}
- Get details for a specific userPOST /users/invite
- Invite a new userPUT /users/{id}
- Update a user's settingsDELETE /users/{id}
- Remove a user
PRD Analysis
Interact with the PRD Analysis feature:
POST /prd-analysis
- Upload and analyze a PRDGET /prd-analysis/{id}
- Get analysis resultsGET /prd-analysis/{id}/annotations
- Get document annotationsGET /prd-analysis/{id}/technical
- Get technical analysis
Sprint Simulation
Work with the Sprint Simulator:
POST /simulations
- Create a new simulationGET /simulations/{id}
- Get simulation resultsPOST /simulations/{id}/run
- Run or re-run a simulationGET /simulations/{id}/scenarios
- Get simulation scenarios
Metrics
Access metrics and analytics data:
GET /metrics/sprint/{id}
- Get sprint metricsGET /metrics/team/{id}
- Get team performance metricsGET /metrics/project/{id}
- Get project metricsGET /metrics/custom
- Get custom metrics
Webhooks
Zamski supports webhooks to notify your systems when events occur:
Setting Up Webhooks
- Navigate to Settings > Webhooks in the Zamski dashboard
- Click Add Webhook
- Enter the webhook URL
- Select the events you want to subscribe to
- Click Create Webhook
Available Events
project.created
- A new project is createdprd.analyzed
- A PRD analysis is completesimulation.completed
- A sprint simulation is completesprint.started
- A sprint has startedsprint.completed
- A sprint has completed
Webhook Format
Webhook payloads are sent as JSON:
{
"event": "prd.analyzed",
"timestamp": "2025-05-04T12:30:45Z",
"data": {
"id": "prd_123abc",
"name": "User Authentication PRD",
"status": "completed",
"url": "https://app.zamski.com/prd/prd_123abc"
}
}
Rate Limits
API requests are subject to rate limiting:
- Free tier: 100 requests per minute
- Pro tier: 500 requests per minute
- Enterprise tier: 2000 requests per minute
The rate limit headers are included in all responses:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 498
X-RateLimit-Reset: 1620123600
SDKs and Client Libraries
Zamski offers client libraries for popular languages:
JavaScript Example
import { ZamskiClient } from '@zamski/client';
const client = new ZamskiClient('YOUR_API_KEY');
async function listProjects() {
const projects = await client.projects.list();
console.log(projects);
}
listProjects();
Python Example
from zamski import ZamskiClient
client = ZamskiClient('YOUR_API_KEY')
projects = client.projects.list()
print(projects)
Best Practices
- Store API keys securely: Never expose your API keys in client-side code
- Handle rate limits gracefully: Implement backoff strategies for rate limits
- Validate input: Always validate input before making API calls
- Use webhooks for events: Use webhooks rather than polling for changes
- Monitor usage: Keep track of your API usage to avoid hitting limits
Next Steps
- Explore the detailed API reference
- Learn about authentication and security
- Check out the webhooks guide
- See integration examples