https://savetk.appBuild downloads with SaveTK
SaveTK displays an API plan for creator-tool integrations, but does not accept unauthenticated execution. Approval supplies both the key and its operating limits.
Quick start
SaveTK presents three practical points for API host. First comes support-activated credentials. The saving workflow then covers an assigned tenant endpoint. Its final point is a server-only call path.
X-API-Key: pending_activation_…SaveTkCreatorv1# Available only after support activation
export SAVETK_CREATOR_KEY="issued-after-review"
curl -X POST https://savetk.app/v1/resolve \
-H "X-API-Key: $SAVETK_CREATOR_KEY" \
-H "Content-Type: application/json" \
-d '{"creator_link":"https://www.youtube.com/watch?v=VIDEO_ID"}'SaveTK makes Credential safety easy to scan. The page starts with server-side secret storage, moves to no client bundle embedding, and clearly states no public logs or repositories.
Resolve a link
SaveTK presents three practical points for Resolve operation. First comes source detection. The saving workflow then covers formats from one submitted URL. Its final point is no invented outputs.
/v1/resolveScope: resolve| Field | Type | Required | Description |
|---|---|---|---|
creator_link | HTTPS URL | Yes | Public or authorized media page to analyze. |
tenant | string | No | Assigned tenant domain. Usually omitted. |
{
"success": true,
"platform": "youtube",
"title": "Example video",
"formats": [
{"id":"18","type":"video","quality":"360p","container":"mp4"}
],
"cached": false
}SaveTK makes Format identifier easy to scan. The page starts with the returned value unchanged, moves to per-link availability, and clearly states no guessed quality label.
Create and follow a download job
Job creation begins with asynchronous preparation on SaveTK. This saving workflow then presents a short HTTP request. The final fact is bounded worker execution.
/v1/jobsScope: jobs| Field | Type | Required | Description |
|---|---|---|---|
creator_link | HTTPS URL | Yes | The same normalized source submitted to resolve. |
save_option | string | Yes | An exact ID from the resolve response. |
tenant | string | No | Assigned tenant domain. Usually omitted. |
curl -X POST https://savetk.app/v1/jobs \
-H "X-API-Key: $SAVETK_CREATOR_KEY" \
-H "Content-Type: application/json" \
-d '{"creator_link":"https://www.youtube.com/watch?v=VIDEO_ID","save_option":"18"}'save_task.GET /v1/jobs/{save_task} with the same key.| Status | Meaning | Client action |
|---|---|---|
queued | Admitted to the bounded queue. | Poll again with backoff. |
extracting | Refreshing source metadata or route. | Continue polling. |
processing | Downloading, remuxing or merging. | Display server progress. |
ready | Signed download is available. | Send the URL to the user. |
failed | Terminal structured error. | Read error_code. Retry only when advised. |
expired | Temporary output was removed. | Create a new job. |
curl https://savetk.app/v1/jobs/SAVE_TASK \
-H "X-API-Key: $SAVETK_CREATOR_KEY"SaveTK handles Job polling by first identifying one-second initial wait. It follows with capped backoff and keeps temporary signed delivery in view.
Predictable errors
Error contract starts with one non-2xx envelope on SaveTK. The next view covers a support request ID. The page keeps predictable client handling visible.
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"category": "rate_limited",
"message": "Too many requests. Please try again shortly.",
"retryable": true,
"details": {"retry_after_seconds": 20}
},
"request_id": "…"
}| HTTP | Typical meaning | Action |
|---|---|---|
| 400 | Invalid URL, body or unavailable format. | Correct the request. Resolve again for formats. |
| 401 | Missing, invalid, expired or wrong-scope key. | Check the server-side credential. |
| 403 | Tenant or source policy rejected the request. | Do not bypass the policy. Contact support. |
| 404 | Unknown or expired job. | Create a new job if appropriate. |
| 429 | Request or active-job limit reached. | Honor retry_after_seconds. |
| 503 | Queue/capacity or upstream temporarily unavailable. | Retry with exponential backoff and jitter. |
Operational contract
SaveTK sets creator-workflow allowances after examining expected traffic and the posting platforms in scope.
- Use idempotent application logic and never start duplicate jobs for the same user click.
- Cache resolve metadata briefly, but always treat signed download URLs as expiring.
- Use bounded exponential backoff with jitter for
429,503and retryable errors. - Process only public media or media you are authorized to access. DRM and access controls are not bypassed.
- Keep request IDs and job IDs in private operational logs. Do not log submitted URLs unnecessarily.
SaveTK presents three practical points for Schema access. First comes activation before exploration. The saving workflow then covers assigned authentication. Its final point is documented request shapes.
Activate through support
State what the SaveTK client does, how many calls it expects and which posting services are essential. The support review selects its scopes, then returns a non-recoverable credential shown a single time.
Request activation Keys are tenant-scoped, revocable and issued through the Contact form. Anonymous scripts cannot execute downloader work.