Webhooks
AniKura accepts webhook events from Plex Media Server and Jellyfin to automatically scrobble watched anime to your AniKura list. This is different from the browser extension scrobbler — webhook scrobbling is for anime you watch via your personal media server.
Media Server Webhooks
Plex
Endpoint: POST /ingest/plex/{token}
Plex sends a multipart form POST when you complete watching a video. AniKura listens for the
media.scrobble and media.play events.
Setup:
- Navigate to Settings → Plex Integration in your AniKura account
- Click Generate Webhook Token
- Copy the webhook URL shown (format:
https://api.anikura.io/ingest/plex/{your_token}) - In Plex Media Server: Settings → Webhooks → Add Webhook
- Paste the AniKura webhook URL and save
AniKura matches the video to an anime using TMDB and TVDB external IDs from the Plex metadata agent.
Jellyfin
Endpoint: POST /ingest/jellyfin/{token}
Jellyfin sends a JSON POST for PlaybackStop events. AniKura only records progress when the
video was played to at least 80% completion (same threshold as the browser extension default).
Setup:
- Navigate to Settings → Jellyfin Integration in your AniKura account
- Click Generate Webhook Token
- Copy the webhook URL shown (format:
https://api.anikura.io/ingest/jellyfin/{your_token}) - In Jellyfin Admin Dashboard: Dashboard → Plugins → Webhooks
- Add a new webhook with your AniKura URL
- Enable the PlaybackStop event type
- Save
Token Security
Your webhook token is the credential. Treat it like a password:
- Anyone with your webhook URL can submit scrobble events to your account
- If a token is compromised, delete it from Settings and generate a new one
- AniKura always returns HTTP 200 OK for all webhook requests (valid or not) — this is intentional to prevent token enumeration attacks. An attacker cannot determine whether their token is valid from the response status.
Event Types
Plex events recognized
| Event | Trigger |
|---|---|
media.scrobble | User marks item as played (or playback completes) |
media.play | Playback starts (not recorded unless 80%+ completed on stop) |
Jellyfin events recognized
| Event | Trigger |
|---|---|
PlaybackStop | Playback stops — progress percentage checked before recording |
Matching Logic
AniKura matches media server entries to anime using external IDs:
- Check Plex/Jellyfin metadata for a TMDB ID → look up in
external_ids_anime - If no TMDB match, check for TVDB ID → look up in
external_ids_anime - If no match found, the scrobble is silently dropped (no error, to prevent webhook failures)
For best matching, ensure your Plex/Jellyfin anime library uses either the Plex TV Series (TVDB) or TMDB agent. Local metadata without external IDs cannot be matched.
API Webhooks (Paid Tier)
Paid API users can also receive webhooks from AniKura when data changes. These are separate from the media server scrobbling webhooks above.
| Event | Description |
|---|---|
episode.airing | An episode airs within the next 30 minutes |
chapter.released | A new manga chapter is available |
movie.release_date | A movie release date was added or changed |
streaming.available | A title became available on a streaming service |
All outbound webhooks include an X-AniKura-Signature header (HMAC-SHA256) for verification.
See the Authentication guide for how to validate this signature.