RexiMemo API Documentation
Use your RexiMemo account from scripts and apps without exposing browser sessions.
API v1 requests normally require a current 30-day bearer credential. Send it in the HTTP Authorization header. Do not put API keys or bearer credentials in query strings or public client-side code.
https://reximemo.net/api/v1Authentication example
curl -H 'Authorization: Bearer rxm_YOUR_KEY' \
https://reximemo.net/api/v1/meThe main API key is shown in full only when generated and RexiMemo stores only its hash. At the same time, Settings shows a short one-time login code that expires after 10 minutes. A client can redeem that code once for its own bearer credential linked to the same API key.
One-time login-code example
curl -X POST \
-H 'Content-Type: application/json' \
-d '{"code":"RM-ABCD-EFGH-JKLM"}' \
https://reximemo.net/api/v1/auth/login-codeUse this flow when a user is signing in to a RexiMemo API-based client and does not want to type or paste the full API key. The one-time code is generated alongside a new key in Settings → API Key, can be entered with or without its hyphens, and is valid for 10 minutes.
POST/api/v1/auth/login-codeRedeem a one-time client login code
Exchanges the short login code shown when an API key is generated for a bearer credential linked to that API key. This endpoint does not require an Authorization header. The code expires after 10 minutes and is consumed by the first successful redemption.
JSON body
{
"code": "RM-ABCD-EFGH-JKLM"
}Example response
{
"ok": true,
"token_type": "Bearer",
"api_key": "rxm_...",
"expires_at": 1780000000,
"expires_in_seconds": 2500000
}- Browse creators, Flipnotes, comments, channels and search.
- Read your account, favorites, follows, notifications and consoles.
- Download original Flipnote PPMs and existing memo-comment PPMs.
- Request real PNG thumbnails and creator profile-picture PNGs.
- Review and submit your own verified S2R migration requests.
- Favorite, follow, add stars and post text comments.
- Edit/delete your own Flipnote metadata and edit channels you own.
- Reading browser or DSi session records.
- Changing Settings or console configuration.
- Using moderator/administrator powers.
- Uploading a PPM that is not yours.
- Uploading memo-comment PPMs.
GET/api/v1API capabilities
Returns the authenticated account, API permissions, key lifetime, and only the experiment endpoints this account is currently allowed to use.
Example response
{
"ok": true,
"version": "v1",
"permissions": {
"browse": true,
"read_sessions": false,
"write_settings": false,
"download_flipnote_ppm": true,
"upload_flipnote_ppm": true
}
}GET/api/v1/meMy account
Returns your public account record plus star balances, unread notification count, and ticket status.
GET/api/v1/me/profile-picture.pngMy profile picture PNG
Returns your current profile picture as binary image/png. If your account has no selected profile picture, this returns HTTP 404.
GET/api/v1/me/migrationMigration state and review data
Returns your current Sudomemo migration request, selected/approved/imported IDs, status and user-facing staff message. When the stored S2R files are available, it also includes the full per-Flipnote review data and private preview URLs.
POST/api/v1/me/migration/reviewValidate S2R files and build a review
Uploads one or more verified .S2R files without creating the final migration request yet. RexiMemo verifies the manifests and Nintendo PPM signatures, stores the files privately for this account, and returns a review.descriptor plus per-Flipnote eligibility.
Multipart form
multipart/form-data
file field (repeatable):
s2r_file
optional text fields:
source_account
user_notes.S2R migration archive. Direct PPM publication uploads remain blocked.POST/api/v1/me/migrationSubmit an actual migration request
Submits the migration selection and then runs the same final eligibility/import checks as the website. You can either upload the S2R files directly as multipart data or submit JSON using the review.descriptor returned by the review endpoint.
JSON body
{
"review_descriptor": [
{"filename":"95FD4F3065E2146D@DSi.S2R","sha256":"..."}
],
"source_account": "Sudomemo username or profile URL",
"user_notes": "optional",
"selected_flipnotes": ["WATCH_ID_1", "WATCH_ID_2"],
"avatar_flipnote": "WATCH_ID_1",
"confirm_no_stars": true
}s2r_file field(s), plus source_account, user_notes, selected_flipnotes as a JSON array string, optional avatar_flipnote, and confirm_no_stars=1. If every selected Flipnote passes final checks it can be imported immediately; otherwise the unresolved selection remains for staff review.DELETE/api/v1/me/migrationCancel migration request
Cancels the current migration request and removes its private S2R/review files. Flipnotes that were already imported are intentionally kept.
GET/api/v1/me/migration/review/{sha256}/{index}/thumbnail.pngMigration review thumbnail
Returns a private PNG thumbnail for a staged/current S2R Flipnote. The SHA-256 and entry index come from the review response.
GET/api/v1/me/migration/review/{sha256}/{index}/file.ppmMigration review PPM
Returns the verified PPM from your own private migration review. This is a read/download route; it does not publish anything.
GET/api/v1/me/settingsSafe settings snapshot
Reads profile, notification preferences, consoles, Discord link state, passkey metadata, migration status, granted experiment access and API-key metadata.
sessions: null and API keys cannot access session records.GET/api/v1/me/consolesMy consoles
Lists linked console FSIDs and device metadata. This does not expose session IDs, IP addresses, browser user agents, or session history.
GET/api/v1/me/notificationsNotifications
Lists your notifications.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
POST/api/v1/me/notifications/readMark notifications read
Mark one notification, or all notifications, as read.
JSON body
{
"id": 123
}
or
{
"all": true
}GET/api/v1/me/favoritesMy favorites
Lists Flipnotes you have favorited.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/me/followersMy followers
Lists accounts following you.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/me/followingAccounts I follow
Lists accounts you follow.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/me/flipnotesMy Flipnotes
Lists Flipnotes owned by your account.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.sort—new,recent,top,popular, orhot.
GET/api/v1/me/channelsMy channels
Lists channels owned by your account.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/me/star-balanceStar balance
Returns your current colored-star balances.
GET/api/v1/me/ticketTicket status
Returns the current ticket status and star balances.
POST/api/v1/me/ticket/redeemRedeem a ticket
Draws a ticket using the configured Drawing Ticket rules. Winning responses include the selected prize and reward amounts. Returns HTTP 429 while the ticket is on cooldown.
JSON body
{}GET/api/v1/users/{public_id}Creator profile
Returns a creator and viewer-specific follow/subscription state.
GET/api/v1/users/{public_id}/profile-picture.pngCreator profile picture PNG
Returns that creator’s current profile picture as binary image/png. Returns 404 when the creator has no selected profile picture.
GET/api/v1/users/{public_id}/flipnotesCreator Flipnotes
Lists a creator’s Flipnotes.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.sort—new,recent,top,popular, orhot.
GET/api/v1/users/{public_id}/favoritesCreator favorites
Lists a creator’s public favorites.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/users/{public_id}/followersCreator followers
Lists a creator’s followers.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/users/{public_id}/followingCreator following
Lists accounts followed by a creator.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/users/{public_id}/channelsCreator channels
Lists channels owned by a creator.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
POST/api/v1/users/{public_id}/followFollow or unfollow
Sets your follow state for another creator.
JSON body
{
"enabled": true
}POST/api/v1/users/{public_id}/upload-notificationsCreator upload notifications
Turns upload notifications for a creator on or off.
JSON body
{
"enabled": true
}GET/api/v1/flipnotesBrowse Flipnotes
Lists Flipnotes across RexiMemo.
Query parameters
page/per_page— pagination, up to 50 per page.sort—new,recent,top,popular, orhot.creator— creator public ID.channel— channel public ID.
POST/api/v1/flipnotesUpload a Flipnote PPM
Publishes a PPM upload to your account.
Multipart form
multipart/form-data
file field:
ppm required Flipnote Studio .PPM file
optional text fields:
title up to 80 characters; defaults to "Flipnote by <username>"
description up to 500 characters
channel_public_id optional channel public ID
comments_enabled 1 | 0; defaults to 1GET/api/v1/flipnotes/{public_id}Flipnote details
Returns metadata, creator/channel data, views, downloads, star totals, viewer state, and direct API URLs for the PPM and PNG thumbnail.
GET/api/v1/flipnotes/{public_id}/commentsFlipnote comments
Lists text and memo comments.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/flipnotes/{public_id}/thumbnail.pngFull PNG thumbnail
Renders and returns the real Flipnote thumbnail as image/png. This is binary image data, not JSON.
Authorization: Bearer header even though the response is an image.GET/api/v1/flipnotes/{public_id}/file.ppmOriginal Flipnote PPM
Returns the original Flipnote .ppm as binary data.
Query parameters
download=1— additionally count the request as a Flipnote download.
POST/api/v1/flipnotes/{public_id}/favoriteFavorite or unfavorite
Sets your favorite state.
JSON body
{
"enabled": true
}POST/api/v1/flipnotes/{public_id}/starsAdd stars
Adds stars using your account balance and the same restrictions as the website.
JSON body
{
"color": "yellow",
"amount": 1
}amount is clamped to 1–100. Yellow-star limits and colored-star balances are enforced.POST/api/v1/flipnotes/{public_id}/commentsPost a text comment
Posts a text comment. Replies use the parent comment’s public ID.
JSON body
{
"text": "Nice Flipnote!",
"reply_to": "COMMENT_PUBLIC_ID"
}PATCH/api/v1/flipnotes/{public_id}Edit my Flipnote
Edits metadata on a Flipnote owned by your account. Any other field is rejected.
JSON body
{
"title": "New title",
"description": "Updated description",
"channel_public_id": "CHANNEL_PUBLIC_ID",
"comments_enabled": true
}channel_public_id to null or an empty string to remove the channel.DELETE/api/v1/flipnotes/{public_id}Delete my Flipnote
Deletes a Flipnote owned by your account. API keys cannot delete someone else’s Flipnotes.
GET/api/v1/comments/{public_id}Comment details
Returns one text or memo comment.
GET/api/v1/comments/{public_id}/thumbnail.pngMemo-comment PNG thumbnail
For memo comments, returns a rendered image/png thumbnail.
GET/api/v1/comments/{public_id}/file.ppmMemo-comment PPM
For an existing memo comment, downloads its original PPM. This does not provide memo-comment upload access.
GET/api/v1/channelsBrowse channels
Lists channels.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.
GET/api/v1/channels/{public_id}Channel details
Returns one channel.
GET/api/v1/channels/{public_id}/flipnotesChannel Flipnotes
Lists Flipnotes in a channel.
Query parameters
page— page number, starting at 1.per_page— 1–50 items per page.sort—new,recent,top,popular, orhot.
PATCH/api/v1/channels/{public_id}Edit a channel
Edits the title and/or description when your account has owner-level permission.
JSON body
{
"title": "Channel title",
"description": "Channel description"
}GET/api/v1/categoriesCategories
Returns RexiMemo’s category list.
GET/api/v1/searchSearch
Searches Flipnotes, channels, and creators.
Query parameters
q— search text.limit— 1–50 results per result type; default 30.
GET/api/v1/trending-creatorsTrending creators
Returns creators in ranked order.
Query parameters
limit— 1–100 creators; default 25.
PPM and PNG endpoints return binary files directly instead of JSON. They still require the bearer header. PNG routes include Flipnote thumbnails, memo-comment thumbnails, profile pictures, and migration-review thumbnails.
Download a PPM
curl -L \
-H 'Authorization: Bearer rxm_YOUR_KEY' \
-o flipnote.ppm \
https://reximemo.net/api/v1/flipnotes/FLIPNOTE_PUBLIC_ID/file.ppmDownload a PNG thumbnail
curl -L \
-H 'Authorization: Bearer rxm_YOUR_KEY' \
-o thumbnail.png \
https://reximemo.net/api/v1/flipnotes/FLIPNOTE_PUBLIC_ID/thumbnail.pngAppend ?download=1 to a Flipnote PPM request only when you want RexiMemo to increment that Flipnote’s download count.
JSON endpoints use this error envelope:
{
"ok": false,
"error": "invalid_api_key",
"message": "Supply a current RexiMemo API key in the Authorization: Bearer header."
}400 invalid request or data401 missing/expired/revoked API key403 authenticated but forbidden404 resource/endpoint not found or experiment not granted405 method not allowed413 encoder input too large429 rate limit or ticket cooldownBinary endpoints return JSON error bodies when processing fails.