GET https://api.linkskipper.app/v1/jobs/{job_id} · Any valid API key.POST /v1/resolve returns 202, it gives you a job_id. Poll this
endpoint to track the resolve until it finishes. The job belongs to the API key that
created it — fetching another key’s job returns not_found (404).
Request
Path parameters
The job UUID returned by
POST /v1/resolve. Must be a valid UUID; a malformed id returns
not_found (404).Headers
Bearer sk_live_…. See Authentication.Response
The job UUID.
Present only when
status is done. The resolved destination URL.Present only when
status is done. The provider that owned the link (e.g. ouo).Present only when
status is done. "standard" or "premium".Present only when
status is failed or invalid. resolve_failed for a failed job,
unsupported_link for an invalid one.Credits spent on this job. The successful cost when
done; 0 when failed / invalid.Your current credit balance.
Examples
Responses by status
- done
- queued / running
- failed
- invalid
Job lifecycle
A job moves through these states.queued, running are non-terminal — keep polling.
done, failed, invalid are terminal — stop polling.
| Status | Terminal | Meaning |
|---|---|---|
queued | no | Accepted and waiting for a worker. |
running | no | A worker is resolving the link right now. |
done | yes | Resolved. target_url, provider, tier, credits_charged set. |
failed | yes | The resolver couldn’t resolve it. error is resolve_failed. |
invalid | yes | The link wasn’t a supported/resolvable target. error is unsupported_link. |
Polling guidance
- Poll on a short, fixed interval — 1.5–2 seconds is a good default. Standard links
typically resolve in seconds; premium (
exe.io) links are best-effort and slower. - Stop as soon as
statusisdone,failed, orinvalid. - Set an overall deadline (e.g. 60–120s) so a stuck job doesn’t poll forever.
- Reads count against your per-minute rate limit like any request — don’t poll tighter than ~1s.
- Prefer webhooks for high volume so you don’t poll at all.
The SDKs implement this loop for you.
resolveAndWait (JS / PHP) submits the resolve,
polls until terminal, and returns the resolved link — throwing JobFailedError /
JobFailedException on failed / invalid and TimeoutError / TimeoutException if the
deadline passes. See JavaScript and PHP.