
REST API · GET-only
Twary API Docs
A free, open, and blazing-fast REST API — serving random quotes, Indonesian jokes, image overlays, image manipulation effects, and more. Built with Elysia.js.
https://apitwary.sytes.netEndpoint overview
Text & Quotes
Image Manipulation
Image Overlays
Common Query Param
All JSON endpoints accept:
Returns multiple results when N > 1. Default: 1.
Global response format
All text/JSON endpoints return this shape:
{
"status": 200,
"end_point": "/api/<endpoint>",
"method": "GET",
"data": { // object or array depending on count }
}/v1/imgrndm and all /v1/imagemanip/*) return a raw image/png binary — no JSON wrapper.Text & Quotes
Endpoints
Query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| count | integer | optional | 1 | Number of quotes to return |
Response schema
"data": {
"author": string // e.g. "Yesaya 41:10"
"quotes": string // the quote text
}Example request
curl "https://apitwary.sytes.net/v1/bible"Example response
{
"status": 200,
"end_point": "/v1/bible",
"method": "GET",
"data": {
"author": "Yesaya 41:10",
"quotes": "Janganlah takut, sebab Aku menyertai engkau..."
}
}Query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| count | integer | optional | 1 | Number of lines to return |
Response schema
"data": {
"gombal_wrd": string // the pick-up line text
}Example request
curl "https://apitwary.sytes.net/v1/gombal"Example response
{
"status": 200,
"end_point": "/v1/gombal",
"method": "GET",
"data": {
"gombal_wrd": "Hari minggu itu weekend, tapi kalau cinta aku ke kamu tuh will never end."
}
}Query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| count | integer | optional | 1 | Number of jokes to return |
Response schema
"data": {
"jokerecehl": string // the joke text
}Example request
curl "https://apitwary.sytes.net/v1/jokereceh"Example response
{
"status": 200,
"end_point": "/v1/jokereceh",
"method": "GET",
"data": {
"jokerecehl": "Barusan saya ke apotek beli obat tidur, pas pulang saya bawa nya pelan pelan, takut obatnya bangun xixixi"
}
}Query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| count | integer | optional | 1 | Number of image URLs to return |
Response schema
"data": {
"image_url": string // direct GIF or image URL
}Example request
curl "https://apitwary.sytes.net/v1/jomokimg"Example response
{
"status": 200,
"end_point": "/v1/jomokimg",
"method": "GET",
"data": {
"image_url": "https://tenor.com/bgD33VDFqZ9.gif"
}
}Image Manipulation
Image Manipulation
These endpoints accept an image URL and return a processed PNG image directly — no JSON wrapper, just raw binary image data.
Query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| url | string (URL) | required | — | URL of the image to process |
| effect | string | optional | grayscale | Effect to apply (see below) |
Available effects
Example request
curl "https://apitwary.sytes.net/v1/imgmanip?url=https://example.com/photo.jpg&effect=sepia" \
--output result.pngError responses
{
"status": 400,
"error": "Missing required query param: url",
"available_effects": ["grayscale", "blur", ...]
}Image Overlays
Image Overlays
These endpoints composite user-provided avatar images onto pre-designed meme templates. All return a raw image/png.
encodeURIComponent() your image URLs when passing them as query params.Query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| avatar | string (URL) | required | — | Main user's avatar (shown in the circle) |
| target | string (URL) | required | — | Crush's image (shown on main panel) |
Example request
curl "https://apitwary.sytes.net/v1/imgmanip/crush?avatar=https://example.com/me.png&target=https://example.com/crush.png" \
--output crush.pngQuery parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| avatar | string (URL) | required | — | URL of the avatar image |
Example request
curl "https://apitwary.sytes.net/v1/imgmanip/garbage?avatar=https://example.com/avatar.png" \
--output garbage.pngQuery parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| avatar | string (URL) | required | — | First person's avatar (left circle) |
| target | string (URL) | required | — | Second person's avatar (right circle) |
Example request
curl "https://apitwary.sytes.net/v1/imgmanip/hug?avatar=https://example.com/me.png&target=https://example.com/friend.png" \
--output hug.pngQuery parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| avatar | string (URL) | required | — | First person's avatar (left circle) |
| target | string (URL) | required | — | Second person's avatar (right circle) |
Example request
curl "https://apitwary.sytes.net/v1/imgmanip/kitabestie?avatar=https://example.com/me.png&target=https://example.com/bestie.png" \
--output kitabestie.pngQuery parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| avatar | string (URL) | required | — | First person's avatar (left circle) |
| target | string (URL) | required | — | Second person's avatar (right circle) |
Example request
curl "https://apitwary.sytes.net/v1/imgmanip/werebestie?avatar=https://example.com/me.png&target=https://example.com/bestie.png" \
--output werebestie.pngQuery parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| avatar | string (URL) | required | — | First person's avatar (left circle) |
| target | string (URL) | required | — | Second person's avatar (right circle) |
| percentage | string | optional | — | Love percentage (1–100), "random", or omit to hide |
Example request
curl "https://apitwary.sytes.net/v1/imgmanip/ship?avatar=https://example.com/a.png&target=https://example.com/b.png&percentage=80" \
--output ship.png&percentage= entirely to hide the percentage overlay from the image.Reference
Error Handling
All endpoints use consistent HTTP status codes and error shapes.
Error response shape
{
"status": 400,
"end_point": "/v1/<endpoint>",
"error": "Human-readable error message"
}Image endpoints also return JSON with this same shape even though the successful response is binary.
