EmuReady Mobile API Reference
Documentation for the API including router summaries, authentication, and usage examples.
EmuReady Mobile API (tRPC)
Auto-generated on: 2026-02-17T20:21:36.450Z
Summary
- Total Endpoints: 112
- Public Endpoints: 65
- Protected Endpoints: 47
- OpenAPI Version: 3.0.0
Base URL
/api/mobile/trpc
Authentication
Protected endpoints require Bearer token authentication using Clerk JWT.
Interactive Documentation
- Swagger UI: /docs/api/swagger
- OpenAPI JSON: /api-docs/mobile-openapi.json
Endpoints
Public Endpoints (No Authentication Required)
1. validateToken
- Method: GET
- Path:
/auth.validateToken - Description: Validate JWT token
- Tags: auth
2. getDeviceCompatibility
- Method: GET
- Path:
/catalog.getDeviceCompatibility - Description: Get device compatibility scores by system Returns aggregated compatibility scores (0-100) for each system tested on a device. Scores are calculated from: - Performance ratings from authors - Community votes (Wilson score) - Developer verifications Results are cached for 10 minutes to reduce server load.
- Tags: catalog
3. get
- Method: GET
- Path:
/cpus.get - Description: Get CPUs with search, filtering, and pagination
- Tags: cpus
4. getById
- Method: GET
- Path:
/cpus.getById - Description: Get CPU by ID
- Tags: cpus
5. getByEmulator
- Method: GET
- Path:
/customFieldDefinitions.getByEmulator - Description: Get custom field definitions by emulator (for mobile listing creation)
- Tags: customFieldDefinitions
6. get
- Method: GET
- Path:
/deviceBrands.get - Description: Get device brands with search and sorting
- Tags: deviceBrands
7. getById
- Method: GET
- Path:
/deviceBrands.getById - Description: Get device brand by ID
- Tags: deviceBrands
8. get
- Method: GET
- Path:
/devices.get - Description: Get devices with optional search, brand filtering, and pagination
- Tags: devices
9. brands
- Method: GET
- Path:
/devices.brands - Description: Get all device brands sorted alphabetically
- Tags: devices
10. socs
- Method: GET
- Path:
/devices.socs - Description: Get SOCs (System on Chips)
- Tags: devices
11. byId
- Method: GET
- Path:
/devices.byId - Description: Get device by ID
- Tags: devices
12. get
- Method: GET
- Path:
/emulators.get - Description: Get emulators with search and filtering
- Tags: emulators
13. byId
- Method: GET
- Path:
/emulators.byId - Description: Get emulator by ID
- Tags: emulators
14. get
- Method: GET
- Path:
/games.get - Description: Get games with search and filtering
- Tags: games
15. getPopularGames
- Method: GET
- Path:
/games.getPopularGames - Description: Get popular games
- Tags: games
16. searchGames
- Method: GET
- Path:
/games.searchGames - Description: Search games
- Tags: games
17. byId
- Method: GET
- Path:
/games.byId - Description: Get game by ID
- Tags: games
18. findSwitchTitleId
- Method: GET
- Path:
/games.findSwitchTitleId - Description: Find Nintendo Switch title IDs by game name (fuzzy search)
- Tags: games
19. getBestSwitchTitleId
- Method: GET
- Path:
/games.getBestSwitchTitleId - Description: Get the best matching Nintendo Switch title ID for a game name
- Tags: games
20. getSwitchGamesStats
- Method: GET
- Path:
/games.getSwitchGamesStats - Description: Get Nintendo Switch games cache statistics
- Tags: games
21. findThreeDsTitleId
- Method: GET
- Path:
/games.findThreeDsTitleId - Description: Find Nintendo 3DS title IDs by game name (fuzzy search)
- Tags: games
22. getBestThreeDsTitleId
- Method: GET
- Path:
/games.getBestThreeDsTitleId - Description: Get the best matching Nintendo 3DS title ID for a game name
- Tags: games
23. getThreeDsGamesStats
- Method: GET
- Path:
/games.getThreeDsGamesStats - Description: Get Nintendo 3DS games cache statistics
- Tags: games
24. findSteamAppId
- Method: GET
- Path:
/games.findSteamAppId - Description: Find Steam App IDs by game name (fuzzy search)
- Tags: games
25. getBestSteamAppId
- Method: GET
- Path:
/games.getBestSteamAppId - Description: Get the best matching Steam App ID for a game name
- Tags: games
26. getSteamGamesStats
- Method: GET
- Path:
/games.getSteamGamesStats - Description: Get Steam games cache statistics
- Tags: games
27. batchBySteamAppIds
- Method: GET
- Path:
/games.batchBySteamAppIds - Description: Batch lookup games by Steam App IDs Optimized for large batches (up to 1000 Steam App IDs) Returns games with their listings filtered by emulator if specified Results cached for 5 minutes to optimize repeated queries
- Tags: games
28. stats
- Method: GET
- Path:
/general.stats - Description: Get app statistics
- Tags: general
29. systems
- Method: GET
- Path:
/general.systems - Description: Get all systems
- Tags: general
30. performanceScales
- Method: GET
- Path:
/general.performanceScales - Description: Get performance scales
- Tags: general
31. searchSuggestions
- Method: GET
- Path:
/general.searchSuggestions - Description: Get search suggestions
- Tags: general
32. trustLevels
- Method: GET
- Path:
/general.trustLevels - Description: Get trust levels (for mobile trust system integration)
- Tags: general
33. get
- Method: GET
- Path:
/gpus.get - Description: Get GPUs with search, filtering, and pagination
- Tags: gpus
34. getById
- Method: GET
- Path:
/gpus.getById - Description: Get GPU by ID
- Tags: gpus
35. checkUserHasReports
- Method: GET
- Path:
/listingReports.checkUserHasReports - Description: Check if a user has reports (for showing warnings)
- Tags: listingReports
36. driverVersions
- Method: GET
- Path:
/listings.driverVersions - Description: Get available driver versions (mirrors web listings.driverVersions)
- Tags: listings
37. get
- Method: GET
- Path:
/listings.get - Description: Get listings with pagination and filtering
- Tags: listings
38. getListings
- Method: GET
- Path:
/listings.getListings - Description: @deprecated Use 'get' instead - kept for backwards compatibility with Eden
- Tags: listings
39. featured
- Method: GET
- Path:
/listings.featured - Description: Get featured listings
- Tags: listings
40. byGame
- Method: GET
- Path:
/listings.byGame - Description: Get listings by game
- Tags: listings
41. byId
- Method: GET
- Path:
/listings.byId - Description: Get listing by ID
- Tags: listings
42. comments
- Method: GET
- Path:
/listings.comments - Description: Get listing comments
- Tags: listings
43. getEmulatorConfig
- Method: GET
- Path:
/listings.getEmulatorConfig - Description: Get emulator configuration for a listing Returns the configuration file content that the mobile app can use to launch the game with the correct settings
- Tags: listings
44. byId
- Method: GET
- Path:
/pcListings.byId - Description: Get a single PC listing by ID (mobile) Matches web visibility rules and returns materialized stats + userVote
- Tags: pcListings
45. get
- Method: GET
- Path:
/pcListings.get - Description: Get PC listings with pagination and filtering
- Tags: pcListings
46. cpus
- Method: GET
- Path:
/pcListings.cpus - Description: Get CPUs for mobile
- Tags: pcListings
47. gpus
- Method: GET
- Path:
/pcListings.gpus - Description: Get GPUs for mobile
- Tags: pcListings
48. searchGameImages
- Method: GET
- Path:
/rawg.searchGameImages - Description: Search for game images in RAWG database
- Tags: rawg
49. searchGames
- Method: GET
- Path:
/rawg.searchGames - Description: Search for games in RAWG database
- Tags: rawg
50. getGameImages
- Method: GET
- Path:
/rawg.getGameImages - Description: Get game images by ID
- Tags: rawg
51. getFollowers
- Method: GET
- Path:
/social.getFollowers - Description: getFollowers - social
- Tags: social
52. getFollowing
- Method: GET
- Path:
/social.getFollowing - Description: getFollowing - social
- Tags: social
53. isFollowing
- Method: GET
- Path:
/social.isFollowing - Description: isFollowing - social
- Tags: social
54. getFollowCounts
- Method: GET
- Path:
/social.getFollowCounts - Description: getFollowCounts - social
- Tags: social
55. getBulkFollowStatuses
- Method: GET
- Path:
/social.getBulkFollowStatuses - Description: getBulkFollowStatuses - social
- Tags: social
56. getRelationshipStatus
- Method: GET
- Path:
/social.getRelationshipStatus - Description: getRelationshipStatus - social
- Tags: social
57. get
- Method: GET
- Path:
/socs.get - Description: Get SoCs with search, filtering, and pagination
- Tags: socs
58. getById
- Method: GET
- Path:
/socs.getById - Description: Get SoC by ID
- Tags: socs
59. searchGameImages
- Method: GET
- Path:
/tgdb.searchGameImages - Description: Search for game images in TGDB database
- Tags: tgdb
60. searchGames
- Method: GET
- Path:
/tgdb.searchGames - Description: Search for games in TGDB database
- Tags: tgdb
61. getGameImageUrls
- Method: GET
- Path:
/tgdb.getGameImageUrls - Description: Get game image URLs for a specific game
- Tags: tgdb
62. getGameImages
- Method: GET
- Path:
/tgdb.getGameImages - Description: Get game images by game IDs
- Tags: tgdb
63. getPlatforms
- Method: GET
- Path:
/tgdb.getPlatforms - Description: Get available platforms from TGDB
- Tags: tgdb
64. userInfo
- Method: GET
- Path:
/trust.userInfo - Description: Get trust info for a specific user (public)
- Tags: trust
65. byId
- Method: GET
- Path:
/users.byId - Description: Get user profile by ID (public user profiles)
- Tags: users
Protected Endpoints (Authentication Required)
1. updateProfile
- Method: POST
- Path:
/auth.updateProfile - Description: Update mobile profile
- Tags: auth
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
2. deleteAccount
- Method: POST
- Path:
/auth.deleteAccount - Description: Delete account
- Tags: auth
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
3. isVerifiedDeveloper
-
Method: GET
-
Path:
/developers.isVerifiedDeveloper -
Description: Check if a user is a verified developer for an emulator
-
Tags: developers
-
Authentication: Bearer token required
4. create
-
Method: POST
-
Path:
/listingReports.create -
Description: Create a new listing report (user-facing)
-
Tags: listingReports
-
Authentication: Bearer token required
5. byUser
-
Method: GET
-
Path:
/listings.byUser -
Description: Get user listings
-
Tags: listings
-
Authentication: Bearer token required
6. create
- Method: POST
- Path:
/listings.create - Description: Create a new listing
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
7. update
- Method: POST
- Path:
/listings.update - Description: Update a listing
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
8. delete
- Method: POST
- Path:
/listings.delete - Description: Delete a listing
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
9. vote
- Method: POST
- Path:
/listings.vote - Description: Vote on a listing
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
10. userVote
-
Method: GET
-
Path:
/listings.userVote -
Description: Get user's vote on a listing
-
Tags: listings
-
Authentication: Bearer token required
11. createComment
- Method: POST
- Path:
/listings.createComment - Description: Create a comment
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
12. updateComment
- Method: POST
- Path:
/listings.updateComment - Description: Update a comment
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
13. deleteComment
- Method: POST
- Path:
/listings.deleteComment - Description: Delete a comment
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
14. voteComment
- Method: POST
- Path:
/listings.voteComment - Description: Vote on a comment
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
15. getUserCommentVotes
-
Method: GET
-
Path:
/listings.getUserCommentVotes -
Description: Get user votes for multiple comments
-
Tags: listings
-
Authentication: Bearer token required
16. reportComment
- Method: POST
- Path:
/listings.reportComment - Description: Report a comment
- Tags: listings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
17. get
-
Method: GET
-
Path:
/notifications.get -
Description: Get notifications with pagination
-
Tags: notifications
-
Authentication: Bearer token required
18. unreadCount
-
Method: GET
-
Path:
/notifications.unreadCount -
Description: Get unread notification count
-
Tags: notifications
-
Authentication: Bearer token required
19. markAsRead
- Method: POST
- Path:
/notifications.markAsRead - Description: Mark notification as read
- Tags: notifications
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
20. markAllAsRead
-
Method: POST
-
Path:
/notifications.markAllAsRead -
Description: Mark all notifications as read
-
Tags: notifications
-
Authentication: Bearer token required
21. create
- Method: POST
- Path:
/pcListings.create - Description: Create a new PC listing
- Tags: pcListings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
22. update
- Method: POST
- Path:
/pcListings.update - Description: Update a PC listing
- Tags: pcListings
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
23. get
-
Method: GET
-
Path:
/pcPresets.get -
Description: Get current user's PC presets
-
Tags: pcPresets
-
Authentication: Bearer token required
24. create
- Method: POST
- Path:
/pcPresets.create - Description: Create a new PC preset
- Tags: pcPresets
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
25. update
- Method: POST
- Path:
/pcPresets.update - Description: Update an existing PC preset
- Tags: pcPresets
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
26. delete
- Method: POST
- Path:
/pcPresets.delete - Description: Delete a PC preset
- Tags: pcPresets
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
27. get
-
Method: GET
-
Path:
/preferences.get -
Description: Get user preferences
-
Tags: preferences
-
Authentication: Bearer token required
28. update
- Method: POST
- Path:
/preferences.update - Description: Update user preferences
- Tags: preferences
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
29. addDevice
- Method: POST
- Path:
/preferences.addDevice - Description: Add device preference
- Tags: preferences
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
30. removeDevice
- Method: POST
- Path:
/preferences.removeDevice - Description: Remove device preference
- Tags: preferences
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
31. bulkUpdateDevices
- Method: POST
- Path:
/preferences.bulkUpdateDevices - Description: Bulk update device preferences
- Tags: preferences
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
32. bulkUpdateSocs
- Method: POST
- Path:
/preferences.bulkUpdateSocs - Description: Bulk update SOC preferences
- Tags: preferences
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
33. currentProfile
-
Method: GET
-
Path:
/preferences.currentProfile -
Description: Get current user's profile
-
Tags: preferences
-
Authentication: Bearer token required
34. profile
-
Method: GET
-
Path:
/preferences.profile -
Description: Get user profile by ID
-
Tags: preferences
-
Authentication: Bearer token required
35. updateProfile
- Method: POST
- Path:
/preferences.updateProfile - Description: Update profile
- Tags: preferences
- Request Body: JSON object required
- Content-Type: application/json
- Authentication: Bearer token required
36. follow
-
Method: POST
-
Path:
/social.follow -
Description: follow - social
-
Tags: social
-
Authentication: Bearer token required
37. unfollow
-
Method: POST
-
Path:
/social.unfollow -
Description: unfollow - social
-
Tags: social
-
Authentication: Bearer token required
38. removeFollower
-
Method: POST
-
Path:
/social.removeFollower -
Description: removeFollower - social
-
Tags: social
-
Authentication: Bearer token required
39. sendFriendRequest
-
Method: POST
-
Path:
/social.sendFriendRequest -
Description: sendFriendRequest - social
-
Tags: social
-
Authentication: Bearer token required
40. respondFriendRequest
-
Method: POST
-
Path:
/social.respondFriendRequest -
Description: respondFriendRequest - social
-
Tags: social
-
Authentication: Bearer token required
41. getFriendRequests
-
Method: GET
-
Path:
/social.getFriendRequests -
Description: getFriendRequests - social
-
Tags: social
-
Authentication: Bearer token required
42. getFriends
-
Method: GET
-
Path:
/social.getFriends -
Description: getFriends - social
-
Tags: social
-
Authentication: Bearer token required
43. blockUser
-
Method: POST
-
Path:
/social.blockUser -
Description: blockUser - social
-
Tags: social
-
Authentication: Bearer token required
44. unblockUser
-
Method: POST
-
Path:
/social.unblockUser -
Description: unblockUser - social
-
Tags: social
-
Authentication: Bearer token required
45. getBlockedUsers
-
Method: GET
-
Path:
/social.getBlockedUsers -
Description: getBlockedUsers - social
-
Tags: social
-
Authentication: Bearer token required
46. getActivityFeed
-
Method: GET
-
Path:
/social.getActivityFeed -
Description: getActivityFeed - social
-
Tags: social
-
Authentication: Bearer token required
47. myInfo
-
Method: GET
-
Path:
/trust.myInfo -
Description: Get current user's trust score and level
-
Tags: trust
-
Authentication: Bearer token required
Error Handling
All endpoints return consistent error responses:
{
"error": {
"message": "Error description",
"code": "ERROR_CODE",
"data": {
"code": "TRPC_ERROR_CODE",
"httpStatus": 400
}
}
}
Common error codes:
UNAUTHORIZED: Missing or invalid authenticationFORBIDDEN: User lacks permissionNOT_FOUND: Resource not foundBAD_REQUEST: Invalid input parametersINTERNAL_SERVER_ERROR: Server error
This documentation is automatically generated from tRPC procedures and OpenAPI specifications.