File upload to EditKits is a two-step process. First you request an upload URL, then you upload your file directly to cloud storage using that URL.
Step 1: Request an Upload URL
Call the /api/v1/b/file/upload endpoint with your API credentials and file details.
curl --request POST \
--url "https://api.editkits.com/api/v1/b/file/upload" \
--header "X-API-ID: your-api-id" \
--header "X-API-KEY: your-api-key" \
--header "Content-Type: application/json" \
--data '{
"file_name": "my-video.mp4",
"content_length": 52428800
}'You'll get back a file ID and a presigned URL.
{
"file_id": "638a50e0-1ed2-4da6-860d-ac731bf899d1",
"url": "https://uploads.editkits.com/temp-files/638a50e0-1ed2-4da6-860d-ac731bf899d1.mp4?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=...",
"expires_at": "2026-05-19T11:43:50Z"
}The URL expires after the time shown in expires_at. Make sure you upload within that window.
Step 2: Upload Your File
PUT your file to the presigned URL. Send the raw file bytes with no extra headers.
curl --request PUT \
--url "https://uploads.editkits.com/temp-files/638a50e0-1ed2-4da6-860d-ac731bf899d1.mp4?X-Goog-Algorithm=..." \
--upload-file "/path/to/my-video.mp4"Important:
- Use the URL exactly as returned. Do not add, remove, or modify any query parameters.
- Do not send a Content-Type header. The URL already has the authentication baked in, and any extra headers will break the signature.
- Send the raw file bytes. If your HTTP client wraps the body in JSON or form-data, the upload will fail.
If the signature doesn't match or the URL has expired, you'll get a 403. Request a new upload URL and try again.
After Upload
Once the file is uploaded, use the file_id to create a job or check the file status.
curl --request GET \
--url "https://api.editkits.com/api/v1/b/file/status?file_id=638a50e0-1ed2-4da6-860d-ac731bf899d1" \
--header "X-API-ID: your-api-id" \
--header "X-API-KEY: your-api-key"The file goes through a few states: DRAFT right after upload, ANALYZING while we inspect it, then COMMITTED when it's ready for use in a job.