https://easyt.ioBuild downloads with EasyT
This EasyT reference is an implementation guide rather than an active anonymous endpoint. Production access begins only after support approves the client and assigns limits.
Quick start
API host begins with support-activated credentials on EasyT. This guided check then presents an assigned tenant endpoint. The final fact is a server-only call path.
X-API-Key: pending_activation_…EasytWorkspacev1# Available only after support activation
export EASYT_WORKSPACE_TOKEN="issued-after-review"
curl -X POST https://easyt.io/v1/resolve \
-H "X-API-Key: $EASYT_WORKSPACE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"input_url":"https://www.youtube.com/watch?v=VIDEO_ID"}'In EasyT, server-side secret storage comes first when explaining Credential safety. That guided check follows with no client bundle embedding and closes on no public logs or repositories.
Resolve a link
Resolve operation begins with source detection on EasyT. This guided check then presents formats from one submitted URL. The final fact is no invented outputs.
/v1/resolveScope: resolve| Field | Type | Required | Description |
|---|---|---|---|
input_url | 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
}In EasyT, the returned value unchanged comes first when explaining Format identifier. That guided check follows with per-link availability and closes on no guessed quality label.
Create and follow a download job
Asynchronous preparation is the starting point for Job creation on EasyT. A guided check then presents a short HTTP request and explains bounded worker execution.
/v1/jobsScope: jobs| Field | Type | Required | Description |
|---|---|---|---|
input_url | HTTPS URL | Yes | The same normalized source submitted to resolve. |
stream_choice | string | Yes | An exact ID from the resolve response. |
tenant | string | No | Assigned tenant domain. Usually omitted. |
curl -X POST https://easyt.io/v1/jobs \
-H "X-API-Key: $EASYT_WORKSPACE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"input_url":"https://www.youtube.com/watch?v=VIDEO_ID","stream_choice":"18"}'workspace_job.GET /v1/jobs/{workspace_job} 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://easyt.io/v1/jobs/WORKSPACE_JOB \
-H "X-API-Key: $EASYT_WORKSPACE_TOKEN"For Job polling, EasyT begins with one-second initial wait. Its guided check pairs that with capped backoff and ends with temporary signed delivery.
Predictable errors
EasyT makes Error contract easy to scan. The page starts with one non-2xx envelope, moves to a support request ID, and clearly states predictable client handling.
{
"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
EasyT selects an operating allowance during review, balancing the application's needs with provider health.
- 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.
Schema access begins with activation before exploration on EasyT. This guided check then presents assigned authentication. The final fact is documented request shapes.
Activate through support
Include the client purpose, expected monthly workload and requested networks in the activation note. EasyT can then choose resolve and job scopes correctly before producing a one-view secret.
Request activation Keys are tenant-scoped, revocable and issued through the Contact form. Anonymous scripts cannot execute downloader work.