funkwhale/api
jon r bc71203869 chore(api/settings): remove depreciated IS_DOCKER_SETUP variable
This configuration was for a very old Docker version that still supported
linking containers together, which allowed for service discovery via the
environment.

This is not present in Docker anymore for many years now, so removing.
2025-04-24 15:12:09 +02:00
..
config chore(api/settings): remove depreciated IS_DOCKER_SETUP variable 2025-04-24 15:12:09 +02:00
docker listening port was hardcoded, no matter what the FUNKWHALE_API_PORT env var was set to, API would only listen on 5000. added env var to command to fix issue. 2024-08-29 15:11:15 +00:00
funkwhale_api Feat(API): changes to support new frontend 2025-04-18 10:37:48 +02:00
tests Feat(API): changes to support new frontend 2025-04-18 10:37:48 +02:00
.dockerignore fix: Make sure entrypoint script gets copied 2023-01-18 15:15:43 +01:00
Dockerfile fix(DX): Docker mac compatibility, dynamic DNS + Debian image (#2337 #1691) 2024-10-21 08:57:15 +00:00
Dockerfile.alpine Fix arm docker build gfortran NOCHANGELOG 2025-02-12 10:42:54 +00:00
Dockerfile.debian chore(api): update all dependencies (develop) 2025-01-15 14:23:09 +00:00
Makefile disable some linter rule to avoid noise on the api lint process (#2346) 2024-10-21 11:06:43 +00:00
Readme.md Merge branch stable into develop 2023-09-01 14:24:58 +02:00
install_os_dependencies.sh chore: fix shell scripts lint errors 2022-11-25 19:43:50 +00:00
manage.py fix(api): raise SystemExit in manage.py script 2023-06-12 13:04:58 +00:00
poetry.lock chore(api): update dependency sentry-sdk to v2.22.0 2025-02-17 14:32:53 +00:00
pyproject.toml chore(api): update dependency sentry-sdk to v2.22.0 2025-02-17 14:32:53 +00:00

Readme.md

Funkwhale API

This is the Funkwhale API. Check out our API explorer for interactive documentation.

OAuth Authentication

Funkwhale uses the OAuth authorization grant flow for external apps. This flow is a secure way to authenticate apps that requires a user's explicit consent to perform actions. You can use our demo server at https://demo.funkwhale.audio for testing purposes.

To authenticate with the Funkwhale API:

  1. Create an application by sending a POST request to api/v1/oauth/apps. Include your scopes and redirect URI (use urn:ietf:wg:oauth:2.0:oob to get an authorization code you can copy)
  2. Send an authorization request to the /authorize endpoint to receive an authorization code
  3. Request an access token from /api/v1/oauth/token
  4. Use your access token to authenticate your calls with the following format: Authorization: Bearer <token>
  5. Refresh your access token by sending a refresh request to /api/v1/oauth/token

For more detailed instructions, see our API authentication documentation.

Application token authentication

If you have an account on your target pod, you can create an application at /settings/applications/new. Once you authorize the application you can retrieve an access token. Use your access token to authenticate your calls with the following format: Authorization: Bearer <token>

Rate limiting

Funkwhale supports rate-limiting as of version 0.2.0. Pod admins can choose to rate limit specific endpoints to prevent abuse and improve the stability of the service. If the server drops a request due to rate-limiting, it returns a 429 status code.

Each API call returns HTTP headers to pass the following information:

  • What was the scope of the request (X-RateLimit-Scope)
  • What is the rate-limit associated with the request scope (X-RateLimit-Limit)
  • How many more requests in the scope can be made within the rate-limit timeframe (X-RateLimit-Remaining)
  • How much time does the client need to wait to send another request (Retry-After)

For more information, check our rate limit documentation

Resources

For more information about API usage, refer to our API documentation.