1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
|
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Help:Api Wiki | Danbooru</title>
<link href="/favicon.ico" rel="icon" sizes="16x16" type="image/x-icon">
<link href="/favicon.svg" rel="icon" sizes="any" type="image/svg+xml">
<link rel="canonical" href="https://danbooru.donmai.us/wiki_pages/help:api">
<link rel="search" type="application/opensearchdescription+xml" href="https://danbooru.donmai.us/opensearch.xml?version=2" title="Search posts">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="Wd757suCDuPJkJeJoJJ4BfUD60F6oCEnq1a1x_r77o20vJwIAJqHKRQOnsImirN7pt7mMQ3tdRoCt8xOZ0u9NQ" />
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="autocomplete-tag-prefixes" content="["ch:","co:","gen:","char:","copy:","art:","meta:","general:","character:","copyright:","artist:"]">
<script src="/packs/js/runtime-0addf670eec96d42fec9.js"></script>
<script src="/packs/js/948-d14ebcdd294788cb0769.js"></script>
<script src="/packs/js/application-9bb4dec4c9ff73e2af93.js"></script>
<link rel="stylesheet" href="/packs/css/application-f43c8e3d.css" />
<meta name="description" content="Danbooru 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...">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Danbooru">
<meta property="og:title" content="Help:Api Wiki | Danbooru">
<meta property="og:description" content="Danbooru 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...">
<meta property="og:url" content="https://danbooru.donmai.us/wiki_pages/help:api">
<meta name="twitter:site" content="@danboorubot">
<meta name="twitter:title" content="Help:Api Wiki | Danbooru">
<meta name="twitter:description" content="Danbooru 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...">
<meta name="git-hash" content="a75d42dd4b6c1d97d8ab90e5a3da29a32eed393f">
<meta name="theme-color" content="hsl(213, 100%, 50%)">
</head>
<body lang="en" class="c-wiki-pages a-show flex flex-col" spellcheck="false" data-controller="wiki-pages" data-action="show" data-layout="sidebar" data-current-user-ip-addr="2601:1c2:e80:46d0:1da5:d038:8946:baaf" data-current-user-save-data="false" data-current-user-id="null" data-current-user-name="Anonymous" data-current-user-level="0" data-current-user-level-string="null" data-current-user-theme="auto" data-current-user-comment-threshold="-8" data-current-user-default-image-size="large" data-current-user-time-zone="Eastern Time (US & Canada)" data-current-user-per-page="20" data-current-user-is-banned="false" data-current-user-receive-email-notifications="false" data-current-user-new-post-navigation-layout="true" data-current-user-enable-private-favorites="false" data-current-user-show-deleted-children="false" data-current-user-disable-categorized-saved-searches="false" data-current-user-disable-tagged-filenames="false" data-current-user-disable-mobile-gestures="false" data-current-user-enable-safe-mode="false" data-current-user-enable-desktop-mode="false" data-current-user-disable-post-tooltips="false" data-current-user-requires-verification="false" data-current-user-is-verified="false" data-current-user-show-deleted-posts="false" data-current-user-is-approver="false" data-current-user-is-anonymous="true" data-current-user-is-member="false" data-current-user-is-gold="false" data-current-user-is-platinum="false" data-current-user-is-builder="false" data-current-user-is-moderator="false" data-current-user-is-contributor="false" data-current-user-is-admin="false" data-current-user-is-owner="false" data-current-user-is-restricted="false" data-cookie-news-ticker="null" data-cookie-hide-upgrade-account-notice="null" data-cookie-hide-verify-account-notice="null" data-cookie-hide-dmail-notice="null" data-cookie-dab="null" data-cookie-show-relationship-previews="null" data-cookie-post-preview-size="null" data-cookie-post-preview-show-votes="null" data-wiki-page-id="43568" data-wiki-page-created-at="2013-03-18T11:08:03.991640-04:00" data-wiki-page-updated-at="2025-12-06T02:16:25.205662-05:00" data-wiki-page-is-locked="false" data-wiki-page-is-deleted="false">
<header id="top" class="md:space-y-0 mt-2" x-data="{ menuOpen: false }">
<div class="flex items-center justify-between mx-8 sm:mx-2 text-xxl">
<div id="app-name-header" class="inline-flex items-center gap-2">
<a id="app-logo" href="/"><img class="h-9 hover:brightness-125" src="/packs/static/danbooru-logo-128x128-ea111b6658173e847734.png" /></a>
<a id="app-name" class="font-header font-bold leading-none" href="/">Danbooru</a>
</div>
<a class="mobile-only cursor-pointer" x-on:click="menuOpen = !menuOpen">
<svg class="icon svg-icon menu-icon block w-6" viewBox="0 0 448 512" x-show="!menuOpen"><use fill="currentColor" href="/packs/static/icons-b92dd088a6e3ca08e2bd.svg#bars" /></svg>
<svg class="icon svg-icon close-icon block w-6" viewBox="0 0 320 512" x-show="menuOpen" x-cloak="true"><use fill="currentColor" href="/packs/static/icons-b92dd088a6e3ca08e2bd.svg#xmark" /></svg>
</a>
</div>
<nav id="nav" class="desktop-only mt-2" x-bind:class="{ 'desktop-only': !menuOpen }">
<div id="main-menu" class="flex flex-wrap items-center px-5 sm:p-2">
<a id="nav-login" class="py-1.5 px-3 font-bold" rel="nofollow" href="/login?url=%2Fwiki_pages%2Fhelp%3Aapi">Login</a>
<a id="nav-posts" class="py-1.5 px-3 " href="/posts">Posts</a>
<a id="nav-comments" class="py-1.5 px-3 " href="/comments">Comments</a>
<a id="nav-notes" class="py-1.5 px-3 " href="/notes">Notes</a>
<a id="nav-artists" class="py-1.5 px-3 " href="/artists">Artists</a>
<a id="nav-tags" class="py-1.5 px-3 " href="/tags">Tags</a>
<a id="nav-pools" class="py-1.5 px-3 " href="/pools/gallery">Pools</a>
<a id="nav-wiki" class="py-1.5 px-3 current font-bold" href="/wiki_pages/help:home">Wiki</a>
<a id="nav-forum" class="py-1.5 px-3 " href="/forum_topics">Forum</a>
<a id="nav-more" class="py-1.5 px-3 " href="/static/site_map">More »</a>
</div>
<div id="subnav-menu" class="flex flex-wrap items-center px-5 sm:p-2">
<form autocomplete="off" novalidate="novalidate" class="simple_form search-form quick-search-form one-line-form py-1.5 px-3 md:w-180px w-full" action="/wiki_pages" accept-charset="UTF-8" method="get"><div class="input stacked-input string optional search_title_normalize"><input data-autocomplete="wiki-page" class="string optional" placeholder="Search wiki pages" type="text" name="search[title_normalize]" /></div><input type="hidden" name="redirect" value="true"></form>
<a id="subnav-search" class="py-1.5 px-3 " href="/wiki_pages">Search</a>
<a id="subnav-changes" class="py-1.5 px-3 " href="/wiki_page_versions">Changes</a>
<a id="subnav-help" class="py-1.5 px-3 " href="/wiki_pages/help:wiki">Help</a>
<span class="text-muted select-none">|</span>
<a id="subnav-posts" class="py-1.5 px-3 " href="/posts?tags=help%3Aapi">Posts (0)</a>
<a id="subnav-history" class="py-1.5 px-3 " href="/wiki_page_versions?search%5Bwiki_page_id%5D=43568">History</a>
</div>
</nav>
</header>
<div id="page" class="relative flex-1 mx-8 mt-4 sm:mx-2 sm:mt-2">
<div id="notice"
class="notice flex fixed top-2 left-2 right-2 p-2 mx-auto max-w-720px max-h-150px thin-scrollbar z-9999 shadow-lg sm:text-sm"
x-init="$root.notice = $data.notice"
x-data="{ notice: new Danbooru.Notice(null) }"
x-bind:class="notice.type === 'error' ? 'notice-error' : 'notice-info'"
x-show="notice.isOpen"
x-transition.opacity.400ms
x-cloak>
<span class="prose flex-1" x-html="notice.message"></span>
<a href="javascript:void(0)" id="close-notice-link" class="flex self-center text-lg" data-shortcut="esc" x-on:click="notice.close()"><svg class="icon svg-icon close-icon" viewBox="0 0 320 512"><use fill="currentColor" href="/packs/static/icons-b92dd088a6e3ca08e2bd.svg#xmark" /></svg></a>
</div>
<div id="c-wiki-pages">
<div id="a-show">
<div class="sidebar-container flex sm:flex-col gap-3">
<aside id="sidebar" class="flex-0 break-words sm:order-2">
<div
id="blacklist-box"
class="mb-4 card-outlined max-w-full sidebar-blacklist"
x-data="{ blacklist: new Danbooru.Blacklist($root) }"
x-init="blacklist.initialize(["guro","scat","furry -rating:g"])"
x-show="blacklist.visible"
x-cloak>
<div class="flex items-center gap-1 p-2" x-bind:class="{ 'border-b': !blacklist.collapsed }">
<label class="flex items-center gap-1 font-header font-bold cursor-pointer select-none">
<input type="checkbox" class="toggle-switch" x-model="blacklist.enabled" x-effect="$el.indeterminate = blacklist.partiallyEnabled" data-shortcut="b">
Blacklisted
</label>
<span class="whitespace-nowrap post-count" x-text="blacklist.blacklistedPostCount"></span>
<span class="flex items-center flex-grow-1 justify-end gap-1">
<div class="popup-menu inline-flex items-center h-full" data-hide-on-click="true">
<a class="popup-menu-button default-popup-menu-button" x-on:mousedown.prevent="true" href="javascript:void(0)">
<svg class="icon svg-icon ellipsis-icon" viewBox="0 0 448 512"><use fill="currentColor" href="/packs/static/icons-b92dd088a6e3ca08e2bd.svg#ellipsis" /></svg>
</a>
<ul class="popup-menu-content">
<li> <label class="flex items-center link-color cursor-pointer select-none" x-bind:class="blacklist.autocollapse && 'font-bold'" x-on:click.stop title="Whether enabling blacklists automatically closes the blacklist box">
<input type="checkbox" x-model="blacklist.autocollapse" class="w-4 h-full mr-1"><span>Autoclose</span>
</label>
</li>
<li> <label class="flex items-center link-color cursor-pointer select-none" x-bind:class="blacklist.showAll && 'font-bold'" x-on:click.stop title="Show all rules, even those that don't match any posts">
<input type="checkbox" x-model="blacklist.showAll" class="w-4 h-full mr-1"><span>Show all</span>
</label>
</li>
<li> <label class="flex items-center link-color cursor-pointer select-none" x-bind:class="blacklist.blurImages && 'font-bold'" x-on:click.stop title="Blur images instead of hiding them">
<input type="checkbox" x-model="blacklist.blurImages" class="w-4 h-full mr-1"><span>Blur images</span>
</label>
</li>
<li> <a class="wiki-link flex items-center" target="_blank" href="/wiki_pages/help:blacklists">
<svg class="icon svg-icon circle-question-icon" viewBox="0 0 512 512"><use fill="currentColor" href="/packs/static/icons-b92dd088a6e3ca08e2bd.svg#circle-question" /></svg><span>Help</span>
</a></li>
</ul>
</div> <a class="inactive-link contents" x-on:click.prevent="blacklist.collapsed = !blacklist.collapsed" href="javascript:void(0)">
<svg class="icon svg-icon chevron-down-icon transition-transform" viewBox="0 0 448 512" x-bind:class="{ 'rotate-180' : blacklist.collapsed }"><use fill="currentColor" href="/packs/static/icons-b92dd088a6e3ca08e2bd.svg#chevron-down" /></svg>
</a> </span>
</div>
<div class="thin-scrollbar max-h-360px p-2" x-show="!blacklist.collapsed" x-cloak>
<div class="flex items-center gap-1 h-full overflow-hidden "
x-data="{ rule: blacklist.rules[0] }"
x-bind:data-visible="rule.visible.toString()"
x-bind:data-enabled="rule.enabled.toString()"
x-show="rule.visible">
<input type="checkbox" class="toggle-switch" x-model="rule.enabled">
<a title="guro" class="truncate" tabindex="-1" x-bind:class="{ 'inactive-link': !rule.enabled }" x-on:click.prevent="rule.toggle()" href="/posts?tags=guro">guro</a>
<span class="whitespace-nowrap post-count" x-text="Alpine.raw(rule.posts).map(post => post.post.dataset.id).size"></span>
</div>
<div class="flex items-center gap-1 h-full overflow-hidden "
x-data="{ rule: blacklist.rules[1] }"
x-bind:data-visible="rule.visible.toString()"
x-bind:data-enabled="rule.enabled.toString()"
x-show="rule.visible">
<input type="checkbox" class="toggle-switch" x-model="rule.enabled">
<a title="scat" class="truncate" tabindex="-1" x-bind:class="{ 'inactive-link': !rule.enabled }" x-on:click.prevent="rule.toggle()" href="/posts?tags=scat">scat</a>
<span class="whitespace-nowrap post-count" x-text="Alpine.raw(rule.posts).map(post => post.post.dataset.id).size"></span>
</div>
<div class="flex items-center gap-1 h-full overflow-hidden "
x-data="{ rule: blacklist.rules[2] }"
x-bind:data-visible="rule.visible.toString()"
x-bind:data-enabled="rule.enabled.toString()"
x-show="rule.visible">
<input type="checkbox" class="toggle-switch" x-model="rule.enabled">
<a title="furry -rating:g" class="truncate" tabindex="-1" x-bind:class="{ 'inactive-link': !rule.enabled }" x-on:click.prevent="rule.toggle()" href="/posts?tags=furry+-rating%3Ag">furry -rating:g</a>
<span class="whitespace-nowrap post-count" x-text="Alpine.raw(rule.posts).map(post => post.post.dataset.id).size"></span>
</div>
</div></div>
<section>
<h2>Recent Changes (<a href="/wiki_page_versions">all</a>)</h2>
<ul>
<li><a class="tag-type-3" href="/wiki_pages/garo_(tokusatsu_series)">garo (tokusatsu series)</a></li>
<li><a class="tag-type-0" href="/wiki_pages/eldritch_abomination">eldritch abomination</a></li>
<li><a class="tag-type-4" href="/wiki_pages/shunshun">shunshun</a></li>
<li><a class="tag-type-4" href="/wiki_pages/shunga_youkyu">shunga youkyu</a></li>
<li><a class="tag-type-0" href="/wiki_pages/change!_emu_wa_ojou_sama!%3F_(project_sekai)">change! emu wa ojou sama!? (project sekai)</a></li>
<li><a class="tag-type-0" href="/wiki_pages/noble_galerus">noble galerus</a></li>
<li><a class="tag-type-4" href="/wiki_pages/harukawa_shigure_(varia_kimagure)">harukawa shigure (varia kimagure)</a></li>
<li><a class="tag-type-4" href="/wiki_pages/iris_(seisenki_iris)">iris (seisenki iris)</a></li>
<li><a class="tag-type-0" href="/wiki_pages/do_you_want_to_pet_my_cat_(meme)">do you want to pet my cat (meme)</a></li>
<li><a class="tag-type-0" href="/wiki_pages/projectile_cum">projectile cum</a></li>
<li><a class="tag-type-4" href="/wiki_pages/cesario_(umamusume)">cesario (umamusume)</a></li>
<li><a class="tag-type-0" href="/wiki_pages/sex_machine">sex machine</a></li>
<li><a class="tag-type-0" href="/wiki_pages/spanking_machine">spanking machine</a></li>
<li><a class="tag-type-0" href="/wiki_pages/ball_busting_machine">ball busting machine</a></li>
<li><a class="tag-type-1" href="/wiki_pages/love_kitten">love kitten</a></li>
<li><a class="tag-type-3" href="/wiki_pages/x-com_(classic)">x-com (classic)</a></li>
<li><a class="tag-type-0" href="/wiki_pages/tucking_hair">tucking hair</a></li>
<li><a class="tag-type-0" href="/wiki_pages/hoyolab_sticker_redraw">hoyolab sticker redraw</a></li>
<li><a class="tag-type-4" href="/wiki_pages/magical_mirai_miku">magical mirai miku</a></li>
<li><a class="tag-type-4" href="/wiki_pages/oedaki_chika">oedaki chika</a></li>
<li><a class="tag-type-4" href="/wiki_pages/victoire_pisa_(umamusume)">victoire pisa (umamusume)</a></li>
<li><a class="tag-type-4" href="/wiki_pages/miura_azusa">miura azusa</a></li>
<li><a class="tag-type-4" href="/wiki_pages/futami_ami">futami ami</a></li>
<li><a class="tag-type-4" href="/wiki_pages/minase_iori">minase iori</a></li>
<li><a class="tag-type-4" href="/wiki_pages/reyla_(lamunation)">reyla (lamunation)</a></li>
</ul>
</section>
<h2>Options</h2>
<ul>
<li><a href="/wiki_page_versions?search%5Bwiki_page_id%5D=43568">Wiki History</a></li>
<li><a href="/forum_posts?search%5Blinked_to%5D=help%3Aapi">Discussions</a></li>
<li><a href="/wiki_pages?search%5Blinked_to%5D=help%3Aapi">What Links Here</a></li>
</ul>
</aside>
<section id="content" class="flex-1 min-w-0 sm:order-1">
<h1 id="wiki-page-title">
<a href="/posts?tags=help%3Aapi">help:api</a>
</h1>
<div id="wiki-page-body" class="prose">
<p>Danbooru 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.</p><h1>Testing</h1><p>API calls can be tested on <a rel="external nofollow noreferrer" class="dtext-link dtext-external-link" href="https://testbooru.donmai.us">https://testbooru.donmai.us</a>. Scripts should be tested there before using them on the main site.</p><h1>Basics</h1><p>HTTP defines four basic request methods: GET, POST, PUT and DELETE. You'll be using these methods to interact with the Danbooru 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.</p><p>A URL is considered a resource and the HTTP methods are actions you perform on the resource. For example, GET <a class="dtext-link" href="/posts/23.json">/posts/23.json</a> returns a JSON representation of <a class="dtext-link dtext-id-link dtext-post-id-link" href="/posts/23">post #23</a>. GET <a class="dtext-link" href="/posts/23.xml">/posts/23.xml</a> returns an XML representation. PUT or PATCH /posts/6.json would update the resource, for example changing its tags.</p><p>Some resources require parameters. For example, you can find tags that start with the letter 'a' by calling GET <a class="dtext-link" href="/tags.json?search[name_matches]=a*">/tags.json?search[name_matches]=a*</a>. This will give you a JSON listing of all tags with names starting with an a.</p><p>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":</p><pre>curl -u "$login:$api_key" -X PUT "https://testbooru.donmai.us/posts/6.json" -d 'post[rating]=s&post[tag_string]=danboo'</pre><p>Parameters may also be encoded as JSON using "Content-Type: application/json":</p><pre>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" </pre><h1>Responses</h1><p>All API calls that change state will return a single element response (for XML calls). They are formatted like this:</p><pre><?xml version="1.0" encoding="UTF-8"?>
<response success="false" reason="duplicate"/></pre><p>For JSON responses, they'll look like this:</p><pre>{ "success": false, "reason": "duplicate" }</pre><p>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, Danbooru uses some custom status codes in the 4xx and 5xx range.</p><ul><li><strong>200 OK</strong>: Request was successful</li><li><strong>204 No Content</strong>: Request was successful (returned by create actions)</li><li><strong>400 Bad Request</strong>: The given parameters could not be parsed</li><li><strong>401 Unauthorized</strong>: Authentication failed</li><li><strong>403 Forbidden</strong>: Access denied (see <a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Ausers">help:users</a> for permissions information)</li><li><strong>404 Not Found</strong>: Not found</li><li><strong>410 Gone</strong>: Pagination limit (see <a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Ausers">help:users</a> for pagination limits)</li><li><strong>420 Invalid Record</strong>: Record could not be saved</li><li><strong>422 Locked</strong>: The resource is locked and cannot be modified</li><li><strong>423 Already Exists</strong>: Resource already exists</li><li><strong>424 Invalid Parameters</strong>: The given parameters were invalid</li><li><strong>429 User Throttled</strong>: User is throttled, try again later (see <a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Ausers">help:users</a> for API limits)</li><li><strong>500 Internal Server Error</strong>: A database timeout, or some unknown error occurred on the server</li><li><strong>502 Bad Gateway</strong>: Server cannot currently handle the request, try again later (returned during heavy load)</li><li><strong>503 Service Unavailable</strong>: Server cannot currently handle the request, try again later (returned during downbooru)</li></ul><h1>Authentication</h1><p>You will need an API key if you need to login using the API. You can generate an API key by visiting your <a class="dtext-link" href="/profile">user profile</a> and clicking the Generate API key button.</p><p>To authenticate with the API, pass the <code>login</code> and <code>api_key</code> URL parameters, where <code>login</code> is your username and <code>api_key</code> is your API key:</p><pre>https://danbooru.donmai.us/profile.json?login=your_username&api_key=your_api_key</pre><p>You can also authenticate using <a rel="external nofollow noreferrer" class="dtext-link dtext-external-link dtext-named-external-link" href="https://en.wikipedia.org/wiki/Basic_access_authentication">HTTP Basic Authentication</a>:</p><pre>curl "https://$username:[email protected]/profile.json"
curl --user "$username:$api_key" https://danbooru.donmai.us/profile.json</pre><p>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 <code>Authentication: Basic $secret</code> where <code>$secret = base64($username + ":" + $api_key)</code>. In other words, concatenate your username and API key together, separated by a colon, then <a rel="external nofollow noreferrer" class="dtext-link dtext-external-link dtext-named-external-link" href="https://en.wikipedia.org/wiki/Base64">Base64</a> encode the result:</p><pre>curl --header "Authorization: Basic $(printf "%s" "$username:$api_key" | base64)" https://danbooru.donmai.us/profile.json</pre><p>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.</p><p>⚠️ <strong>IMPORTANT!</strong> 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.</p><h1>Rate Limits</h1><p>There's a global rate limit on read requests of 10 requests per second regardless of account or endpoint.</p><p>Most kinds of update actions are rate limited according to user level:</p><ul><li>Basic users: 1 update/second</li><li>Gold users and above: 4 updates/second</li></ul><p>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.</p><p>The burst pool size, recharge rate, and current limits are returned as JSON in the <code>x-rate-limit</code> HTTP header. They can also be found at <a class="dtext-link" href="/rate_limits">/rate_limits</a>, which shows the limits as of the last API call (the page won't update until the API is used again).</p><p>Rate limits are shared between accounts and IP addresses: multiple accounts with the same IP address will share the same rate limit.</p><h1>Queries</h1><h4>Common Search Parameters</h4><p>All search endpoints support a common set of parameters:</p><ul><li><strong>page</strong> Returns the given page. Subject to maximum page limits (see <a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Ausers">help:users</a>).</li></ul><p> You can also use <code>b<id></code> and <code>a<id></code> to request results before <id> or after <id>, respectively.<br> E.g. to get a page of posts before <a class="dtext-link dtext-id-link dtext-post-id-link" href="/posts/999999">post #999999</a>, you'd make a request to <code>/posts.json?page=b999999</code>.</p><ul><li><strong>limit</strong> The number of results to return per page. The maximum limit is 200 for /posts.json and 1000 for everything else.</li><li><strong>search[id]</strong></li><li><strong>search[created_at]</strong></li><li><strong>search[updated_at]</strong></li><li><strong>search[order]=custom</strong> Returns results in the same order as given by <code>search[id]=3,2,1</code>.</li></ul><h5>Parameter Parsing</h5><p>Numeric search parameters support ranges:</p><ul><li><code>100</code></li><li><code>>100</code></li><li><code>>=100</code></li><li><code><100</code></li><li><code><=100</code></li><li><code>100,200,300</code></li><li><code>100..200</code> (inclusive)</li></ul><p>Date parameters also support ranges:</p><ul><li><code>2012-01-01</code></li><li><code>>2012-01-01</code></li><li><code>>=2012-01-01</code></li><li><code><2012-01-01</code></li><li><code><=2012-01-01</code></li><li><code>2012-01-01,2012-01-02</code></li><li><code>2012-01-01..2013-01-01</code> (inclusive)</li></ul><p>Boolean parameters accept any of the following values for true or false:</p><ul><li>True: true, t, yes, y, on, 1</li><li>False: false, f, no, n, off, 0</li></ul><p>Most string parameters support using asterisks (<code>*</code>) as wildcards. Wildcards can be escaped with <code>\*</code>. Literal backslashes can be escaped with <code>\\</code>.</p><h1>Versioned Types</h1><ul><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aartists">API:Artists</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aartist_commentaries">API:Artist commentaries</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Anotes">API:Notes</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Apools">API:Pools</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aposts">API:Posts</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Awiki_pages">API:Wiki Pages</a></li></ul><h2>Type Versions</h2><ul><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aartist_versions">API:Artist versions</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aartist_commentary_versions">API:Artist commentary versions</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Anote_versions">API:Note versions</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Apool_versions">API:Pool versions</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Apost_versions">API:Post versions</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Awiki_page_versions">API:Wiki page versions</a></li></ul><h2>Non-versioned Types</h2><ul><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Abulk_update_requests">API:Bulk update requests</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Acomments">API:Comments</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Admails">API:Dmails</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Afavorite_groups">API:Favorite groups</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aforum_posts">API:Forum posts</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Aforum_topics">API:Forum topics</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Apost_appeals">API:Post appeals</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Apost_flags">API:Post flags</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Atags">API:Tags</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Atag_aliases">API:Tag aliases</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Atag_implications">API:Tag implications</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Auploads">API:Uploads</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/api%3Ausers">API:Users</a></li></ul><h2>Other Functions</h2><details><summary>Related Tags</summary><div><h3>Show</h3><p>The base URL is GET /related_tag.json.</p><ul><li><strong>query</strong> REQUIRED The tag to find the related tags for.</li><li><strong>category</strong> If specified, show only tags of a specific category. Can be: general, artist, copyright, character, meta</li></ul></div></details><h1>List of API endpoints</h1><details><summary>API Endpoints</summary><div><pre>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</pre></div></details><h4>See also</h4><ul><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Anumber_syntax">Help:Number syntax</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Atext_syntax">Help:Text syntax</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Auser_syntax">Help:User syntax</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Aboolean_syntax">Help:Boolean syntax</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Aarray_syntax">Help:Array syntax</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Aapi_read_requests">Help:API read requests</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Aapi_write_requests">Help:API write requests</a></li><li><a class="dtext-link dtext-wiki-link" href="/wiki_pages/help%3Acommon_url_parameters">Help:Common URL Parameters</a></li></ul><h1>Go Back</h1><ul><li><a class="dtext-link" href="/wiki_pages/help:toc#dtext-developer_guide">Return to Developer Guide</a></li><li><a class="dtext-link" href="/help/toc">Return to the Table of Contents</a></li><li><a class="dtext-link" href="/help/home">Return to the Wiki Help Home Page</a></li></ul>
</div>
</section>
</div>
</div>
</div>
</div>
<div id="tooltips"></div>
<footer id="page-footer" class="text-sm text-center flex-initial mt-4 py-3 w-full border-t flex flex-wrap items-center justify-center gap-1 leading-none">
<a href="/terms_of_service">Terms</a>
/ <a href="/privacy">Privacy</a>
/ <a href="/upgrade">Upgrade</a>
/ <a href="/contact">Contact</a>
/
<a title="Running commit: a75d42dd4" class="social-icon" href="https://github.com/danbooru/danbooru">
<img class="icon inline-block h-4" src="/packs/static/github-logo-c932001442ab985405de.png" />
</a> <a class="social-icon" href="https://twitter.com/danboorubot">
<img class="icon inline-block h-4" src="/packs/static/twitter-logo-44d2b3f3edf069d5a5f2.png" />
</a> <a class="social-icon" href="https://discord.gg/danbooru">
<img class="icon inline-block h-4" src="/packs/static/discord-logo-5c40c3a6f162a826276b.png" />
</a> </footer>
</body></html>
|