Upload a file
POST https://chat.zulip.org/api/v1/user_uploads
Upload a single file and get the corresponding URL.
Initially, only you will be able to access the link. To share the
uploaded file, you'll need to send a message
containing the resulting link. Users who can already access the link
can reshare it with other users by sending additional Zulip messages
containing the link.
For uploading larger files, /api/v1/tus
is an endpoint
implementing the tus
protocol for
resumable uploads. Clients which send authenticated
credentials (either via browser-based cookies, or API key via
Authorization
header) may use this endpoint to create
uploads.
Usage examples
#!/usr/bin/env python3
import zulip
# Pass the path to your zuliprc file here.
client = zulip.Client(config_file="~/zuliprc")
# Upload a file.
with open(path_to_file, "rb") as fp:
result = client.upload_file(fp)
# Share the file by including it in a message.
client.send_message(
{
"type": "stream",
"to": "Denmark",
"topic": "Castle",
"content": "Check out [this picture]({}) of my castle!".format(result["url"]),
}
)
print(result)
curl -sSX POST https://chat.zulip.org/api/v1/user_uploads \
-u BOT_EMAIL_ADDRESS:BOT_API_KEY \
-F filename=@/path/to/file
Parameters
As described above, the file to upload must be provided in the
request's body.
Maximum file size
The maximum file size for uploads can be configured by the
administrator of the Zulip server by setting MAX_FILE_UPLOAD_SIZE
in the server's settings. MAX_FILE_UPLOAD_SIZE
defaults
to 100MB.
Response
Return values
-
uri
: string
The URL of the uploaded file. Alias of url
.
Changes: Deprecated in Zulip 9.0 (feature level 272). The term
"URI" is deprecated in web standards.
-
url
: string
The URL of the uploaded file.
Changes: New in Zulip 9.0 (feature level 272). Previously,
this property was only available under the legacy uri
name.
-
filename
: string
The filename that Zulip stored the upload as. This usually
differs from the basename of the URL when HTML escaping is
required to generate a valid URL.
Clients generating a Markdown link to a newly uploaded file
should do so by combining the url
and filename
fields in the
response as follows: [{filename}]({url})
, with care taken to
clean filename
of [
and ]
characters that might break
Markdown rendering.
Changes: New in Zulip 10.0 (feature level 285).
Example response(s)
Changes: As of Zulip 7.0 (feature level 167), if any
parameters sent in the request are not supported by this
endpoint, a successful JSON response will include an
ignored_parameters_unsupported
array.
A typical successful JSON response may look like:
{
"filename": "zulip.txt",
"msg": "",
"result": "success",
"uri": "/user_uploads/1/4e/m2A3MSqFnWRLUf9SaPzQ0Up_/zulip.txt",
"url": "/user_uploads/1/4e/m2A3MSqFnWRLUf9SaPzQ0Up_/zulip.txt"
}