app.didpic.chat.uploadMessageImage
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Upload raw image bytes for a chat message to a dedicated R2 bucket - never the atproto PDS, never images.didpic.app. DM images must never be world-readable the way a PDS blob would be. The caller already square-crops client-side; this stores exactly what's sent, one size, no server-side resizing. width/height are passed as query parameters alongside the raw body (there's no room in a raw-bytes request for a JSON field) and are trusted as given, same as createComment's width/height fields. The returned key/publicUrl/width/height are passed into sendMessage's image field.",
"errors": [
{
"name": "InvalidRequest"
},
{
"name": "PayloadTooLarge"
}
],
"input": {
"encoding": "*/*"
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"height": {
"type": "integer"
},
"key": {
"type": "string"
},
"publicUrl": {
"type": "string"
},
"width": {
"type": "integer"
}
},
"required": [
"key",
"publicUrl",
"width",
"height"
],
"type": "object"
}
},
"parameters": {
"properties": {
"height": {
"minimum": 1,
"type": "integer"
},
"width": {
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "params"
},
"type": "procedure"
}
},
"id": "app.didpic.chat.uploadMessageImage",
"lexicon": 1
}
Metadata
- DID
-
did:plc:an2jtp4jgkkbtmwfzhpbxawd - CID
-
bafyreihsd7ovzhtij7p2h3depy7yuu2qmt7kb3zqvm2wezxfmzxmww5iim - Indexed At
- 2026-10-10 08:21 UTC
- AT-URI
-
at://did:plc:an2jtp4jgkkbtmwfzhpbxawd/com.atproto.lexicon.schema/app.didpic.chat.uploadMessageImage
Version History (2 versions)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
app.didpic.write.uploadBlob procedure
Upload raw image bytes to the authenticated viewer's own PDS, mediated by the AppView using its server-held session (confidential OAuth client only). Mirrors com.atproto.repo.uploadBlob. The returned blob ref is passed …