Files
upstream-zulip/docs/production/gif-picker-integrations.md
upstream-mirror 64898b2c79
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
2026-09-15 15:05:30 +05:00

149 lines
5.4 KiB
Markdown

# GIF picker integrations
This page documents the server-level configuration required to enable
GIPHY or Tenor integrations to [add GIFs in your message][help-center-giphy] on
a self-hosted Zulip server.
:::{note}
If API keys are configured for multiple integrations, Zulip will prioritize
Tenor, followed by KLIPY, and then GIPHY.
:::
## GIPHY
To enable the GIPHY integration, you need to get a beta or production API key
from [GIPHY](https://developers.giphy.com/).
### Apply for API key
1. [Create a GIPHY account](https://giphy.com/join).
1. Create a GIPHY API key by clicking “Create an App” on the
[Developer Dashboard][giphy-dashboard].
1. Choose **SDK** as product type and click **Next Step**.
1. Enter a name and a description for your app and click on **Create
New App**. The hostname for your Zulip server is a fine name.
1. You will receive a [rate-limited][giphy-beta-api] beta API key, which
may be sufficient for smaller Zulip servers.
1. (_optional_) If the beta API key rate limit is too low for your
organization, apply for a production API key by following the
instructions provided by GIPHY when you receive your beta API key.
Note that when submitting a screenshot to request a production API
key, GIPHY expects the screenshot to show the full page (including
the URL).
You can then configure your Zulip server to use GIPHY API as
follows:
1. In `/etc/zulip/settings.py`, enter your GIPHY API key as
`GIPHY_API_KEY = "<Your API key from GIPHY>"`.
GIPHY API keys are not secrets -- GIPHY expects every browser or
other client connecting to your Zulip server will receive a copy --
which is why they are configured in `settings.py` and not
`zulip-secrets.conf`.
1. Restart the Zulip server with
`/home/zulip/deployments/current/scripts/restart-server`.
Congratulations! You've configured the GIPHY integration for your
Zulip server. Your users can now use the integration as described in
[the help center article][help-center-giphy]. (A browser reload may
be required).
## Tenor
To enable the Tenor GIF integration, you will need to create
a production API key from Tenor.
### Create a Tenor API key
1. Navigate to the [Google Cloud Console](https://console.cloud.google.com/)
and either sign in with an existing Google account or create a new one.
1. Choose an existing Google Cloud project where you want to enable the
Tenor API, or create a new project if necessary.
1. In the Google Cloud Console, search for "Tenor API" in the search bar.
1. Select the Tenor API from the results and click "Enable" to activate
it for your project.
1. After enabling the API, go to the "Credentials" section within your project.
1. Click "Create credentials" and choose "API Key" from the dropdown menu.
1. While configuring the API key, you can optionally restrict it to only
call the Tenor API.
1. Store the newly generated API key.
You can then configure your Zulip server to use the Tenor API
as follows:
1. In `/etc/zulip/settings.py`, enter your Tenor API key as
`TENOR_API_KEY = "<Your API key from the Google Cloud Console>"`.
Just like GIPHY API keys, Tenor API keys are not secrets -- Tenor expects
every browser or other client connecting to your Zulip server will
receive a copy -- which is why they are configured in `settings.py` and not
`zulip-secrets.conf`.
1. Restart the Zulip server with
`/home/zulip/deployments/current/scripts/restart-server`.
Congratulations! You've configured the Tenor integration for your
Zulip server. Your users can now use the integration as described in
[the help center article][help-center-giphy]. (A browser reload may
be required).
## KLIPY
To enable the KLIPY GIF integration, you will need to create
a test or production API key from KLIPY.
### Create a KLIPY API key
1. On the KLIPY Developer page, navigate to the [API Keys section](https://partner.klipy.com/api-keys)
1. Select **Add Platform** and enter the details of your Zulip server.
1. In the **Create API Key** modal, enter the relevant details and select **Create**.
1. You will receive a [rate-limited][klipy-api-key-rate-limit] test API key, which
may be sufficient for smaller Zulip servers.
1. (_optional_) If the test API key rate limit is too low for your Zulip server,
you can click on the **three-dot button** on the right and select **Request Production**.
Enter the necessary details and select **Apply**.
1. Store the newly generated API key.
You can then configure your Zulip server to use the KLIPY API
as follows:
1. In `/etc/zulip/settings.py`, enter your KLIPY API key as
`KLIPY_API_KEY = "<Your API key>"`.
Just like GIPHY API keys, KLIPY API keys are not secrets -- KLIPY expects
every browser or other client connecting to your Zulip server will
receive a copy -- which is why they are configured in `settings.py` and not
`zulip-secrets.conf`.
1. Restart the Zulip server with
`/home/zulip/deployments/current/scripts/restart-server`.
Congratulations! You've configured the KLIPY integration for your
Zulip server. Your users can now use the integration as described in
[the help center article][help-center-giphy]. (A browser reload may
be required).
[help-center-giphy]: https://zulip.com/help/animated-gifs-from-giphy
[giphy-dashboard]: https://developers.giphy.com/dashboard/
[giphy-beta-api]: https://support.giphy.com/hc/en-us/articles/360035340511
[klipy-api-key-rate-limit]: https://partner.klipy.com/faqs#4