Nightcord Storage v2.0.0
Object storage proxy with SEKAI v2 resource facade. Legacy upload paths remain; new clients should prefer /v2/upload and typed resolve URLs.
Hosts
https://storage.nightcord.de5.net
https://r2.nightcord.de5.net
Both hosts hit this Worker when bound. Prefer the media host for public SEKAI GETs; uploads may use either host.
SEKAI v2 — prefer this
PUT/v2/upload
| Headers |
X-Filename, Content-Type, Content-Lengthoptional: X-Sekai-Kind, X-Image-Width, X-Image-Heightfor uploads > 512 MiB: Authorization: Bearer <sekai-pass-token>
|
|---|---|
| Body | raw file bytes |
| Limits | Anonymous ≤ 512 MiB. Larger (up to ~1GB) needs a SEKAI Pass token (else 401); over ~1GB → 413. Cloudflare per-plan request-body limits may cap large uploads further. |
| Response | uuid, type, size (kB), name, kind, url, optional w/h |
curl -X PUT https://storage.nightcord.de5.net/v2/upload -H "X-Filename: photo.jpg" -H "Content-Type: image/jpeg" --data-binary @photo.jpg
GET Resolve
/images/{uuid}/files/{uuid}/stickers/{uuid}/v2/meta/{uuid}— JSON metadata
Message payload (Nightcord / SEKAI markup)
<$SEKAI:Image:w=…;h=…;name=…:{uuid}>
<$SEKAI:Files:type=…;size=…;name=…:{uuid}>
<$SEKAI:Stamp:custom=true:{uuid}>
Legacy — still supported
PUT/ → { key, url, size } where key is {uid}/{fileUuid}.ext
GETDEL/{key} · chunked under /chunked/…
Use for older clients and historical messages. New Nightcord builds use v2.
Machine-readable / agents
GET /?format=json
· GET /?format=md
· /v2
Accept: application/json→ JSONAccept: text/markdown→ Markdown (Content-Type: text/markdown,x-markdown-tokens)- Default / browsers → HTML
Content policy & abuse
Anonymous file service. Arbitrary file types are allowed (including executables). Illegal content is prohibited and removed on report. Stored objects are served as downloads (Content-Disposition: attachment) with X-Content-Type-Options: nosniff.
Report abuse or illegal content to abuse@nightcord.de5.net. Include the public URL and the reason. Do NOT attach or re-upload the offending content.