/ Docs / Getting Started
Start Here
Getting Started
First end-to-end workflow in ~5 minutes. Ultra’s core exchange sequence is upload → resolve → grant → fetch.
Curl Quickstart
curl -F "file=@report.pdf" -F "ttl=120" -F "max_uses=1" https://ultra.egomonk.com/api/upload
curl https://ultra.egomonk.com/api/share/shr_...
curl -X POST https://ultra.egomonk.com/api/agent/grants -H "Authorization: Bearer agk_..." -d '{"shareId":"shr_..."}'
curl "https://ultra.egomonk.com/api/dl/trf_...?share_id=shr_..." -o file.bin
curl -H "X-Access-Grant: agrt_..." https://ultra.egomonk.com/api/dl/trf_... -o agent-file.bin
curl -X DELETE https://ultra.egomonk.com/api/dl/trf_... -H "X-Delete-Token: dlt_..."
Upload responses include deleteToken. Keep it private with the sender-side record; it is not embedded in share links.
SDK Quickstart
const up = await ultra.uploadFile({ file, filename:'hello.txt', ttlSeconds:120, authMode:'agent', allowedAgentIds:['agent-b'] })
const share = await ultra.resolveShare(up.shareId)
const grant = await ultra.requestGrant(share.id)
await ultra.downloadWithGrant(grant.targetId, grant.accessToken)
await ultra.deleteTransfer(up.id, up.deleteToken)
MCP Quickstart
upload_text("hello", filename="hello.txt")
download_share("https://ultra.egomonk.com/s/shr_...", agent_key="agk_...")