cURL
curl https://api.neuraldraft.io/v1/jobs/job_2Ngd9KqLmRpW \
-H "Authorization: Bearer ndsk_live_yourkey"const job = await nd.jobs.get("job_2Ngd9KqLmRpW");
// or wait until terminal:
const finished = await nd.jobs.wait("job_2Ngd9KqLmRpW");
job = requests.get("https://api.neuraldraft.io/v1/jobs/job_2Ngd9KqLmRpW",
headers={"Authorization": f"Bearer {key}"}).json()
<?php
$job = json_decode((string) $client->get('jobs/job_2Ngd9KqLmRpW', [
'headers' => ['Authorization' => 'Bearer '.$key],
])->getBody(), true);
{
"id": "job_2Ngd9KqLmRpW",
"type": "blog_post.generate",
"status": "processing",
"progress": 64,
"message": "Translating to French",
"steps": [
{
"name": "research",
"completed": true,
"active": false
},
{
"name": "write",
"completed": true,
"active": false
},
{
"name": "image",
"completed": true,
"active": false
},
{
"name": "translate",
"completed": false,
"active": true
},
{
"name": "seo",
"completed": false,
"active": false
}
],
"created_at": "2026-04-19T10:14:02Z",
"updated_at": "2026-04-19T10:18:42Z"
}Jobs
Get job status
Returns the current state of an async job. Poll this endpoint, or use
the SSE stream at /jobs/{id}/stream for live updates.
Read-only. Does not consume credits.
GET
/
jobs
/
{id}
cURL
curl https://api.neuraldraft.io/v1/jobs/job_2Ngd9KqLmRpW \
-H "Authorization: Bearer ndsk_live_yourkey"const job = await nd.jobs.get("job_2Ngd9KqLmRpW");
// or wait until terminal:
const finished = await nd.jobs.wait("job_2Ngd9KqLmRpW");
job = requests.get("https://api.neuraldraft.io/v1/jobs/job_2Ngd9KqLmRpW",
headers={"Authorization": f"Bearer {key}"}).json()
<?php
$job = json_decode((string) $client->get('jobs/job_2Ngd9KqLmRpW', [
'headers' => ['Authorization' => 'Bearer '.$key],
])->getBody(), true);
{
"id": "job_2Ngd9KqLmRpW",
"type": "blog_post.generate",
"status": "processing",
"progress": 64,
"message": "Translating to French",
"steps": [
{
"name": "research",
"completed": true,
"active": false
},
{
"name": "write",
"completed": true,
"active": false
},
{
"name": "image",
"completed": true,
"active": false
},
{
"name": "translate",
"completed": false,
"active": true
},
{
"name": "seo",
"completed": false,
"active": false
}
],
"created_at": "2026-04-19T10:14:02Z",
"updated_at": "2026-04-19T10:18:42Z"
}Authorizations
Project API key. Pass as Authorization: Bearer ndsk_live_.... Manage
keys via /projects/me/api-keys. Test-mode keys use
the ndsk_test_ prefix.
Path Parameters
Example:
"job_2Ngd9KqLmRpW"
Response
The job.
Example:
"job_2Ngd9KqLmRpW"
Available options:
blog_post.generate, social_post.generate, image.generate, translation.batch, content_plan.generate, website.generate Available options:
pending, processing, completed, failed, cancelled Required range:
0 <= x <= 100Show child attributes
Show child attributes
Result payload when status is completed. Shape depends on type:
blog_post.generate→{ post_id, slug, title }social_post.generate→{ social_post_id, title, platforms }image.generate→{ url, key, width, height }translation.batch→{ keys_translated: int, locales: [string] }
Show child attributes
Show child attributes