API
Create a share, upload directly to storage, then publish it.
Upload
- Create an upload plan with the exact file size in bytes.
POST https://bin.lunalna.xyz/api/shares Content-Type: application/json { "title": "Example", "files": [{ "path": "file.zip", "size": 123456 }] } - PUT each file to its returned
uploads[].urlwith the returned headers. Multipart uploads also require their ETags atPOST /api/shares/<id>/files/<fileId>/multipart/complete. - Publish the share.
POST https://bin.lunalna.xyz/api/shares/<id>/complete Authorization: Bearer <ownerToken> Content-Type: application/json {}
Download
GET https://bin.lunalna.xyz/api/shares/<id> GET https://bin.lunalna.xyz/api/shares/<id>/files/<fileId>/download GET https://bin.lunalna.xyz/api/shares/<id>/archive
The file endpoint returns a temporary storage URL. Unlock protected shares first with POST /api/shares/<id>/unlock.
Notes
- Cross-origin requests are allowed. No CSRF token is required.
- Keep the owner token private. It is required to complete or delete a share.
- New shares last 7 days. Downloads add 2 days, up to 60 days.
- 30 downloads within 60 days keep a share permanent while active.
- Current limits are available from
GET /api/config.