GET Catalog Details
Fetch a single catalog entry along with all of its actions
GET
https://api.anakin.io/v1/holocron/catalog/{slug}Returns the catalog entry for a single website plus every visible action it exposes. This is the canonical way to discover an action's action_id, parameter schema, mode (async / sync), and credit cost before calling POST /v1/holocron/task.
Requires an X-API-Key. Returns public actions plus any private actions you own.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
slug required | string | Catalog slug (e.g. airbnb, linkedin). Get slugs from GET /v1/holocron/catalog |
Response
200 OK{
"catalog": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"slug": "airbnb",
"name": "Airbnb",
"url": "https://www.airbnb.com",
"domain": "airbnb.com",
"category": "travel",
"description": "Search listings, fetch reviews, and pull host details.",
"logo_url": "https://cdn.anakin.io/logos/airbnb.png",
"auth_required": false,
"auth_types": [],
"status": "active",
"created_at": "2026-02-01T00:00:00Z",
"updated_at": "2026-04-20T12:00:00Z",
"action_count": 4
},
"actions": [
{
"id": "f1e2d3c4-b5a6-7890-1234-56789abcdef0",
"action_id": "ab_search_listings",
"catalog_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Search Listings",
"description": "Search Airbnb listings by query, dates, and guest count.",
"tags": ["search", "listings"],
"type": "scrape",
"mode": "async",
"auth_mode": "none",
"auth_required": false,
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Location query, e.g. 'pacific heights'" },
"checkin": { "type": "string", "description": "ISO date" },
"checkout": { "type": "string", "description": "ISO date" },
"adults": { "type": "integer" },
"children": { "type": "integer" },
"infants": { "type": "integer" },
"pets": { "type": "integer" },
"cursor": { "type": "string", "description": "Pagination cursor from previous response" },
"currency": { "type": "string" },
"locale": { "type": "string" }
},
"required": ["query"]
},
"credits_per_call": 1,
"wheel_version": "0.4.2",
"status": "active",
"created_at": "2026-02-01T00:00:00Z",
"updated_at": "2026-04-20T12:00:00Z"
}
]
}Catalog fields
See GET /v1/holocron/catalog — the catalog object on this endpoint matches the same CatalogEntry shape.
Action fields
| Field | Type | Description |
|---|---|---|
actions[].action_id | string | Pass this as action_id when calling POST /v1/holocron/task |
actions[].name | string | Display name |
actions[].description | string | null | Short summary |
actions[].tags | string[] | Free-form tags for filtering / discovery |
actions[].type | string | Action category (e.g. scrape, extract) |
actions[].mode | string | async (returns job_id, poll for results) or sync (returns data inline) |
actions[].auth_mode | string | "none" | "optional" | "required". required ⇒ credential_id mandatory; optional ⇒ credential_id honored if supplied; none ⇒ credentials are ignored |
actions[].auth_required | boolean | Deprecated legacy mirror — true iff auth_mode === "required". Prefer reading auth_mode |
actions[].parameters | object | JSON Schema describing the params accepted by POST /v1/holocron/task |
actions[].credits_per_call | integer | Base credit cost. Some actions use a CEL expression in action_config.credit_expression to compute final cost from the response — final cost is reflected on the job record |
actions[].wheel_version | string | null | Build version of the underlying scraper |
actions[].status | string | active or pending_review |
actions[].owner_user_id | string | null | Set when this is a private action you built via build-request |
Only actions visible to the requesting user are returned. Private actions belonging to other users are filtered out server-side.
Error Responses
Catalog not found — 404 Not Found
{
"status": "error",
"error": { "code": "NOT_FOUND", "message": "Catalog entry not found" }
}Code Examples
curl https://api.anakin.io/v1/holocron/catalog/airbnb \
-H "X-API-Key: your_api_key"import requests
response = requests.get(
'https://api.anakin.io/v1/holocron/catalog/airbnb',
headers={'X-API-Key': 'your_api_key'}
)
data = response.json()
print(f"Catalog: {data['catalog']['name']}")
for action in data['actions']:
print(f" {action['action_id']:30} {action['credits_per_call']} cr {action['name']}")const response = await fetch('https://api.anakin.io/v1/holocron/catalog/airbnb', {
headers: { 'X-API-Key': 'your_api_key' }
});
const { catalog, actions } = await response.json();
console.log(`Catalog: ${catalog.name}`);
for (const action of actions) {
console.log(` ${action.action_id.padEnd(30)} ${action.credits_per_call} cr ${action.name}`);
}Rate Limit
60 requests per minute per IP.