Fandom Developers Wiki
Advertisement

Notes about Service API (https://services.fandom.com) endpoints. This is a major WIP. Feel free to contribute more endpoints.

/discussion

Discussions API, documentation available but internal.

/quizzes

/quizzes/quizzes

/quizzes/quizzes/{quizId}

/quizzes/quizzes/{quizId}/validate_answers

  • Method: POST
  • Purpose: Validate quiz answers and return a score

/quizzes/leaderboard/{quizId}/recent

  • Method: GET
  • Purpose: Get recent scores on the quiz

/quizzes/{product}/images

  • Method: POST
  • Purpose: Upload quiz image

/quizzes/quizzes/discussion/{discussionId}

/quizzes/quizzes/suggested

/quizzes/targeting

  • Method: POST
  • Purpose: Update quiz targeting from quiz ID

/quizzes/targeting/{quizId}

  • Method: Get
  • Purpose: Get quiz targeting info

/quizzes/targeting/find

/discussions-sitemap

/discussions-sitemap/sitemap/{wiki}

/notification-facade, /on-site-notifications

Discussions/Announcements notifications API, documentation available but internal.

/on-site-notifications/notifications

  • Method: GET
  • Purpose: Get all notifications matching the criteria
  • Query parameters:
  • contentType (can be multiple) — one of discussion-upvote, discussion-post, announcement-target, post-at-mention, thread-at-mention, message-wall-thread, message-wall-post, article-comment-reply, article-comment-at-mention, article-comment-reply-at-mention, talk-page-message, marketing-notification
    • since: ISO-8601 timestamp

/on-site-notifications/notifications/unread-count

  • Method: GET

/on-site-notifications/notifications/mark-as-read/by-uri

  • Method: GET

/on-site-notifications/notifications/mark-all-as-read

  • Method: POST
  • Purpose: Mark all notifications (or all matching the request) as read
  • JSON body: (can be empty)
    • since: ISO-8601 timestamp
    • siteIds: array of site ids

/announcements

/announcements/{wiki}/announcements

  • Method: GET
  • Purpose: Get all announcements for a wiki
  • Authorization: Cookie

/announcements/{wiki}/announcements

  • Method: POST
  • Purpose: Create a new announcement
  • JSON body:
    • text (string) — Announcement text
    • url (string) — Announcement URL
  • Authorization: Cookie

/announcements/{wiki}/announcements/{id}

  • Method: PATCH
  • Purpose: Edit (only expire) an announcement by its ID
  • JSON body:
    • isExpired (boolean) — true to expire
  • Authorization: Cookie

/auth

Helios API. Perhaps there might be more methods than these, but unsure which work externally.

Starting from 2022, Helios is being replaced by Ory Kratos. See /kratos-public for Ory Kratos endpoints.

/auth/token

This endpoint has been removed. Please see /mobile-fandom-app/fandom-auth/login instead. For changes that need to be made while switching to the new endpoint, you can refer to this commit.

/kratos-public

Base for Ory Kratos HTTP API. For example, you can use /self-service/login/api (docs) to query for a new login flow, then /self-service/login (docs) to log in. This would get you a fandom_session cookie in response which is used to authenticate.

/user-attribute

/user-attribute/attr

/user-attribute/attr/{attr}

/user-attribute/user/{id}

/user-attribute/user/{id}

  • Method: PATCH
  • Purpose: Update several attributes of a user, empty values will be ignored.
  • Parameters:
    • id (number) — ID of the user to grab attributes for.
  • Response: TODO

/user-attribute/user/{id}/attr/{attr}

/user-attribute/user/{id}/attr/{attr}

  • Method: PUT
  • Purpose: Set a specific attribute for a user.
  • Parameters:
    • id (number) — ID of the user to update the attribute for.
    • attr (string) — Attribute name of the attribute to update.
  • Response: TODO

/user-attribute/user/{id}/attr/{attr}

  • Method: DELETE
  • Purpose: Delete a specific attribute for a user.
  • Parameters:
    • id (number) — ID of the user to delete the attribute for.
    • attr (string) — Attribute name of the attribute to delete.
  • Response: TODO

/user-attribute/user/bulk

/user-preference

/user-preference/{user}

  • Method: GET
  • Purpose: Get all preferences of a user.

/user-preference/{user}

  • Method: PUT
  • Purpose: Rewrite all preferences of a user.

/user-preference/{user}

  • Method: DELETE
  • Purpose: Delete all preferences of a user.

/user-preference/{user}/global/{preference}

  • Method: GET
  • Purpose: Get value of a global preference of a user by name and user ID.

/user-preference/{user}/local/{preference}/wikia/{wiki}

  • Method: GET
  • Purpose: Get value of a local preference of a user on a specific wiki by name, user ID and wiki ID.

user-avatar

User avatar API.

/template-classification-storage

Template Classification Storage API.

/opengraph

Fandom's OpenGraph API used for previewing links in Discussions.

/following

/whoami

/geoip

/geoip/location

/unified-search

Unified Search API.

/unified-search/page-search

/unified-search/community-search

/unified-search/discussions-search

/unified-search/news-and-stories-search

/site-attribute

Wiki attribute API.

/external-auth

/mobile-fandom-app

Fandom App-related endpoints.

/mobile-fandom-app/fandom-auth/login

  • Method: POST
  • Purpose: Obtaining an access token (logging into Fandom).
  • Form body:
    • username (string) — Username of the user logging in.
    • password (string) — Password of the user logging in.
  • Response: JSON body with an access_token key and OAuth-related parameters. Automatically sets a fandom_session cookie on the fandom.com domain, which is used to authenticate.

/mobile-fandom-app/fandom-auth/logout

/mobile-fandom-app/deeplink

/mobile-fandom-app/interests

/mobile-fandom-app/interests/follow

  • Method: POST
  • Purpose: Add or remove interests
  • JSON body:
    • add: array of interest ids (strings) to follow
    • remove: array of interest ids (strings) to unfollow

/mobile-fandom-app/interests/{id}

/mobile-fandom-app/profile/user/{id}

/mobile-fandom-app/profile/me

  • Method: GET
  • Purpose: Get profile and interests of the signed in user

/mobile-fandom-app/media-wiki/search-suggestions

/mobile-fandom-app/unified-search/summary

/mobile-fandom-app/unified-search

/mobile-fandom-app/privacy-settings

  • Method: GET
  • Purpose: Get privacy settings based on region

/mobile-fandom-app/random/{wiki}

/mobile-fandom-app/article-info

/mobile-fandom-app/media-wiki/article-details

/mobile-fandom-app/curated/{wiki}

Limited version of /mobile-fandom-app/media-wiki/curated-content

/mobile-fandom-app/media-wiki/curated-content

/mobile-fandom-app/media-wiki/articles

/mobile-fandom-app/media-wiki/top-articles

/mobile-fandom-app/media-wiki/recent-changes

/mobile-app-registry

/mobile-app-registry/devices/{token}/launch

/user-permissions

/user-permissions/permissions/wiki/{wiki}/scope/discussions/bulkUsers

/user-registration

User registration API.

/user-registration/users

  • Method: POST
  • Form body:
    • email (string) — E-mail address of the user.
    • username (string) — Username of the user.
    • password (string) — Password of the user.
    • birthdate (string) — User's birth date (format YYYY-MM-DD).
    • marketingAllowed (boolean) — Whether the user opted in to receive Fandom emails.
    • langCode (string) — Language code?
    • registrationWikiaId (number) — ID of the wiki on which the registration occurred.

/user-registration/users/emailconfirmed

Same params as /user-registration/users

/clickstream

Tracking API for most events (click, search, etc).

/clickstream/events/social

/clickstream/mobile_apps

/csp-logger

Content Security Policy violation logger.

/csp-logger/csp/{product}

Logs a CSP violation, where product is "app" for MediaWiki instances.

/event-logger

Event logger API.

/event-logger/debug

/event-logger/error

/alerting-tester

https://services.fandom.com/alerting-tester

/active-data-management-service

/active-data-management-service/profiles

/active-data-management-service/validate

  • Method: POST
  • JSON body: {"time":unix_ts,"name":name,"type":type,"payload":{"_type":type}}

/active-data-management-service/validate/test/{uuid}

  • Method: POST

/icbm

Ads.

/icbm/api/config

/icbm/api/loader

/galactus-user-profile

Ads.

/galactus-user-profile/profiles/{beacon}

/bill-the-lizard

/bill-the-lizard/predict

/ad-tag-manager

/ad-tag-manager/communities/{wiki}/ad-tags

/affiliate

/affiliate/redirect/{wikiId}/{articleId}/{unitCategory}/{trackingAlgorithm}/{trackingMethod}/{trackingVersion}

  • Method: GET
  • Purpose: Redirect to a URL while logging(?) affiliate information
  • Query parameters:
    • r (string) — target URL

/campaign-provider

Resources/config for ads

https://services.fandom.com/campaign-provider/styles.css

/campaign-provider/{campaignId}/vast.xml

/email-service

/email-service/sailthru/user-cookie

  • Method: POST
  • Purpose: Get Sailthru cookie
  • JSON body: {"key": "ext_id", "id": user_id}

/might-i-suggest

Bingebot

/might-i-suggest/shows

/might-i-suggest/watch-list/user/{userId}

  • Method: GET
  • Purpose: Get the user's watch list

/might-i-suggest/watch-list/user/{userId}

  • Method: POST
  • Purpose: Add a show to the user's watch list

/might-i-suggest/watch-list/user/{userId}/{showId}

  • Method: DELETE
  • Purpose: Remove a show from the user's watch list

/might-i-suggest/seen-list/user/{userId}

  • Method: GET
  • Purpose: Get the user's seen list

/might-i-suggest/seen-list/user/{userId}/{showId}

  • Method: POST
  • Purpose: Add a show to the user's seen list

/might-i-suggest/seen-list/user/{userId}

  • Method: DELETE
  • Purpose: Remove a show from the user's seen list

/might-i-suggest/recommendation

  • Method: GET
  • Purpose: Make recommendations

/might-i-suggest/wikis/shows

  • Method: GET
  • Purpose: Get shows from a wiki
  • Query parameters:
    • ids (comma separated integer) — Ids of wikis

/might-i-suggest/recommendation/anonymous

  • Method: POST
  • Purpose: Anonymously gauge user interest in a show
  • JSON body: {"reactions":[{"tv_show_id":"show-uuid","liked":true}],"streamers":[],"limit":3}

/reaction-aggregator

/reaction-aggregator/tvshows/{showId}

/reaction-aggregator/tvshows/like/{showId}

/reaction-aggregator/tvshows/unlike/{showId}

/reaction-aggregator/tvshows/dislike/{showId}

/reaction-aggregator/tvshows/undislike/{showId}

/curation-cms

See github:Wikia/app/tree/d75145c/lib/Swagger/src/CurationCMS

Require authorization

/curation-cms/stories/feed/{feed}

/curation-cms/stories/posts/{slug}

/curation-cms/stories/topics

  • Method: GET
  • Purpose: Get topics

/curation-cms/stories/topics/personal

  • Method: GET
  • Purpose: Get topics followed by authenticated user
  • Query parameters:
    • sortBy (string) — rank
    • sortDirection (string) — asc, desc

/curation-cms/stories/themes

  • Method: GET
  • Purpose: Get branding themes for news and stories (available themeFinder)

/curation-cms/curation/topics

  • Method: GET
  • Purpose: Get all topics
  • Query parameters:
    • page (integer) — Page of results to return (dependant on limit parameter)
    • limit (integer) — Amount of results to return
    • sortBy (string) — rank
    • sortDirection (string) — asc, desc

/knowledge-graph

/knowledge-graph/affiliates/{wiki}

https://services.fandom.com/knowledge-graph/affiliates/177

/knowledge-graph/affiliates/{wiki}/{article}

https://services.fandom.com/knowledge-graph/affiliates/177/421588

/knowledge-graph/communities/{wiki}/ad-tags

https://services.fandom.com/knowledge-graph/communities/177/ad-tags

/knowledge-graph/community/{wiki}/{article}/comixology

https://services.fandom.com/knowledge-graph/community/769303/2268/comixology

/image-review

See github:Wikia/app/tree/dev/lib/Swagger/src/ImageReview

/image-review/sources

/image-review/info

/spam-wiki-review

/spam-wiki-review/wiki

/wiki-recommendations

/wiki-recommendations/wikis

/wiki-recommendations/sponsored-articles/article

/recommendations

/recommendations/recommendations

/profile

/profile/bulk

/taxonomy

/taxonomy/pagedata/{wiki}/{article}

/visual-editor-parsoid-facade

Limited Parsoid API

Parameters should be URL encoded

/visual-editor-parsoid-facade/fandomdesktop/{domain}/v1/page/html/{title}/{revision?}

/visual-editor-parsoid-facade/fandomdesktop/{domain}/v1/transform/wikitext/to/html/{title}/{revision?}

  • Method: POST
  • Purpose: Convert wikitext to Parsoid compatible HTML
  • Parameters:
    • domain (string) — full domain of the wiki
    • title (string) — page title
    • revision (integer, optional) — specific revision, defaults to the latest
  • Body: (Form URL encoded)
    • wikitext (string) — input wikitext
    • stash (boolean)

See also

Advertisement