> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xquik.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List your Xquik activity log or export it as a file

> List the account's activity log, newest first, with the Activity page's filters. Get JSON, or the same rows as a CSV, Excel, Markdown, PDF or text file.

**200**

```json theme={null}
[
  {
    "time": "2026-10-28T20:22:13.481Z",
    "category": "monitor_change",
    "type": "pause",
    "activity": "Account monitor for @elonmusk paused",
    "status": "completed"
  }
]
```

**400**

```json theme={null}
{
  "error": "invalid_input",
  "message": "Invalid input. Check the request body."
}
```

**401**

```json theme={null}
{
  "error": "unauthenticated",
  "message": "Authentication required. Provide a valid API key or bearer token."
}
```

**403**

```json theme={null}
{
  "error": "api_key_paused",
  "message": "This API key is paused. Resume it at dashboard.xquik.com/api-keys to use it again."
}
```

**429**

```json theme={null}
{
  "error": "rate_limit_exceeded",
  "message": "Too many requests. Try again later.",
  "retryAfter": 60
}
```

> For the complete documentation index, see [llms.txt](https://docs.xquik.com/llms.txt).

**Free.** This endpoint does not consume credits.

The rows match the dashboard's Activity log. Copy as cURL on that page gives this call with
its filters. A cut list ends with a `notice` row that says where it stopped.

```bash cURL theme={null}
curl "https://xquik.com/api/v1/activity?category=monitors&status=failed&limit=50" \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
```

```javascript Node.js theme={null}
const response = await fetch(
  "https://xquik.com/api/v1/activity?category=monitors&status=failed&limit=50",
  { headers: { "x-api-key": "xq_YOUR_KEY_HERE" } },
);
const rows = await response.json();
process.stdout.write(`${JSON.stringify(rows, null, 2)}\n`);
```

```python Python theme={null}
import requests

response = requests.get(
    "https://xquik.com/api/v1/activity",
    headers={"x-api-key": "xq_YOUR_KEY_HERE"},
    params={"category": "monitors", "status": "failed", "limit": 50},
)
rows = response.json()
print(rows)
```

```go Go theme={null}
package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
)

func main() {
	req, err := http.NewRequest("GET", "https://xquik.com/api/v1/activity?category=monitors&status=failed&limit=50", nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("x-api-key", "xq_YOUR_KEY_HERE")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()
	body, err := io.ReadAll(resp.Body)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(string(body))
}
```

## Download the log as a file

Add `format` to get a file in the same format as every other Xquik export.

| `format` | File |
| - | - |
| `json` | JSON array, the default |
| `csv` | CSV |
| `xlsx` | Excel workbook |
| `md` | Markdown table |
| `md-document` | Markdown document |
| `pdf` | PDF, up to 10,000 rows |
| `txt` | Plain text |

## Headers

**x-api-key** `string` *required*

Your API key with full access. Generate one from the [API Keys page](https://xquik.com).

## Query parameters

**format** `string` (default: json)

Answer format. `json`, `csv`, `xlsx`, `md`, `md-document`, `pdf` or `txt`.

**limit** `number` (default: 100)

Most rows to return, from 1 to 100,000. PDF stops at 10,000 rows.

**category** `string` (default: all)

`all`, `actions`, `extractions`, `monitors`, `webhooks` or `billing`.

**status** `string`

Comma-separated statuses, such as `failed,running`.

**q** `string`

Search text, up to 200 characters.

**since** `string`

Oldest time, ISO 8601.

**until** `string`

Newest time, ISO 8601.

## Response

### 200 OK

An array of rows, newest first. Each row has these fields.

**time** `string`

ISO 8601 time in UTC to the millisecond. Empty on the notice row.

**category** `string`

Kind of activity, such as `write_action`, `extraction` or `monitor_change`.

**type** `string`

Type within the category, such as `like` or `pause`.

**activity** `string`

The row's title, as the Activity log shows it.

**status** `string`

`completed`, `running`, `failed` or `canceled`.

**source** `string`

The account, monitor or key the activity came from.

**target** `string`

The post or account it acted on.

**results** `number | string`

Results, for extractions and giveaways.

**credits** `number | string`

Credits charged, or added for billing rows.

**details** `string`

Extra detail, such as a result ID or an HTTP status.

**id** `string`

Activity ID. For a write action, an extraction or a monitor change, pass it to [Get
activity](https://docs.xquik.com/api-reference/activity/get.md) for the full record.

**link** `string`

Link to the post or profile on X.

### 400 Invalid input

A query parameter has the wrong format. Check the values above.

### 401 Unauthenticated

```json theme={null}
{ "error": "unauthenticated" }
```

Missing or invalid API key. Check the `x-api-key` header value.

### 403 Forbidden

A read-only or scoped key cannot read activity. Use a key with full access.

### 429 Rate limited

```json theme={null}
{
  "error": "rate_limit_exceeded",
  "message": "Too many requests. Try again later.",
  "retryAfter": 1
}
```

Too many requests. Wait for the `Retry-After` header before retrying.

> [!NOTE]
>
> **Related.** [Get activity](https://docs.xquik.com/api-reference/activity/get.md) · [List
> events](https://docs.xquik.com/api-reference/events/list.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.