Доступ через API Discourse: ключ и/или пользователь отклонены

Как модератор, я хотел бы использовать API для форума Discourse. Обычно он активирован, и мне удалось получить API-ключ. Я использовал этот скрипт:

Мне удалось получить ключ длиной 32 символа (это правильно?), и в настройках безопасности моей учетной записи приложение отображается со следующими разрешениями:

Чтение всего
Запись всего
Обновления в реальном времени
Push-уведомления внешним сервисам
Чтение и очистка уведомлений
Чтение информации о сессии пользователя
Создание одноразового токена входа

Это выглядит довольно хорошо. Однако, когда я пытаюсь получить доступ через скрипт с помощью:

from pydiscourse import DiscourseClient

client = DiscourseClient(
        'https://forum.example.com',
        api_username='tflidd',
        api_key='388b79103056fede1d3223dae032df99')

client.user("tflidd")

Это библиотека Python, так что, полагаю, она должна работать. API-ключ имеет этот конкретный формат, это не сам ключ. Я получаю ошибку, что либо имя пользователя, либо API-ключ недействительны.

Должен ли я использовать свое имя пользователя или название приложения?
Верен ли хотя бы формат API-ключа, возможно, что-то пошло не так при расшифровке?

Если я использую curl, как здесь (Discourse-user-notes API - #4 by codetricity):

curl https://forum.example.com/t/95783.json\ -H 'Api-Key: 388b79103056fede1d3223dae032df99'\ -H 'Api-Username: tflidd'

Я также получаю ошибку:
{"errors":["You are not permitted to view the requested resource. The API username or key is invalid."],"error_type":"invalid_access"}

Если я открою тот же URL с JSON в браузере, где я авторизован, веб-браузер покажет правильный объект JSON. Значит, тема существует, и у меня есть права доступа к ней (это даже была публичная тема).

Я просто модератор, без прямого доступа администратора. Я могу запросить дополнительную информацию из логов, если у вас есть подсказки, на что обратить внимание.

На всякий случай, если это важно, установленная версия: 3.2.0.beta4-dev

Библиотека Python DiscourseClient предназначена для работы с ключом API уровня Администратора (Администрирование → API).
Тот ключ, который генерируется с помощью generate_api_key, является клиентским ключом API.

Вместо этого необходимо передавать заголовки API-User-Key и API-User-Username.
Например:

curl https://forum.example.com/t/95783.json -H 'Api-User-Key: 388b79103056fede1d3223dae032df99' -H 'Api-User-Username: tflidd'

:+1: Это работает, вы не представляете, сколько времени я потратил на это.

Но конечные точки API такие же, как описано здесь:

?

(Если да, было бы здорово упомянуть не только аутентификацию с помощью ключа API администратора, но и ключ API клиента)

Для клиента pydiscourse есть обходной путь с использованием другого заголовка:

from pydiscourse import DiscourseClient

client = DiscourseClient(
        'https://forum.example.com',
        api_username='tflidd',
        api_key='388b79103056fede1d3223dae032df99')

headers = {
            "Accept": "application/json; charset=utf-8",
            "User-Api-Key": '388b79103056fede1d3223dae032df99',
            "User-Api-Username": 'tflidd',
        }

slug = "abc"
topic_id = 1234

client.topic(slug=slug, topic_id=topic_id, override_request_kwargs=override_request_kwargs)