help:api (locked)
AIBooru offers a REST-like API to make scripting easy. All you need is a way to GET, POST, PUT and DELETE to URLs. Responses are given in either XML or JSON format.
Testing
API calls can be tested on https://testbooru.donmai.us. Scripts should be tested there before using them on the main site.
Basics
HTTP defines four basic request methods: GET, POST, PUT and DELETE. You'll be using these methods to interact with the AIBooru API. Most API calls that change the state of the database (like creating, updating, or deleting something) require an HTTP POST, PUT or DELETE call. API calls that only retrieve data can typically be done with an HTTP GET call.
A URL is considered a resource and the HTTP methods are actions you perform on the resource. For example, GET /posts/23.json returns a JSON representation of post #23. GET /posts/23.xml returns an XML representation. PUT or PATCH /posts/6.json would update the resource, for example changing its tags.
Some resources require parameters. For example, you can find tags that start with the letter 'a' by calling GET /tags.json?search[name_matches]=a*. This will give you a JSON listing of all tags with names starting with an a.
For POST, PUT and DELETE requests you must pass these parameters along in the body instead of the query parameters. Body parameters may be encoded in one of two ways. The usual way is with key-values pairs using "Content-Type: application/x-www-form-urlencoded":
curl -u "$login:$api_key" -X PUT "https://testbooru.donmai.us/posts/6.json" -d 'post[rating]=s&post[tag_string]=danboo'
Parameters may also be encoded as JSON using "Content-Type: application/json":
curl -u "$login:$api_key" -X PUT "https://testbooru.donmai.us/posts/6.json" -d '{ "post": { "rating": "s", "tag_string": "danboo" } }' -H "Content-Type: application/json"
Responses
All API calls that change state will return a single element response (for XML calls). They are formatted like this:
<?xml version="1.0" encoding="UTF-8"?> <response success="false" reason="duplicate"/>
For JSON responses, they'll look like this:
{ "success": false, "reason": "duplicate" }
While you can usually determine success or failure based on the response object, you can also figure out what happened based on the HTTP status code. In addition to the standard ones, AIBooru uses some custom status codes in the 4xx and 5xx range.
- 200 OK: Request was successful
- 204 No Content: Request was successful (returned by create actions)
- 400 Bad Request: The given parameters could not be parsed
- 401 Unauthorized: Authentication failed
- 403 Forbidden: Access denied (see help:users for permissions information)
- 404 Not Found: Not found
- 410 Gone: Pagination limit (see help:users for pagination limits)
- 420 Invalid Record: Record could not be saved
- 422 Locked: The resource is locked and cannot be modified
- 423 Already Exists: Resource already exists
- 424 Invalid Parameters: The given parameters were invalid
- 429 User Throttled: User is throttled, try again later (see help:users for API limits)
- 500 Internal Server Error: A database timeout, or some unknown error occurred on the server
- 502 Bad Gateway: Server cannot currently handle the request, try again later (returned during heavy load)
- 503 Service Unavailable: Server cannot currently handle the request, try again later (returned during downbooru)
Authentication
You will need an API key if you need to login using the API. You can generate an API key by visiting your user profile and clicking the Generate API key button.
To authenticate with the API, pass the login
and api_key
URL parameters, where login
is your username and api_key
is your API key:
https://testbooru.donmai.us/profile.json?login=your_username&api_key=your_api_key
You can also authenticate using HTTP Basic Authentication:
curl "https://$username:[email protected]/profile.json" curl --user "$username:$api_key" https://testbooru.donmai.us/profile.json
Most HTTP libraries support HTTP basic authentication out of the box. If yours doesn't, you can generate the authentication header manually. The format is Authentication: Basic $secret
where $secret = base64($username + ":" + $api_key)
. In other words, concatenate your username and API key together, separated by a colon, then Base64 encode the result:
curl --header "Authorization: Basic $(printf "%s" "$username:$api_key" | base64)" https://testbooru.donmai.us/profile.json
If you are writing a user script for a browser, you do not need to embed an API key. You can rely on the user's session.
⚠️ IMPORTANT! Keep your API key secret. Treat it like a password. Gaining access to it allows full access to your account. Do not publicly post your API key or distribute it in scripts.
Rate Limits
API reads are not limited, but most kinds of update actions are rate limited according to user level:
- Basic users: 1 update/second
- Gold users and above: 4 updates/second
Each rate-limited endpoint has a burst pool, which lets a user make several consecutive updates before being rate limited. The rate at which the pool is recharged depends on the endpoint, but most follow the rates above.
The burst pool size, recharge rate, and current limits are returned as JSON in the x-rate-limit
HTTP header. They can also be found at /rate_limits, which shows the limits as of the last API call (the page won't update until the API is used again).
Rate limits are shared between accounts and IP addresses: multiple accounts with the same IP address will share the same rate limit.
Queries
Common Search Parameters
All search endpoints support a common set of parameters:
- page Returns the given page. Subject to maximum page limits (see help:users).
You can also use b<id>
and a<id>
to request results before <id> or after <id>, respectively.
E.g. to get a page of posts before post #999999, you'd make a request to /posts.json?page=b999999
.
- limit The number of results to return per page. The maximum limit is 200 for /posts.json and 1000 for everything else.
- search[id]
- search[created_at]
- search[updated_at]
- search[order]=custom Returns results in the same order as given by
search[id]=3,2,1
.
Parameter Parsing
Numeric search parameters support ranges:
100
>100
>=100
<100
<=100
100,200,300
100..200
(inclusive)
Date parameters also support ranges:
2012-01-01
>2012-01-01
>=2012-01-01
<2012-01-01
<=2012-01-01
2012-01-01,2012-01-02
2012-01-01..2013-01-01
(inclusive)
Boolean parameters accept any of the following values for true or false:
- True: true, t, yes, y, on, 1
- False: false, f, no, n, off, 0
Most string parameters support using asterisks (*) as wildcards. Wildcards can be escaped with \*
. Literal backslashes can be escaped with \\
.
Versioned Types
Type Versions
- API:Artist versions
- API:Artist commentary versions
- API:Note versions
- API:Pool versions
- API:Post versions
- API:Wiki page versions
Non-versioned Types
- API:Comments
- API:Dmails
- API:Forum posts
- API:Forum topics
- API:Post appeals
- API:Post flags
- API:Tags
- API:Tag aliases
- API:Tag implications
- API:Uploads
- API:Users
Other Functions
Related Tags
Show
The base URL is GET /related_tag.json.
- query REQUIRED The tag to find the related tags for.
- category If specified, show only tags of a specific category. Can be: general, artist, copyright, character, meta
List of API endpoints
API Endpoints
Verb URI Pattern Controller#Action GET /posts/random(.:format) posts#random GET /posts(.:format) posts#index GET /posts/:id(.:format) posts#show PATCH /posts/:id(.:format) posts#update PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) posts#destroy GET /autocomplete(.:format) autocomplete#index GET / posts#index GET /admin/users/:id/edit(.:format) admin/users#edit PATCH /admin/users/:id(.:format) admin/users#update PUT /admin/users/:id(.:format) admin/users#update GET /admin/dashboard(.:format) admin/dashboards#show GET /moderator/dashboard(.:format) moderator/dashboards#show GET /moderator/ip_addrs/search(.:format) moderator/ip_addrs#search GET /moderator/ip_addrs(.:format) moderator/ip_addrs#index POST /moderator/post/posts/:id/expunge(.:format) moderator/post/posts#expunge GET /moderator/post/posts/:id/confirm_move_favorites(.:format) moderator/post/posts#confirm_move_favorites POST /moderator/post/posts/:id/move_favorites(.:format) moderator/post/posts#move_favorites GET /moderator/post/posts/:id/confirm_ban(.:format) moderator/post/posts#confirm_ban POST /moderator/post/posts/:id/ban(.:format) moderator/post/posts#ban POST /moderator/post/posts/:id/unban(.:format) moderator/post/posts#unban GET /moderator/ip_addrs/search(.:format) moderator/ip_addrs#search GET /moderator/ip_addrs(.:format) moderator/ip_addrs#index GET /explore/posts/popular(.:format) explore/posts#popular GET /explore/posts/curated(.:format) explore/posts#curated GET /explore/posts/viewed(.:format) explore/posts#viewed GET /explore/posts/searches(.:format) explore/posts#searches GET /explore/posts/missed_searches(.:format) explore/posts#missed_searches GET /maintenance/user/count_fixes/new(.:format) maintenance/user/count_fixes#new POST /maintenance/user/count_fixes(.:format) maintenance/user/count_fixes#create GET /maintenance/user/email_notification(.:format) maintenance/user/email_notifications#show DELETE /maintenance/user/email_notification(.:format) maintenance/user/email_notifications#destroy GET /maintenance/user/deletion(.:format) maintenance/user/deletions#show DELETE /maintenance/user/deletion(.:format) maintenance/user/deletions#destroy POST /maintenance/user/api_key/view(.:format) maintenance/user/api_keys#view GET /maintenance/user/api_key(.:format) maintenance/user/api_keys#show PATCH /maintenance/user/api_key(.:format) maintenance/user/api_keys#update PUT /maintenance/user/api_key(.:format) maintenance/user/api_keys#update DELETE /maintenance/user/api_key(.:format) maintenance/user/api_keys#destroy PUT /artists/:id/revert(.:format) artists#revert PUT /artists/:id/ban(.:format) artists#ban PUT /artists/:id/unban(.:format) artists#unban GET /artists/show_or_new(.:format) artists#show_or_new GET /artists/banned(.:format) artists#banned GET /artists(.:format) artists#index POST /artists(.:format) artists#create GET /artists/new(.:format) artists#new GET /artists/:id/edit(.:format) artists#edit GET /artists/:id(.:format) artists#show PATCH /artists/:id(.:format) artists#update PUT /artists/:id(.:format) artists#update DELETE /artists/:id(.:format) artists#destroy GET /artist_urls(.:format) artist_urls#index GET /artist_versions/search(.:format) artist_versions#search GET /artist_versions(.:format) artist_versions#index GET /artist_versions/:id(.:format) artist_versions#show GET /bans(.:format) bans#index POST /bans(.:format) bans#create GET /bans/new(.:format) bans#new GET /bans/:id/edit(.:format) bans#edit GET /bans/:id(.:format) bans#show PATCH /bans/:id(.:format) bans#update PUT /bans/:id(.:format) bans#update DELETE /bans/:id(.:format) bans#destroy POST /bulk_update_requests/:id/approve(.:format) bulk_update_requests#approve GET /bulk_update_requests(.:format) bulk_update_requests#index POST /bulk_update_requests(.:format) bulk_update_requests#create GET /bulk_update_requests/new(.:format) bulk_update_requests#new GET /bulk_update_requests/:id/edit(.:format) bulk_update_requests#edit GET /bulk_update_requests/:id(.:format) bulk_update_requests#show PATCH /bulk_update_requests/:id(.:format) bulk_update_requests#update PUT /bulk_update_requests/:id(.:format) bulk_update_requests#update DELETE /bulk_update_requests/:id(.:format) bulk_update_requests#destroy GET /comment_votes(.:format) comment_votes#index DELETE /comments/:comment_id/votes(.:format) comment_votes#destroy POST /comments/:comment_id/votes(.:format) comment_votes#create GET /comments/search(.:format) comments#search POST /comments/:id/undelete(.:format) comments#undelete GET /comments(.:format) comments#index POST /comments(.:format) comments#create GET /comments/new(.:format) comments#new GET /comments/:id/edit(.:format) comments#edit GET /comments/:id(.:format) comments#show PATCH /comments/:id(.:format) comments#update PUT /comments/:id(.:format) comments#update DELETE /comments/:id(.:format) comments#destroy GET /counts/posts(.:format) counts#posts GET /counts(.:format) counts#index POST /counts(.:format) counts#create GET /counts/new(.:format) counts#new GET /counts/:id/edit(.:format) counts#edit GET /counts/:id(.:format) counts#show PATCH /counts/:id(.:format) counts#update PUT /counts/:id(.:format) counts#update DELETE /counts/:id(.:format) counts#destroy PUT /delayed_jobs/:id/run(.:format) delayed_jobs#run PUT /delayed_jobs/:id/retry(.:format) delayed_jobs#retry PUT /delayed_jobs/:id/cancel(.:format) delayed_jobs#cancel GET /delayed_jobs(.:format) delayed_jobs#index DELETE /delayed_jobs/:id(.:format) delayed_jobs#destroy POST /dmails/mark_all_as_read(.:format) dmails#mark_all_as_read GET /dmails(.:format) dmails#index POST /dmails(.:format) dmails#create GET /dmails/new(.:format) dmails#new GET /dmails/:id(.:format) dmails#show PATCH /dmails/:id(.:format) dmails#update PUT /dmails/:id(.:format) dmails#update POST /dtext_preview(.:format) dtext_previews#create GET /dtext_links(.:format) dtext_links#index GET /emails(.:format) emails#index GET /emails/:id(.:format) emails#show GET /favorites(.:format) favorites#index POST /favorites(.:format) favorites#create DELETE /favorites/:id(.:format) favorites#destroy PUT /favorite_groups/:id/add_post(.:format) favorite_groups#add_post GET /favorite_groups/:favorite_group_id/order/edit(.:format) favorite_group_orders#edit GET /favorite_groups(.:format) favorite_groups#index POST /favorite_groups(.:format) favorite_groups#create GET /favorite_groups/new(.:format) favorite_groups#new GET /favorite_groups/:id/edit(.:format) favorite_groups#edit GET /favorite_groups/:id(.:format) favorite_groups#show PATCH /favorite_groups/:id(.:format) favorite_groups#update PUT /favorite_groups/:id(.:format) favorite_groups#update DELETE /favorite_groups/:id(.:format) favorite_groups#destroy POST /forum_posts/:id/undelete(.:format) forum_posts#undelete GET /forum_posts/search(.:format) forum_posts#search GET /forum_posts(.:format) forum_posts#index POST /forum_posts(.:format) forum_posts#create GET /forum_posts/new(.:format) forum_posts#new GET /forum_posts/:id/edit(.:format) forum_posts#edit GET /forum_posts/:id(.:format) forum_posts#show PATCH /forum_posts/:id(.:format) forum_posts#update PUT /forum_posts/:id(.:format) forum_posts#update DELETE /forum_posts/:id(.:format) forum_posts#destroy GET /forum_post_votes(.:format) forum_post_votes#index POST /forum_post_votes(.:format) forum_post_votes#create DELETE /forum_post_votes/:id(.:format) forum_post_votes#destroy POST /forum_topics/:id/undelete(.:format) forum_topics#undelete POST /forum_topics/mark_all_as_read(.:format) forum_topics#mark_all_as_read GET /forum_topics(.:format) forum_topics#index POST /forum_topics(.:format) forum_topics#create GET /forum_topics/new(.:format) forum_topics#new GET /forum_topics/:id/edit(.:format) forum_topics#edit GET /forum_topics/:id(.:format) forum_topics#show PATCH /forum_topics/:id(.:format) forum_topics#update PUT /forum_topics/:id(.:format) forum_topics#update DELETE /forum_topics/:id(.:format) forum_topics#destroy GET /forum_topic_visits(.:format) forum_topic_visits#index GET /ip_bans(.:format) ip_bans#index POST /ip_bans(.:format) ip_bans#create GET /ip_bans/new(.:format) ip_bans#new PATCH /ip_bans/:id(.:format) ip_bans#update PUT /ip_bans/:id(.:format) ip_bans#update GET /ip_addresses(.:format) ip_addresses#index GET /ip_addresses/:id(.:format) ip_addresses#show {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} GET /iqdb_queries/preview(.:format) iqdb_queries#preview GET /iqdb_queries/check(.:format) redirect(301) GET /iqdb_queries(.:format) iqdb_queries#show POST /iqdb_queries(.:format) iqdb_queries#create GET /mod_actions(.:format) mod_actions#index POST /mod_actions(.:format) mod_actions#create GET /mod_actions/new(.:format) mod_actions#new GET /mod_actions/:id/edit(.:format) mod_actions#edit GET /mod_actions/:id(.:format) mod_actions#show PATCH /mod_actions/:id(.:format) mod_actions#update PUT /mod_actions/:id(.:format) mod_actions#update DELETE /mod_actions/:id(.:format) mod_actions#destroy GET /moderation_reports(.:format) moderation_reports#index POST /moderation_reports(.:format) moderation_reports#create GET /moderation_reports/new(.:format) moderation_reports#new GET /moderation_reports/:id(.:format) moderation_reports#show GET /modqueue(.:format) modqueue#index GET /news_updates(.:format) news_updates#index POST /news_updates(.:format) news_updates#create GET /news_updates/new(.:format) news_updates#new GET /news_updates/:id/edit(.:format) news_updates#edit GET /news_updates/:id(.:format) news_updates#show PATCH /news_updates/:id(.:format) news_updates#update PUT /news_updates/:id(.:format) news_updates#update DELETE /news_updates/:id(.:format) news_updates#destroy PUT /notes/:id/revert(.:format) notes#revert GET /notes(.:format) notes#index POST /notes(.:format) notes#create GET /notes/new(.:format) notes#new GET /notes/:id/edit(.:format) notes#edit GET /notes/:id(.:format) notes#show PATCH /notes/:id(.:format) notes#update PUT /notes/:id(.:format) notes#update DELETE /notes/:id(.:format) notes#destroy GET /note_versions(.:format) note_versions#index GET /note_versions/:id(.:format) note_versions#show GET /note_previews(.:format) note_previews#show GET /password_reset(.:format) password_resets#show POST /password_reset(.:format) password_resets#create GET /pixiv_ugoira_frame_data(.:format) pixiv_ugoira_frame_data#index PUT /pools/:id/revert(.:format) pools#revert POST /pools/:id/undelete(.:format) pools#undelete GET /pools/gallery(.:format) pools#gallery GET /pools/:pool_id/order/edit(.:format) pool_orders#edit GET /pools(.:format) pools#index POST /pools(.:format) pools#create GET /pools/new(.:format) pools#new GET /pools/:id/edit(.:format) pools#edit GET /pools/:id(.:format) pools#show PATCH /pools/:id(.:format) pools#update PUT /pools/:id(.:format) pools#update DELETE /pools/:id(.:format) pools#destroy POST /pool_element(.:format) pool_elements#create GET /pool_versions/:id/diff(.:format) pool_versions#diff GET /pool_versions/search(.:format) pool_versions#search GET /pool_versions(.:format) pool_versions#index GET /post_replacements(.:format) post_replacements#index POST /post_replacements(.:format) post_replacements#create GET /post_replacements/new(.:format) post_replacements#new PATCH /post_replacements/:id(.:format) post_replacements#update PUT /post_replacements/:id(.:format) post_replacements#update GET /post_votes(.:format) post_votes#index GET /posts/:post_id/events(.:format) post_events#index GET /posts/:post_id/replacements(.:format) post_replacements#index POST /posts/:post_id/replacements(.:format) post_replacements#create GET /posts/:post_id/replacements/new(.:format) post_replacements#new PUT /posts/:post_id/artist_commentary/create_or_update(.:format) artist_commentaries#create_or_update PUT /posts/:post_id/artist_commentary/revert(.:format) artist_commentaries#revert GET /posts/:post_id/artist_commentary(.:format) artist_commentaries#show DELETE /posts/:post_id/votes(.:format) post_votes#destroy POST /posts/:post_id/votes(.:format) post_votes#create PUT /posts/:id/revert(.:format) posts#revert PUT /posts/:id/copy_notes(.:format) posts#copy_notes GET /posts/:id/show_seq(.:format) posts#show_seq PUT /posts/:id/mark_as_translated(.:format) posts#mark_as_translated GET /posts/:post_id/similar(.:format) iqdb_queries#index GET /post_appeals(.:format) post_appeals#index POST /post_appeals(.:format) post_appeals#create GET /post_appeals/new(.:format) post_appeals#new GET /post_appeals/:id/edit(.:format) post_appeals#edit GET /post_appeals/:id(.:format) post_appeals#show PATCH /post_appeals/:id(.:format) post_appeals#update PUT /post_appeals/:id(.:format) post_appeals#update DELETE /post_appeals/:id(.:format) post_appeals#destroy GET /post_flags(.:format) post_flags#index POST /post_flags(.:format) post_flags#create GET /post_flags/new(.:format) post_flags#new GET /post_flags/:id/edit(.:format) post_flags#edit GET /post_flags/:id(.:format) post_flags#show PATCH /post_flags/:id(.:format) post_flags#update PUT /post_flags/:id(.:format) post_flags#update DELETE /post_flags/:id(.:format) post_flags#destroy GET /post_approvals(.:format) post_approvals#index POST /post_approvals(.:format) post_approvals#create GET /post_disapprovals(.:format) post_disapprovals#index POST /post_disapprovals(.:format) post_disapprovals#create GET /post_disapprovals/:id(.:format) post_disapprovals#show PUT /post_versions/:id/undo(.:format) post_versions#undo GET /post_versions/search(.:format) post_versions#search GET /post_versions(.:format) post_versions#index PUT /artist_commentaries/create_or_update(.:format) artist_commentaries#create_or_update GET /artist_commentaries/search(.:format) artist_commentaries#search PUT /artist_commentaries/:id/revert(.:format) artist_commentaries#revert GET /artist_commentaries(.:format) artist_commentaries#index GET /artist_commentaries/:id(.:format) artist_commentaries#show GET /artist_commentary_versions(.:format) artist_commentary_versions#index GET /artist_commentary_versions/:id(.:format) artist_commentary_versions#show GET /related_tag(.:format) related_tags#show PATCH /related_tag(.:format) related_tags#update PUT /related_tag(.:format) related_tags#update GET /recommended_posts(.:format) recommended_posts#index GET /robots(.:format) robots#index GET /saved_searches(.:format) saved_searches#index POST /saved_searches(.:format) saved_searches#create GET /saved_searches/new(.:format) saved_searches#new GET /saved_searches/:id/edit(.:format) saved_searches#edit PATCH /saved_searches/:id(.:format) saved_searches#update PUT /saved_searches/:id(.:format) saved_searches#update DELETE /saved_searches/:id(.:format) saved_searches#destroy GET /session/sign_out(.:format) sessions#sign_out GET /session/new(.:format) sessions#new DELETE /session(.:format) sessions#destroy POST /session(.:format) sessions#create GET /source(.:format) sources#show GET /status(.:format) status#show GET /tags(.:format) tags#index POST /tags(.:format) tags#create GET /tags/new(.:format) tags#new GET /tags/:id/edit(.:format) tags#edit GET /tags/:id(.:format) tags#show PATCH /tags/:id(.:format) tags#update PUT /tags/:id(.:format) tags#update DELETE /tags/:id(.:format) tags#destroy GET /tag_aliases(.:format) tag_aliases#index GET /tag_aliases/:id(.:format) tag_aliases#show DELETE /tag_aliases/:id(.:format) tag_aliases#destroy GET /tag_implications(.:format) tag_implications#index GET /tag_implications/:id(.:format) tag_implications#show DELETE /tag_implications/:id(.:format) tag_implications#destroy POST /uploads/preprocess(.:format) uploads#preprocess GET /uploads/batch(.:format) uploads#batch GET /uploads/image_proxy(.:format) uploads#image_proxy GET /uploads(.:format) uploads#index POST /uploads(.:format) uploads#create GET /uploads/new(.:format) uploads#new GET /uploads/:id/edit(.:format) uploads#edit GET /uploads/:id(.:format) uploads#show PATCH /uploads/:id(.:format) uploads#update PUT /uploads/:id(.:format) uploads#update DELETE /uploads/:id(.:format) uploads#destroy GET /users/:user_id/favorite_groups(.:format) favorite_groups#index GET /users/:user_id/email/verify(.:format) emails#verify POST /users/:user_id/email/send_confirmation(.:format) emails#send_confirmation GET /users/:user_id/email/edit(.:format) emails#edit GET /users/:user_id/email(.:format) emails#show PATCH /users/:user_id/email(.:format) emails#update PUT /users/:user_id/email(.:format) emails#update GET /users/:user_id/password/edit(.:format) passwords#edit PATCH /users/:user_id/password(.:format) passwords#update PUT /users/:user_id/password(.:format) passwords#update POST /users/:user_id/api_key/view(.:format) maintenance/user/api_keys#view GET /users/:user_id/api_key(.:format) maintenance/user/api_keys#show PATCH /users/:user_id/api_key(.:format) maintenance/user/api_keys#update PUT /users/:user_id/api_key(.:format) maintenance/user/api_keys#update DELETE /users/:user_id/api_key(.:format) maintenance/user/api_keys#destroy GET /users/custom_style(.:format) users#custom_style GET /users(.:format) users#index POST /users(.:format) users#create GET /users/new(.:format) users#new GET /users/:id/edit(.:format) users#edit GET /users/:id(.:format) users#show PATCH /users/:id(.:format) users#update PUT /users/:id(.:format) users#update DELETE /users/:id(.:format) users#destroy GET /user_upgrades(.:format) user_upgrades#index POST /user_upgrades(.:format) user_upgrades#create GET /user_upgrades/new(.:format) user_upgrades#new GET /user_upgrades/:id(.:format) user_upgrades#show GET /user_feedbacks(.:format) user_feedbacks#index POST /user_feedbacks(.:format) user_feedbacks#create GET /user_feedbacks/new(.:format) user_feedbacks#new GET /user_feedbacks/:id/edit(.:format) user_feedbacks#edit GET /user_feedbacks/:id(.:format) user_feedbacks#show PATCH /user_feedbacks/:id(.:format) user_feedbacks#update PUT /user_feedbacks/:id(.:format) user_feedbacks#update GET /user_name_change_requests(.:format) user_name_change_requests#index POST /user_name_change_requests(.:format) user_name_change_requests#create GET /user_name_change_requests/new(.:format) user_name_change_requests#new GET /user_name_change_requests/:id(.:format) user_name_change_requests#show POST /webhooks/receive(.:format) webhooks#receive GET /webhooks(.:format) webhooks#index POST /webhooks(.:format) webhooks#create GET /webhooks/new(.:format) webhooks#new GET /webhooks/:id/edit(.:format) webhooks#edit GET /webhooks/:id(.:format) webhooks#show PATCH /webhooks/:id(.:format) webhooks#update PUT /webhooks/:id(.:format) webhooks#update DELETE /webhooks/:id(.:format) webhooks#destroy PUT /wiki_pages/:id/revert(.:format) wiki_pages#revert {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} GET /wiki_pages/search(.:format) wiki_pages#search GET /wiki_pages/show_or_new(.:format) wiki_pages#show_or_new GET /wiki_pages(.:format) wiki_pages#index POST /wiki_pages(.:format) wiki_pages#create GET /wiki_pages/new(.:format) wiki_pages#new GET /wiki_pages/:id/edit(.:format) wiki_pages#edit {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} GET /wiki_pages/:id(.:format) wiki_pages#show {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} PATCH /wiki_pages/:id(.:format) wiki_pages#update {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} PUT /wiki_pages/:id(.:format) wiki_pages#update {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} DELETE /wiki_pages/:id(.:format) wiki_pages#destroy {:id=>/.+?(?=\.json|\.xml|\.html)|.+/} GET /wiki_page_versions/diff(.:format) wiki_page_versions#diff GET /wiki_page_versions(.:format) wiki_page_versions#index GET /wiki_page_versions/:id(.:format) wiki_page_versions#show GET /tag/index.xml(.:format) legacy#tags {:format=>/xml/} GET /tag/index.json(.:format) legacy#tags {:format=>/json/} GET /post/index.xml(.:format) legacy#posts {:format=>/xml/} GET /post/index.json(.:format) legacy#posts {:format=>/json/} GET /artist(.:format) redirect(301) GET /artist/show/:id(.:format) redirect(301, /artists/%{id}) GET /artist/show(.:format) redirect(301) GET /forum(.:format) redirect(301) GET /forum/show/:id(.:format) redirect(301) GET /pool/show/:id(.:format) redirect(301, /pools/%{id}) GET /post/index(.:format) redirect(301) GET /post/atom(.:format) redirect(301) GET /post/show/:id/:tag_title(.:format) redirect(301, /posts/%{id}) GET /post/show/:id(.:format) redirect(301, /posts/%{id}) GET /tag(.:format) redirect(301) GET /tag/index(.:format) redirect(301) GET /user/show/:id(.:format) redirect(301, /users/%{id}) GET /wiki/show(.:format) redirect(301) GET /help/:title(.:format) redirect(301) GET /login(.:format) sessions#new GET /logout(.:format) sessions#sign_out GET /profile(.:format) users#profile GET /settings(.:format) users#settings GET /sitemap(.:format) static#sitemap_index GET /opensearch(.:format) static#opensearch GET /privacy(.:format) static#privacy_policy GET /terms_of_service(.:format) static#terms_of_service GET /static/keyboard_shortcuts(.:format) static#keyboard_shortcuts GET /static/bookmarklet(.:format) static#bookmarklet GET /static/site_map(.:format) static#site_map GET /static/contact(.:format) static#contact GET /static/dtext_help(.:format) static#dtext_help GET /static/terms_of_service(.:format) redirect(301) GET /mock/recommender/recommend/:user_id(.:format) mock_services#recommender_recommend GET /mock/recommender/similiar/:post_id(.:format) mock_services#recommender_similar GET /mock/reportbooru/missed_searches(.:format) mock_services#reportbooru_missed_searches GET /mock/reportbooru/post_searches/rank(.:format) mock_services#reportbooru_post_searches GET /mock/reportbooru/post_views/rank(.:format) mock_services#reportbooru_post_views GET /mock/iqdbs/similar(.:format) mock_services#iqdbs_similar POST /mock/iqdbs/similar(.:format) mock_services#iqdbs_similar /*other(.:format) static#not_found
See also
- Help:Number syntax
- Help:Text syntax
- Help:User syntax
- Help:Boolean syntax
- Help:Array syntax
- Help:API read requests
- Help:API write requests
- Help:Common URL Parameters