diff --git a/develop/usage/administration/admin_api/federation.html b/develop/usage/administration/admin_api/federation.html
index d9af4a958d..1f63f6fdd4 100644
--- a/develop/usage/administration/admin_api/federation.html
+++ b/develop/usage/administration/admin_api/federation.html
@@ -215,7 +215,7 @@ the remote server before trying again, in ms. This is <code>0</code> if no furth
<li><code>failure_ts</code> - nullable integer - The first time Synapse tried and failed to reach the
remote server, in ms. This is <code>null</code> if communication with the remote server has never failed.</li>
<li><code>last_successful_stream_ordering</code> - nullable integer - The stream ordering of the most
-recent successfully-sent <a href="understanding_synapse_through_grafana_graphs.html#federation">PDU</a>
+recent successfully-sent <a href="../understanding_synapse_through_grafana_graphs.html#federation">PDU</a>
to this destination, or <code>null</code> if this information has not been tracked yet.</li>
</ul>
</li>
@@ -288,7 +288,7 @@ Room objects contain the following fields:
<ul>
<li><code>room_id</code> - string - The ID of the room.</li>
<li><code>stream_ordering</code> - integer - The stream ordering of the most recent
-successfully-sent <a href="understanding_synapse_through_grafana_graphs.html#federation">PDU</a>
+successfully-sent <a href="../understanding_synapse_through_grafana_graphs.html#federation">PDU</a>
to this destination in this room.</li>
</ul>
</li>
diff --git a/develop/usage/administration/admin_api/index.html b/develop/usage/administration/admin_api/index.html
index 0d5587271d..62901ed644 100644
--- a/develop/usage/administration/admin_api/index.html
+++ b/develop/usage/administration/admin_api/index.html
@@ -151,7 +151,7 @@
<p>Many of the API calls in the admin api will require an <code>access_token</code> for a
server admin. (Note that a server admin is distinct from a room admin.)</p>
<p>An existing user can be marked as a server admin by updating the database directly.</p>
-<p>Check your <a href="config_documentation.html#database">database settings</a> in the configuration file, connect to the correct database using either <code>psql [database name]</code> (if using PostgreSQL) or <code>sqlite3 path/to/your/database.db</code> (if using SQLite) and elevate the user <code>@foo:bar.com</code> to administrator.</p>
+<p>Check your <a href="../../configuration/config_documentation.html#database">database settings</a> in the configuration file, connect to the correct database using either <code>psql [database name]</code> (if using PostgreSQL) or <code>sqlite3 path/to/your/database.db</code> (if using SQLite) and elevate the user <code>@foo:bar.com</code> to administrator.</p>
<pre><code class="language-sql">UPDATE users SET admin = 1 WHERE name = '@foo:bar.com';
</code></pre>
<p>A new server admin user can also be created using the <code>register_new_matrix_user</code>
@@ -168,10 +168,10 @@ providing the token as either a query parameter or a request header. To add it a
<pre><code class="language-sh">curl --header "Authorization: Bearer <access_token>" <the_rest_of_your_API_request>
</code></pre>
<p>For example, suppose we want to
-<a href="user_admin_api.html#query-user-account">query the account</a> of the user
+<a href="../../../admin_api/user_admin_api.html#query-user-account">query the account</a> of the user
<code>@foo:bar.com</code>. We need an admin access token (e.g.
<code>syt_AjfVef2_L33JNpafeif_0feKJfeaf0CQpoZk</code>), and we need to know which port
-Synapse's <a href="config_documentation.html#listeners"><code>client</code> listener</a> is listening
+Synapse's <a href="../../configuration/config_documentation.html#listeners"><code>client</code> listener</a> is listening
on (e.g. <code>8008</code>). Then we can use the following command to request the account
information from the Admin API.</p>
<pre><code class="language-sh">curl --header "Authorization: Bearer syt_AjfVef2_L33JNpafeif_0feKJfeaf0CQpoZk" -X GET http://127.0.0.1:8008/_synapse/admin/v2/users/@foo:bar.com
diff --git a/develop/usage/administration/admin_api/registration_tokens.html b/develop/usage/administration/admin_api/registration_tokens.html
index 30877efb34..c3415214de 100644
--- a/develop/usage/administration/admin_api/registration_tokens.html
+++ b/develop/usage/administration/admin_api/registration_tokens.html
@@ -153,7 +153,7 @@ registration requests, as proposed in
and stabilised in version 1.2 of the Matrix specification.
To use it, you will need to enable the <code>registration_requires_token</code> config
option, and authenticate by providing an <code>access_token</code> for a server admin:
-see <a href="../admin_api">Admin API</a>.</p>
+see <a href="../admin_api/">Admin API</a>.</p>
<h2 id="registration-token-objects"><a class="header" href="#registration-token-objects">Registration token objects</a></h2>
<p>Most endpoints make use of JSON objects that contain details about tokens.
These objects have the following fields:</p>
|