cite.me.in API
Monitor your brand's visibility in AI-generated responses. Authenticate with your API key from the profile page. See the documentation for more information.
Authentication
All endpoints require a Bearer token in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Retrieve your API key from your profile page.
GET /api/me/{email}
Gets the details of the current user. Includes all the sites they have access to. You can only use this endpoint with your own email address.
Path Parameters
| Parameter | Type | Description |
|---|
email | string | The email address of the user to get details for |
Response: 200
| Field | Type | Example |
|---|
email | string | user@example.com |
sites | object[] | [] |
Status Codes
| Code | Meaning |
|---|
| 200 | User details with sites |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — API key does not have access to this user |
| 404 | User not found |
Example
const response = await fetch("https://citeup.vercel.app//api/me/{email}", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await response.json();
GET /api/sites/{domain}
Gets the details of a site you have access to, and lists all the users with access to that site and their roles.
Path Parameters
| Parameter | Type | Description |
|---|
domain | string | |
Response: 200
| Field | Type | Example |
|---|
domain | string | example.com |
createdAt | string | 2024-01-01 |
users | SiteUser[] | |
users[].email | string | user@example.com |
users[].role | `"owner" | "member"` |
Status Codes
| Code | Meaning |
|---|
| 200 | Site details with users |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — API key does not have access to this site |
| 404 | Site not found |
Example
const response = await fetch("https://citeup.vercel.app//api/sites/example.com", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await response.json();
GET /api/sites/{domain}/runs
Lists up to 100 citation runs for a site, newest first. Use ?since=<ISO date> to filter. The date filter is optional and defaults to the last 30 days. For each platform/model, provides the total number of queries and total number of citations
Path Parameters
| Parameter | Type | Description |
|---|
domain | string | |
Query Parameters
| Parameter | Type | Required | Description |
|---|
since | string | No | Only returns runs created after this ISO 8601 timestamp |
limit | integer | No | The maximum number of runs to return. Defaults to 100. |
Response: 200
| Field | Type | Example |
|---|
runs | RunSummary[] | |
runs[].id | string | clxyz456 |
runs[].platform | string | chatgpt |
runs[].model | string | gpt-4o |
runs[].onDate | string | 2024-01-01 |
runs[].queryCount | integer | 5 |
runs[].citationCount | integer | 12 |
Status Codes
| Code | Meaning |
|---|
| 200 | List of citation runs |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Site not found |
Example
const response = await fetch("https://citeup.vercel.app//api/sites/example.com/runs?since=2024-01-01T00:00:00.000Z", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await response.json();
GET /api/sites/{domain}/runs/{runId}
Gets a single citation run with all its queries. For each query, includes the query text, the group it belongs to, and all the citations for that query.
Path Parameters
| Parameter | Type | Description |
|---|
domain | string | |
runId | string | |
Response: 200
| Field | Type | Example |
|---|
id | string | clxyz456 |
platform | string | chatgpt |
model | string | gpt-4o |
onDate | string | 2024-01-01 |
queries | Query[] | |
queries[].group | string | 1. discovery |
queries[].query | string | What are the best retail platforms? |
queries[].citations | string[] | https://example.com/page1 |
Status Codes
| Code | Meaning |
|---|
| 200 | Run detail with queries and citations |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Run not found |
Example
const response = await fetch("https://citeup.vercel.app//api/sites/example.com/runs/clxyz456", {
headers: { Authorization: "Bearer YOUR_API_KEY" }
});
const data = await response.json();