Slow
Unlimited background search, free on paid plans.
`POST https://api.keirolabs.cloud/api/v2/search/slow`
Cost: Free on paid plans · Latency: Varies with load
Long-form search for agentic and bulk workloads where an immediate answer is not required. Free and unlimited for paying customers, subject to our fair use policy.
**When to use it.** Use Slow for long-form, agentic, or bulk work where latency does not matter: enrichment passes, scheduled research jobs, background processing, dataset building. It is free and unlimited for paying customers (fair use policy applies), so it is the right default for anything that can wait rather than spending credits on Search.
**When not to.** Don't use Slow on interactive or latency-sensitive paths, where response times vary with load. Use Search for a sub-second SERP, or Search + Content when you need page text.
## Request
**cURL**
```bash
curl -X POST https://api.keirolabs.cloud/api/v2/search/slow \
-H "Authorization: Bearer $KEIRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "companies hiring rust engineers in berlin"}'
```
**Python**
```python
import os, requests
res = requests.post(
"https://api.keirolabs.cloud/api/v2/search/slow",
headers={"Authorization": f"Bearer {os.environ['KEIRO_API_KEY']}"},
json={
"query": "companies hiring rust engineers in berlin"
},
)
print(res.json())
```
**Node.js**
```js
const res = await fetch("https://api.keirolabs.cloud/api/v2/search/slow", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.KEIRO_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"query": "companies hiring rust engineers in berlin"
}),
});
console.log(await res.json());
```
## Parameters
| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string | yes | The search query (1-500 chars). |
## Response
```json title="200 OK"
{
"query": "solid state battery progress 2026",
"results": [
{
"title": "Solid-state batteries: 2026 progress report",
"url": "https://example.com/solid-state-2026",
"snippet": "Manufacturers reported pilot-line yields above 80% for the first time this year\u2026",
"position": 1
}
],
"count": 1,
"creditsCharged": 0,
"creditsRemaining": 1141
}
```
| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `results` | array | no | List of search results. |
| `results[].title` | string | no | Page title. |
| `results[].url` | string | no | Full URL of the result. |
| `results[].snippet` | string | no | Short text excerpt. May be empty when none is available. |
| `results[].position` | integer | no | Rank position (1 = top result). |
| `count` | integer | no | Number of results returned. |
| `creditsCharged` | number | no | Always 0 — Slow is free and unlimited for paying customers (fair use policy applies). |
| `creditsRemaining` | number | no | Your remaining credit balance (unchanged by this request). |
## Errors
| Status | Code | Cause | Fix |
| --- | --- | --- | --- |
| `400` | `VALIDATION_ERROR` | Missing query, or query longer than 500 characters | Send a non-empty query string of 1-500 chars. |
| `401` | `UNAUTHORIZED` | Missing or invalid API key | Check your Authorization: Bearer header. |
| `403` | `PLAN_UPGRADE_REQUIRED` | Slow is free and unlimited for paying customers — it is not available on the free plan | Upgrade to any paid plan at /dashboard/billing. |
| `502` | `SEARCH_UNAVAILABLE` | Search backend unreachable | Nothing was charged. Retry with exponential backoff. |
| `503` | `SERVICE_BUSY` | High demand | Nothing was charged. Wait for Retry-After seconds, then retry. |
## Rate limits
| Tier | Limit |
| --- | --- |
| Free | Not available |
| Starter | 30/min |
| Pro | 60/min |
| Startup | 120/min |
| Enterprise | 240/min |
Over the limit you get a `429`. See [Rate limits](/rate-limits) for headers and backoff.https://api.keirolabs.cloud/api/v2/search/slowLong-form search for agentic and bulk workloads where an immediate answer is not required. Free and unlimited for paying customers, subject to our fair use policy.
When to use it. Use Slow for long-form, agentic, or bulk work where latency does not matter: enrichment passes, scheduled research jobs, background processing, dataset building. It is free and unlimited for paying customers (fair use policy applies), so it is the right default for anything that can wait rather than spending credits on Search.
When not to. Don't use Slow on interactive or latency-sensitive paths, where response times vary with load. Use Search for a sub-second SERP, or Search + Content when you need page text.
Request
curl -X POST https://api.keirolabs.cloud/api/v2/search/slow \
-H "Authorization: Bearer $KEIRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "companies hiring rust engineers in berlin"}'Parameters
Prop
Type
Response
{
"query": "solid state battery progress 2026",
"results": [
{
"title": "Solid-state batteries: 2026 progress report",
"url": "https://example.com/solid-state-2026",
"snippet": "Manufacturers reported pilot-line yields above 80% for the first time this year\u2026",
"position": 1
}
],
"count": 1,
"creditsCharged": 0,
"creditsRemaining": 1141
}Prop
Type
Errors
| Status | Code | Cause | Fix |
|---|---|---|---|
400 | VALIDATION_ERROR | Missing query, or query longer than 500 characters | Send a non-empty query string of 1-500 chars. |
401 | UNAUTHORIZED | Missing or invalid API key | Check your Authorization: Bearer header. |
403 | PLAN_UPGRADE_REQUIRED | Slow is free and unlimited for paying customers — it is not available on the free plan | Upgrade to any paid plan at /dashboard/billing. |
502 | SEARCH_UNAVAILABLE | Search backend unreachable | Nothing was charged. Retry with exponential backoff. |
503 | SERVICE_BUSY | High demand | Nothing was charged. Wait for Retry-After seconds, then retry. |
Rate limits
| Tier | Limit |
|---|---|
| Free | Not available |
| Starter | 30/min |
| Pro | 60/min |
| Startup | 120/min |
| Enterprise | 240/min |
Over the limit you get a 429. See Rate limits for headers and backoff.
Paste one prompt into Claude Code, Cursor, Codex or Windsurf. It installs Keiro MCP, reads these docs and writes the integration against the real API.