A link to send one of the user's files to this server, for files on their phone or computer that the server can't read, including a file attached in the chat that the chat app doesn't hand you. Give the user the url: they open it on their phone or computer and pick the file; the page sends it and resumes on its own. Then media.import {source: {upload_id}}; media.import says whether the file is all in yet. The URL needs no other credentials and works for a day. If you can send the file yourself, PUT it there instead (curl --fail -T interview.mp4 ''). A broken upload resumes: HEAD the url for Upload-Offset (the bytes received), then PUT the rest with Content-Range: bytes -/. Large files can go in parts the same way.