API Documentation¶
The ImageAPI was created to be a replacement for the nekos.life API in the bot *Purr*.
It is publicly available to use.
Since version 1.2.0 of this API can you also find the endpoints of the former PurrBotAPI in this one.
The API is open source and contributions are always welcome.
Base URL
POST¶
These API endpoints can only be used through POST
requests.
Info
- Responses:
- Success:
Image
- Failure:
JSON
- Success:
/quote¶
Generates images that look like Discord messages.
Fields¶
Type: String
Default: https://purrbot.site/assets/img/api/unknown.png
Description:
The URL of the avatar to display in the image. The image will be resized to 217x217 pixels.
Type: String
Default: dd. MMM yyyy hh:mm:ss zzz
Description:
The format in which the date should be displayed.
This uses the SimpleDateFormat from Java.
Type: String
Default: Some message
Description:
The actual message that should be displayed.
Note that this will NOT render markdown and can only render a few selected emojis (No Discord emotes).
Type: String
Default: hex:ffffff
Description:
The color in which the username should be displayed.
Supported are hex:rrggbb
, rgb:r,g,b
or the raw Color value.
Type: Number
Default: Current time of the request
Description:
The date of the message as epoch milliseconds.
Type: String
Default: Someone
Description:
The username to display.
Example¶
This request was made on march, 9th 2020.
{
"avatar": "https://cdn.discordapp.com/avatars/204232208049766400/dfaaefa54a2804addb1f494da7aa904d.png",
"message": "This is an example message.",
"nameColor": "hex:ffffff",
"dateFormat": "dd. MMM yyyy",
"username": "Andre_601"
}
Empty JSON Body/No JSON Provided
{
"error": true,
"message": "Invalid or empty JSON Body provided."
}
Malformed JSON or invalid values
{
"error": true,
"message": "Couldn't generate Image. Make sure the values are valid!"
}
/status¶
Adds a status icon to the provided Avatar.
Fields¶
Type: String
Default: https://purrbot.site/assets/img/api/unknown.png
Description:
The URL of the avatar to display in the image. The image will be resized to 950x950 pixels.
Type: Boolean
Default: false
Description:
Wether the user is on mobile. true
will change the status icon to that used to indicate mobile users on Discord (Small smartphone).
Type: String
Default: offline
Description:
The status to display with the icon.
Available are online
, idle
, do_not_disturb
(or dnd
), streaming
and offline
.
Example¶
{
"avatar": "https://cdn.discordapp.com/avatars/204232208049766400/dfaaefa54a2804addb1f494da7aa904d.png",
"status": "online"
}
Empty JSON Body/No JSON Provided
{
"error": true,
"message": "Invalid or empty JSON Body provided."
}
Malformed JSON or invalid values
{
"error": true,
"message": "Couldn't generate Image. Make sure the values are valid!"
}
GET (SFW)¶
Contains images that are considered safe for work.
You can access those endpoints through simple GET
requests.
Info
- Responses:
- Success:
JSON
- Failure:
JSON
- Success:
/img/sfw/background/img¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/background/img/gradient_orange.png",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/bite/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/bite/gif/bite_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/blush/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/background/blush/gif/blush_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/cry/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/cry/gif/cry_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/cuddle/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/cuddle/gif/cuddle_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/dance/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/dance/gif/cuddle_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/eevee/:type¶
:type
can be either gif
for gifs or img
for images.
{
"error": false,
"link": "https://purrbot.site/img/sfw/eevee/gif/eevee_001.gif",
"time": 0
}
{
"error": false,
"link": "https://purrbot.site/img/sfw/eevee/img/eevee_001.jpg",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/feed/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/feed/gif/feed_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/fluff/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/fluff/gif/fluff_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/holo/img¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/holo/img/holo_001.jpg",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/hug/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/hug/gif/hug_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/icon/img¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/icon/img/holo.png",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/kiss/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/kiss/gif/kiss_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/kitsune/img¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/kitsune/img/kitsune_001.jpg",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/lick/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/lick/gif/lick_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/neko/:type¶
:type
can be either gif
for gifs or img
for images.
{
"error": false,
"link": "https://purrbot.site/img/sfw/neko/gif/neko_001.gif",
"time": 0
}
{
"error": false,
"link": "https://purrbot.site/img/sfw/neko/img/neko_001.jpg",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/pat/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/pat/gif/pat_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/poke/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/poke/gif/poke_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/senko/img¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/senko/img/senko_001.jpg",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/slap/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/slap/gif/slap_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/smile/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/smile/gif/smile_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/tail/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/tail/gif/tail_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/sfw/tickle/gif¶
{
"error": false,
"link": "https://purrbot.site/img/sfw/tickle/gif/tickle_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
GET (NSFW)¶
Contains images that are considered Not Safe for work.
If you are using those images on Discord, make sure to only share them in Channels marked as NSFW.
You can access those endpoints through simple GET
requests.
Info
- Responses:
- Success:
JSON
- Failure:
JSON
- Success:
/img/nsfw/anal/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/anal/gif/anal_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/blowjob/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/blowjob/gif/blowjob_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/cum/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/cum/gif/cum_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/fuck/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/fuck/gif/fuck_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/neko/:type¶
:type
can be either gif
for gifs or img
for images.
{
"error": false,
"link": "https://purrbot.site/img/nsfw/neko/gif/neko_001.gif",
"time": 0
}
{
"error": false,
"link": "https://purrbot.site/img/nsfw/neko/gif/neko_001.jpg",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/pussylick/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/pussylick/gif/pussylick_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/solo/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/solo/gif/solo_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/threesome_fff/gif¶
{
"error": false,
"link": "https://purrbot.site/img/threesome_fff/gif/threesome_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/threesome_ffm/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/threesome_ffm/gif/threesome_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/threesome_mmf/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/threesome_mmf/gif/threesome_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/yaoi/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/yaoi/gif/yaoi_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}
/img/nsfw/yuri/gif¶
{
"error": false,
"link": "https://purrbot.site/img/nsfw/yuri/gif/yuri_001.gif",
"time": 0
}
Invalid Path (Not an API endpoint)
{
"error": true,
"message": "Not supported API path"
}
Invalid Path (No images)
{
"error": true,
"message": "The selected path doesn't contain any images"
}