https://easyf.appBuild downloads with EasyF
EasyF shows the interface in advance so developers can estimate their work. A support review is still required before a live key and usage boundary exist.
Quick start
To explain API host, EasyF separates support-activated credentials from an assigned tenant endpoint. A plain-language workflow gives a server-only call path its own place.
X-API-Key: pending_activation_…EasyfClientv1# Available only after support activation
export EASYF_SERVICE_KEY="issued-after-review"
curl -X POST https://easyf.app/v1/resolve \
-H "X-API-Key: $EASYF_SERVICE_KEY" \
-H "Content-Type: application/json" \
-d '{"asset_url":"https://www.youtube.com/watch?v=VIDEO_ID"}'Credential safety starts with server-side secret storage on EasyF. The next view covers no client bundle embedding. The page keeps no public logs or repositories visible.
Resolve a link
To explain Resolve operation, EasyF separates source detection from formats from one submitted URL. A plain-language workflow gives no invented outputs its own place.
/v1/resolveScope: resolve| Field | Type | Required | Description |
|---|---|---|---|
asset_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
}Format identifier starts with the returned value unchanged on EasyF. The next view covers per-link availability. The page keeps no guessed quality label visible.
Create and follow a download job
EasyF presents three practical points for Job creation. First comes asynchronous preparation. The plain-language workflow then covers a short HTTP request. Its final point is bounded worker execution.
/v1/jobsScope: jobs| Field | Type | Required | Description |
|---|---|---|---|
asset_url | HTTPS URL | Yes | The same normalized source submitted to resolve. |
variant_code | string | Yes | An exact ID from the resolve response. |
tenant | string | No | Assigned tenant domain. Usually omitted. |
curl -X POST https://easyf.app/v1/jobs \
-H "X-API-Key: $EASYF_SERVICE_KEY" \
-H "Content-Type: application/json" \
-d '{"asset_url":"https://www.youtube.com/watch?v=VIDEO_ID","variant_code":"18"}'delivery_id.GET /v1/jobs/{delivery_id} 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://easyf.app/v1/jobs/DELIVERY_ID \
-H "X-API-Key: $EASYF_SERVICE_KEY"EasyF approaches Job polling through one-second initial wait, then capped backoff. The plain-language workflow keeps temporary signed delivery explicit.
Predictable errors
EasyF organizes Error contract around one non-2xx envelope. Its plain-language workflow compares a support request ID. Predictable client handling remains the final check.
{
"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
EasyF agrees practical usage bounds with each approved product to preserve a predictable guided workflow.
- 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.
To explain Schema access, EasyF separates activation before exploration from assigned authentication. A plain-language workflow gives documented request shapes its own place.
Activate through support
Tell EasyF what you are building, how often it will call the API and which providers matter. The review decides the permitted operations, then reveals a credential once while saving only its secure digest.
Request activation Keys are tenant-scoped, revocable and issued through the Contact form. Anonymous scripts cannot execute downloader work.