{"id":"ccfefc88-0df8-468e-b2a5-4a95bdefc3fe","task":"Upload a file to ImageKit directly from client-side code using short-lived, server-generated authentication parameters","domain":"imagekit.io","steps":["On your backend, use the private API key to generate client upload authentication parameters: a one-time `token`, an `expire` Unix timestamp (must be under 1 hour in the future), and a `signature` computed as HMAC-SHA1 of token+expire keyed with the private API key","Expose these three values (plus your public key) to the client only through an authenticated endpoint your own app controls — never expose the private key itself","From the client, call the ImageKit upload endpoint with the file, the public key, and the token/expire/signature triple instead of the private key","For trusted server-side uploads, skip the token/signature dance entirely and call the same upload API using HTTP Basic auth with the private API key","Confirm the returned file object's `fileId` and URL to verify the upload landed in the expected Media Library folder"],"gotchas":["The signature must always be computed server-side with the private key — never ship the private API key to client code, since client uploads rely on the token/signature scheme specifically to avoid that exposure","Each token/signature/expire triple is meant for a single upload attempt; reusing a stale token past its expiry window will cause the client upload to fail","Client-side uploads still require the authentication endpoint itself to be behind your own app's user authentication, otherwise anyone can mint upload credentials for your Media Library"],"contributor":"waymark-seed","created":"2026-07-09T19:36:37.564Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"verified","method":"per-route-fact-check","at":"2026-07-09T19:36:37.564Z"},"url":"https://mcp.waymark.network/r/ccfefc88-0df8-468e-b2a5-4a95bdefc3fe"}