ModernSaaS API
Build powerful integrations with our REST API. Complete documentation, code examples, and authentication guides.
Authentication
Secure your API requests
All API requests must include an authentication header. We support API key authentication via Bearer tokens.
API Key Authentication
Include your API key in the Authorization header of every request:
Authorization: Bearer YOUR_API_KEY Getting Your API Key
- 1 Log in to your ModernSaaS dashboard
- 2 Navigate to Settings → API Keys
- 3 Click "Generate New Key"
- 4 Copy and store your key securely (it won't be shown again)
Quick Start
Copy-paste ready code examples in your favorite language
curl -X GET "https://api.modernsaas.dev/v1/users" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
const response = await fetch('https://api.modernsaas.dev/v1/users', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
});
const data = await response.json();
console.log(data);
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
}
response = requests.get('https://api.modernsaas.dev/v1/users', headers=headers)
data = response.json()
print(data)
require 'net/http'
require 'json'
uri = URI('https://api.modernsaas.dev/v1/users')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer YOUR_API_KEY'
req['Content-Type'] = 'application/json'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(req)
end
puts JSON.parse(res.body)
Endpoints
REST API reference for user management
/v1/users Bearer Token List all users in your organization
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | Optional | Number of results to return (max 100) |
| cursor | string | Optional | Pagination cursor for next page |
Response
{
"data": [
{
"id": "usr_123456789",
"email": "user@example.com",
"name": "John Doe",
"role": "admin",
"created_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"has_more": true,
"next_cursor": "eyJpZCI6MTIzfQ=="
}
}
/v1/users Bearer Token Create a new user in your organization
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| string | Required | User email address | |
| name | string | Required | User full name |
| role | string | Optional | User role (admin, member, guest) |
Response
{
"id": "usr_987654321",
"email": "newuser@example.com",
"name": "Jane Smith",
"role": "member",
"created_at": "2024-06-20T14:45:00Z",
"status": "active"
}
/v1/users/{id} Bearer Token Retrieve a specific user by ID
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | User ID |
Response
{
"id": "usr_123456789",
"email": "user@example.com",
"name": "John Doe",
"role": "admin",
"created_at": "2024-01-15T10:30:00Z",
"last_login": "2024-06-20T09:00:00Z",
"preferences": {
"timezone": "America/New_York",
"notifications": true
}
}
/v1/users/{id} Bearer Token Update an existing user
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | User ID |
| name | string | Optional | User full name |
| role | string | Optional | User role |
Response
{
"id": "usr_123456789",
"email": "user@example.com",
"name": "John Doe Jr.",
"role": "member",
"updated_at": "2024-06-20T15:30:00Z"
}
/v1/users/{id} Bearer Token Delete a user from your organization
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | User ID |
Response
{
"id": "usr_123456789",
"deleted": true,
"deleted_at": "2024-06-20T16:00:00Z"
}
Rate Limiting
Understand our rate limits and best practices
To ensure fair usage and platform stability, API requests are rate-limited based on your plan. Rate limits are enforced per API key.
Free
requests/minute
Starter
requests/minute
Pro
requests/minute
Enterprise
requests/minute
Rate Limit Headers
Every API response includes headers indicating your current rate limit status:
X-RateLimit-Limit Maximum requests allowed per window X-RateLimit-Remaining Requests remaining in current window X-RateLimit-Reset Unix timestamp when the window resets Error Handling
HTTP status codes and error responses
| Code | Name | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | Invalid request parameters |
| 401 | Unauthorized | Invalid or missing API key |
| 403 | Forbidden | Insufficient permissions |
| 404 | Not Found | Resource does not exist |
| 429 | Rate Limited | Too many requests |
| 500 | Server Error | Internal server error |
Error Response Format
{
"error": {
"code": "invalid_request",
"message": "The request is missing required parameters",
"details": [
{
"field": "email",
"message": "Email is required"
}
],
"request_id": "req_abc123xyz"
}
} Webhooks
Receive real-time event notifications
Webhooks allow you to receive real-time HTTP notifications when events occur in your ModernSaaS account. Instead of polling our API, webhooks push data to your endpoint as events happen.
Supported Events
-
user.created- New user created -
user.updated- User information updated user.deleted- User deleted-
workspace.created- New workspace created -
billing.payment_succeeded- Payment processed
Security
- Webhook signatures for verification
- HTTPS endpoints required
- Automatic retries for failed deliveries
- IP allowlisting available
- Payload encryption support
{
"id": "evt_1234567890",
"object": "event",
"type": "user.created",
"created": 1718901234,
"data": {
"id": "usr_987654321",
"email": "user@example.com",
"name": "John Doe",
"created_at": "2024-06-20T14:45:00Z"
}
} Build Your Own Integration
Can't find what you need? Our comprehensive REST and GraphQL APIs let you build custom integrations.