API Endpoints
API Endpoints
1. Create API Key
Endpoint: POST /api/v1/platform/api-keys
Authentication: Bearer token (user session)
Request Body:
{
"name": "Production Server",
"permissions": ["send_email", "read_analytics", "manage_contacts"]
}
Response (201 Created):
{
"api_key": "pm_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"key_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"permissions": ["send_email", "read_analytics", "manage_contacts"],
"rate_limit": 300,
"created_at": "2025-11-26T10:00:00Z",
"warning": "Store this key securely. It will not be shown again."
}
Error Responses:
-
400 Bad Request- Invalid permissions or missing name -
401 Unauthorized- Invalid or missing bearer token -
403 Forbidden- User lacks API key management permission -
429 Too Many Requests- Rate limit exceeded for key creation
2. List API Keys
Endpoint: GET /api/v1/platform/api-keys
Authentication: Bearer token (user session)
Response (200 OK):
{
"api_keys": [
{
"key_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"masked_key": "pm_live_a1b...o5p6",
"permissions": ["send_email", "read_analytics"],
"rate_limit": 300,
"status": "active",
"created_at": "2025-11-26T10:00:00Z",
"last_used": "2025-11-26T15:30:00Z",
"request_count": 15234,
"error_count": 42
},
{
"key_id": "660e8400-e29b-41d4-a716-446655440001",
"name": "Staging Environment",
"masked_key": "pm_live_b2c...p6q7",
"permissions": ["send_email"],
"rate_limit": 60,
"status": "revoked",
"created_at": "2025-11-20T08:00:00Z",
"last_used": "2025-11-25T12:00:00Z",
"request_count": 5432,
"error_count": 12
}
],
"total": 2
}
3. Get API Key Details
Endpoint: GET /api/v1/platform/api-keys/{key_id}
Authentication: Bearer token (user session)
Response (200 OK):
{
"key_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"masked_key": "pm_live_a1b...o5p6",
"permissions": ["send_email", "read_analytics", "manage_contacts"],
"rate_limit": 300,
"status": "active",
"created_at": "2025-11-26T10:00:00Z",
"last_used": "2025-11-26T15:30:00Z",
"request_count": 15234,
"error_count": 42,
"usage_by_day": [
{ "date": "2025-11-26", "requests": 1234, "errors": 5 },
{ "date": "2025-11-25", "requests": 2345, "errors": 8 }
],
"top_endpoints": [
{ "endpoint": "/api/v1/emails/send", "count": 12000 },
{ "endpoint": "/api/v1/analytics/campaigns", "count": 3234 }
]
}
4. Regenerate API Key
Endpoint: POST /api/v1/platform/api-keys/{key_id}/regenerate
Authentication: Bearer token (user session)
Response (200 OK):
{
"api_key": "pm_live_c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
"key_id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Production Server",
"permissions": ["send_email", "read_analytics", "manage_contacts"],
"rate_limit": 300,
"created_at": "2025-11-26T16:00:00Z",
"warning": "Old key has been revoked. Update your application immediately."
}
5. Revoke API Key
Endpoint: DELETE /api/v1/platform/api-keys/{key_id}
Authentication: Bearer token (user session)
Response (200 OK):
{
"message": "API key revoked successfully",
"key_id": "550e8400-e29b-41d4-a716-446655440000",
"revoked_at": "2025-11-26T16:30:00Z"
}
6. Authenticate with API Key
Endpoint: Any API endpoint
Authentication: Authorization: Bearer {api_key}
Example Request:
curl -X POST https://api.penguinmails.com/api/v1/emails/send \
-H "Authorization: Bearer pm_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6" \
-H "Content-Type: application/json" \
-d '{
"to": "recipient@example.com",
"subject": "Test Email",
"body": "Hello from PenguinMails API"
}'
Error Responses:
-
401 Unauthorized- Invalid or missing API key -
403 Forbidden- API key lacks required permission scope -
429 Too Many Requests- Rate limit exceeded