Skip to content

Introduction

Gifukai is a free, open-source REST API that serves high-quality anime reaction GIFs. It’s designed specifically for Discord bots and apps that need anime interaction commands like /hug, /kiss, /pat, and more.

Pairing support. This is the only GIF API that lets you specify the gender of the characters in each GIF. When a user runs /hug @someone in Discord, your bot can request the correct pairing (e.g., ff for girl hugging girl, mf for boy hugging girl) so the GIF matches the users.

Make a GET request to get a random anime GIF:

Terminal window
curl https://api.gifukai.com/hug

With a specific pairing:

Terminal window
curl https://api.gifukai.com/kiss?pairing=fm

Response:

{
"action": "kiss",
"pairing": "fm",
"anime": "Tonikaku Kawaii",
"url": "https://cdn.gifukai.com/kiss/abc123.gif",
"filename": "abc123.gif",
"content_type": "image/gif",
"size_bytes": 695000
}
Code Description
f Solo Girl
m Solo Boy
ff Girl × Girl
mm Boy × Boy
fm Girl → Boy
mf Boy → Girl

If you don’t specify a pairing, a random GIF from any pairing is returned.

Some actions support a type filter.

Use GET /actions and GET /actions/{action}/types to discover support and available values dynamically.

Example:

Terminal window
curl "https://api.gifukai.com/kiss?type=mouth"

Many actions also answer to aliases — alternative names that resolve to a real action. GET /kabedon returns a wallslam GIF, GET /meow returns a nya GIF. Some aliases even lock a type: GET /peck always returns a kiss with type cheek.

Terminal window
curl https://api.gifukai.com/meow # → a nya GIF

See All Actions & Aliases for the complete list, or read them per-action in the GET /actions response.

Here’s a minimal example with discord.js:

const { EmbedBuilder } = require('discord.js');
async function hugCommand(interaction) {
const target = interaction.options.getUser('user');
const pairing = 'ff'; // or resolve from user genders
const res = await fetch(
`https://api.gifukai.com/hug?pairing=${pairing}`
);
const data = await res.json();
const embed = new EmbedBuilder()
.setDescription(`**${interaction.user.displayName}** hugged **${target.displayName}**!`)
.setImage(data.url)
.setColor(0xd946ef);
interaction.reply({ embeds: [embed] });
}