List your projects
Returns the projects of the account behind your API key, with their keywords and the state of their AI agent.
/api/v1/projectsFreeYour projects live in the dashboard; this endpoint makes them readable from the outside. The common use is to pull a project's keywords and target language and hand them to the scan endpoint, instead of copying them into your script again after every change.
Scope comes from the key
Headers
Request headers
| Parameter | Type | Required | Description |
|---|---|---|---|
Authorization | string | Required | Your API key, prefixed with Bearer. A missing, unknown or revoked key returns 401. |
No pagination and no sort to ask for: the Starter plan caps at three projects, and they come back newest first.
Example
curl -s https://subreply.io/api/v1/projects \
-H "Authorization: Bearer sr_live_YOUR_API_KEY"{
"projects": [
{
"id": "9d5d550a-5f41-4762-b3cf-6e6e25bb8121",
"name": "SubReply",
"target_region": "fr",
"keywords": ["prospection reddit", "acquisition", "social selling"],
"ai_agent_enabled": true,
"created_at": "2026-07-03T12:32:55.820434+00:00"
}
]
}const { projects } = await (
await fetch("https://subreply.io/api/v1/projects", {
headers: { Authorization: `Bearer ${process.env.SUBREPLY_API_KEY}` },
})
).json();
const project = projects[0];
const scan = await fetch("https://subreply.io/api/v1/scrape", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.SUBREPLY_API_KEY}`,
},
body: JSON.stringify({
subreddits: ["r/entrepreneur"],
keywords: project.keywords,
// /api/v1/scrape n'accepte que fr et en : toute autre valeur part sans
// filtre de langue plutôt qu'en erreur 400.
target_language: ["fr", "en"].includes(project.target_region)
? project.target_region
: null,
}),
});Response fields
| Field | Type | Description |
|---|---|---|
projects[].id | string | Project identifier (UUID). It is the one the dashboard URL shows. |
projects[].name | string | Project name, exactly as you typed it. |
projects[].target_region | string | Target language of the project: fr, en or nl. An empty string when the project has none, and a free-form value (« France ») for projects created before the language picker. |
projects[].keywords | string[] | Search keywords of the project. They go straight to /api/v1/scrape. |
projects[].ai_agent_enabled | boolean | The AI agent is on for this project: it scans and posts on its own, every day. |
projects[].created_at | string | Creation date of the project, in ISO 8601 format. |
A project's internal fields never leave the server: generated customer profile, watched subreddits, scan cache state. What this page describes is everything the route returns, today and after the product moves on.
Errors
An account without projects is not an error: the route answers 200 with projects: []. A failed read answers 500 — never an empty array, which would let you believe your projects had vanished. The codes are detailed on the error codes page.