Copy a file off a machine into a temporary blob

PRO ONLY: Free and anonymous callers cannot initiate pulls, and a plan-restricted machine fails with reason plan_device_limit. Reads an absolute path off the machine and stores it as a TEMPORARY blob, returning a blob id and a short-lived download link. A blob/link created while Pro was active remains usable only to its original TTL after downgrade: blob access ends after 24 hours and the link after 1 hour; neither can be renewed. Use this instead of cat through exec, which caps output at 1 MiB and corrupts binary. LIMIT: 100 MiB and one regular file; archive directories and send larger artifacts to storage you control. The relay answers within about 55 seconds. QUOTAS after the Pro gate: 60 transfers/hour/account and 5 GiB/account/rolling day for bytes entering relay storage. Pull reserves the full 100 MiB until it settles to actual size, so less than 100 MiB headroom or concurrent reservations can refuse a smaller file with 429 rate_limited.

post/api/v1/pull

Request

  • Base URL: https://aicommander.dev
  • URL: https://aicommander.dev/api/v1/pull
  • Auth: HTTP bearer

Request body

codestring required

Session code (AIC-…) or, with an API key, a saved machine alias.

pathstring required

ABSOLUTE path of the file on the machine. A relative path is refused, never resolved against a working directory.

Example request

{
  "code": "AIC-7K3P-WX9M-RTBN",
  "path": "/home/u/aic-jobs/train/out.ckpt"
}

Response

The file was read off the machine and stored as a blob.

oktrue required
blobIdstring required

32 hex characters. Pass it to /api/v1/push, or fetch the bytes from /api/v1/files/{blobId}.

bytesinteger required

What the RELAY stored — its own count, not the machine's claim.

downloadUrlstring required

Link carrying a short-lived token.

linkExpiresAtstring date-time required

When the LINK stops working (1 hour).

blobExpiresAtstring date-time required

When the BLOB stops being readable (24 hours), collected or not. Physical cleanup follows via an hourly, retrying sweep, so inaccessible bytes may remain until cleanup succeeds. Deliberately separate from linkExpiresAt: conflating them either abandons a blob you could still fetch or shares a link that has already died.

Example response

{
  "blobId": "9f2c1a4b6d8e0f13579bdf2468ace013"
}

Changes

No recorded changes to this operation across all 1 revision of this API.