Skip to content

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:

  1. Navigate to Settings → Plex Integration in your AniKura account
  2. Click Generate Webhook Token
  3. Copy the webhook URL shown (format: https://api.anikura.io/ingest/plex/{your_token})
  4. In Plex Media Server: Settings → Webhooks → Add Webhook
  5. 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:

  1. Navigate to Settings → Jellyfin Integration in your AniKura account
  2. Click Generate Webhook Token
  3. Copy the webhook URL shown (format: https://api.anikura.io/ingest/jellyfin/{your_token})
  4. In Jellyfin Admin Dashboard: Dashboard → Plugins → Webhooks
  5. Add a new webhook with your AniKura URL
  6. Enable the PlaybackStop event type
  7. 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

EventTrigger
media.scrobbleUser marks item as played (or playback completes)
media.playPlayback starts (not recorded unless 80%+ completed on stop)

Jellyfin events recognized

EventTrigger
PlaybackStopPlayback stops — progress percentage checked before recording

Matching Logic

AniKura matches media server entries to anime using external IDs:

  1. Check Plex/Jellyfin metadata for a TMDB ID → look up in external_ids_anime
  2. If no TMDB match, check for TVDB ID → look up in external_ids_anime
  3. 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.

EventDescription
episode.airingAn episode airs within the next 30 minutes
chapter.releasedA new manga chapter is available
movie.release_dateA movie release date was added or changed
streaming.availableA 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.