Wait for a slow job
POST
https://seolyticize.com /api/v1/tools/wait_for_job get_job that waits: holds the call open until the job finishes or timeoutSeconds pass (at most 60), then answers with its status, so an agent makes one call instead of polling. Call again while it says running. Answers 'wait for the crawl'. Free.
Parameters
Idempotency-KeystringheaderAny unique string, up to 200 characters. A retry with the same key and body is answered from the first answer (Idempotent-Replayed: true) for a day, so it never buys or writes twice; the same key with another body is refused.
Request body
application/json
clientIdstringrequiredjobIdstringrequiredtimeoutSecondsinteger{
"clientId": "string",
"jobId": "string",
"timeoutSeconds": 30
}Code samples
cURL
curl -X POST "https://seolyticize.com/api/v1/tools/wait_for_job" \
-H "Authorization: Bearer $SEOLYTICIZE_API_KEY" \
-H "Idempotency-Key: <value>" \
-H "Content-Type: application/json" \
-d '{"clientId":"string","jobId":"string","timeoutSeconds":30}'TypeScript
Python
Go
PHP
Ruby
Java
Responses
200 The tool's result under
data, and its meta.Example
{
"data": {},
"meta": {
"requestId": "string",
"costMicros": 0,
"cached": true,
"cachedFrom": "string",
"dataAsOf": "string",
"sources": [
"string"
],
"partial": true,
"next": [
{
"tool": "string",
"args": {},
"why": "string"
}
],
"nextCursor": "string",
"dryRun": true
}
}Schema
datarequiredmetaobjectrequiredBeside every answer: what it cost, whether it came from cache, how fresh it is, whether it is complete, and what to call next.
Show child parameters
requestIdstringrequiredcostMicrosintegerrequiredCharged by this call, micro-USD (1,000,000 = $1).
cachedbooleanrequiredTrue when nothing was bought.
cachedFromstringWhen the oldest cached answer used was bought.
dataAsOfstringsourcesstring[]partialbooleanrequiredTrue when the data is incomplete: a running crawl, unfinished days, unread pages.
nextobject[]requiredShow child parameters
toolstringargsobjectwhystringnextCursorstringPass as cursor for the next page.
dryRunbooleanHeaders
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
X-Request-IdstringThe id to quote about this request.
400 The body was not JSON or did not match the tool's input schema.
Example
{
"error": "string",
"code": "string",
"next": "string",
"requestId": "string"
}Schema
errorstringrequiredA sentence written for the caller. Internal failures are reduced to 'The request could not be completed.' and never carry detail.
codestringA stable snake_case reason to branch on; GET /api/v1/errors lists them all.
nextstringThe call or step that fixes it, when there is one.
requestIdstringQuote it when asking about a failure.
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
401 No key, or a key that is unknown or revoked.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
WWW-Authenticatestring403 The key's role does not permit the tool, or the key may not reach the named client.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
404 No tool by that name.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
409 A request with this Idempotency-Key is still running.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
422 A well-formed request the product declined, with the reason — a duplicate name, a plan limit, nothing configured to run.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
429 This key has used its window.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
Retry-AfterintegerSeconds to wait before retrying.
500 The request could not be completed.
Same as 400 · POST /api/v1/tools/wait_for_job
Headers
X-RateLimit-LimitintegerRequests this key may make per window.
X-RateLimit-RemainingintegerRequests left in the current window.
X-RateLimit-ResetintegerSeconds until the current window resets.
Updated