The Admin API
Authenticate as a server admin
Many of the API calls in the admin api will require anaccess_token
for aserver admin. (Note that a server admin is distinct from a room admin.)
An existing user can be marked as a server admin by updating the database directly.
Check yourdatabase settings in the configuration file, connect to the correct database using eitherpsql [database name]
(if using PostgreSQL) orsqlite3 path/to/your/database.db
(if using SQLite) and elevate the user@foo:bar.com
to administrator.
UPDATE users SET admin = 1 WHERE name = '@foo:bar.com';
A new server admin user can also be created using theregister_new_matrix_user
command. This is a script that is distributed as part of synapse. It is possiblyalready on your$PATH
depending on how Synapse was installed.
Finding your user'saccess_token
is client-dependent, but will usually be shown in the client's settings.
Making an Admin API request
For security reasons, werecommendthat the Admin API (/_synapse/admin/...
) should be hidden from public view using areverse proxy. This means you should typically query the Admin API from a terminal onthe machine which runs Synapse.
Once you have youraccess_token
, you will need to authenticate each request to an Admin API endpoint byproviding the token as either a query parameter or a request header. To add it as a request header in cURL:
curl --header "Authorization: Bearer <access_token>" <the_rest_of_your_API_request>
For example, suppose we want toquery the account of the user@foo:bar.com
. We need an admin access token (e.g.syt_AjfVef2_L33JNpafeif_0feKJfeaf0CQpoZk
), and we need to know which portSynapse'sclient
listener is listeningon (e.g.8008
). Then we can use the following command to request the accountinformation from the Admin API.
curl --header "Authorization: Bearer syt_AjfVef2_L33JNpafeif_0feKJfeaf0CQpoZk" -X GET http://127.0.0.1:8008/_synapse/admin/v2/users/@foo:bar.com
For more details on access tokens in Matrix, please refer to the completematrix spec documentation.