https://downf.ioBuild downloads with downf.io
DownF keeps API execution disabled until an operator reviews the compatibility use case. The examples describe the planned contract, while real credentials and quotas arrive only through support activation.
Quick start
DownF organizes API host around support-activated credentials. Its compatibility view compares an assigned tenant endpoint. A server-only call path remains the final check.
X-API-Key: pending_activation_…DownfBridgev1# Available only after support activation
export DOWNF_ACCESS_TOKEN="issued-after-review"
curl -X POST https://downf.io/v1/resolve \
-H "X-API-Key: $DOWNF_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"media_address":"https://www.youtube.com/watch?v=VIDEO_ID"}'Credential safety begins with server-side secret storage on DownF. This compatibility view then presents no client bundle embedding. The final fact is no public logs or repositories.
Resolve a link
DownF organizes Resolve operation around source detection. Its compatibility view compares formats from one submitted URL. No invented outputs remains the final check.
/v1/resolveScope: resolve| Field | Type | Required | Description |
|---|---|---|---|
media_address | 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 begins with the returned value unchanged on DownF. This compatibility view then presents per-link availability. The final fact is no guessed quality label.
Create and follow a download job
Job creation starts with asynchronous preparation on DownF. The next view covers a short HTTP request. The page keeps bounded worker execution visible.
/v1/jobsScope: jobs| Field | Type | Required | Description |
|---|---|---|---|
media_address | HTTPS URL | Yes | The same normalized source submitted to resolve. |
output_ref | string | Yes | An exact ID from the resolve response. |
tenant | string | No | Assigned tenant domain. Usually omitted. |
curl -X POST https://downf.io/v1/jobs \
-H "X-API-Key: $DOWNF_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"media_address":"https://www.youtube.com/watch?v=VIDEO_ID","output_ref":"18"}'transfer_ref.GET /v1/jobs/{transfer_ref} 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://downf.io/v1/jobs/TRANSFER_REF \
-H "X-API-Key: $DOWNF_ACCESS_TOKEN"DownF's compatibility view reviews one-second initial wait for Job polling. It shows capped backoff next and does not obscure temporary signed delivery.
Predictable errors
DownF presents three practical points for Error contract. First comes one non-2xx envelope. The compatibility view then covers a support request ID. Its final point is 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
DownF assigns a request ceiling after reviewing the intended client, keeping its compatibility checks and upstream providers stable.
- 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.
DownF organizes Schema access around activation before exploration. Its compatibility view compares assigned authentication. Documented request shapes remains the final check.
Activate through support
Describe the product, forecast its monthly calls and list the platforms it must analyze. DownF support will confirm the required scopes before issuing a one-time visible credential whose stored copy is only a hash.
Request activation Keys are tenant-scoped, revocable and issued through the Contact form. Anonymous scripts cannot execute downloader work.