> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.coperniq.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.coperniq.io/_mcp/server.

# Technical Details | Coperniq API

> Rate limits, archiving vs. deleting records, and other technical details for building against the Coperniq API.

## Rate limits

* **Per second:** 100 requests per second per API key.
* **Per day:** 5,000 requests per day per API key.
* **Scope:** Counts apply to all endpoints that require the `x-api-key` header; `POST /api-keys` (key generation) is not counted.
* If you exceed a limit, the API returns `429 Too Many Requests`. Reduce request volume or reach out to [support@coperniq.io](mailto:support@coperniq.io) to request a temporary limit increase.

### Rate limit headers

Every authenticated response includes headers so you can track your usage programmatically:

| Header                  | Description                                    | Example |
| ----------------------- | ---------------------------------------------- | ------- |
| `X-RateLimit-Limit`     | Maximum requests allowed in the current period | `5000`  |
| `X-RateLimit-Remaining` | Requests remaining in the current period       | `4832`  |

```http
HTTP/1.1 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4832
```

Use these headers to implement backoff logic in your integration and avoid hitting `429` errors.

> **Note:** `X-RateLimit-Remaining` is an approximate value, not a real-time counter. Usage data from AWS may lag by a few minutes, and the value is cached for up to 60 seconds per API key. Do not rely on it for precise accounting — treat it as a near-term estimate of your remaining quota.

## Archiving records

Most records in Coperniq can be archived instead of permanently deleted. Archiving hides a record from default views while keeping its history and relationships intact — a safer default than `DELETE`, which is often unavailable or irreversible.

To archive a record, use that object's `PATCH` endpoint and set `isActive` to `false`. To restore it, `PATCH` again with `isActive` set to `true`.

```http
PATCH /projects/12345 HTTP/1.1
Host: api.coperniq.io
x-api-key: YOUR_API_KEY
Content-Type: application/json

{
  "isActive": false
}
```

Some resources use `isArchived` instead of `isActive` — check that resource's endpoint reference for its exact field name before assuming.