# Rotate Site API Key **POST /api/v1/sites/{id}/rotate-api-key** Rotate a site's API key (use when the key is compromised). **Authentication**: Required (JWT Bearer token) **Headers**: - `Authorization: JWT {access_token}` **URL Parameters**: | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | id | UUID | Yes | Site ID | **Example Request**: ```bash curl -X POST http://localhost:8000/api/v1/sites/a1b2c3d4-e5f6-7890-abcd-ef1234567890/rotate-api-key \ -H "Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." ``` **Example Response** (200 OK): ```json { "new_api_key": "live_sk_z9y8x7w6v5u4t3s2r1q0p9o8n7m6l5k4j3i2h1g0", "old_key_last_four": "s9t0", "rotated_at": "2024-10-27T15:00:00Z" } ``` **🚨 CRITICAL Notes**: - The `new_api_key` is shown **only once** - save it immediately! - The old API key is **immediately invalidated** - no grace period! - Your WordPress site will stop working until you update the plugin with the new key - Update the WordPress plugin settings **RIGHT NOW** to restore functionality - The rotation happens atomically: - Old key is deleted from the database - New key is inserted into the database - Both operations complete instantly **Error Responses**: This endpoint returns errors in **RFC 9457 (Problem Details for HTTP APIs)** format. **Content-Type**: `application/problem+json` **401 Unauthorized**: ```json { "type": "about:blank", "title": "Unauthorized", "status": 401, "detail": "Authentication required" } ``` **404 Not Found**: ```json { "type": "about:blank", "title": "Not Found", "status": 404, "detail": "Site not found or doesn't belong to your tenant" } ``` **500 Internal Server Error**: ```json { "type": "about:blank", "title": "Internal Server Error", "status": 500, "detail": "Failed to rotate API key" } ```