---
name: beastify
description: Improve X (Twitter) posts and create memes with the Beastify API. Use when the user wants to rewrite, punch up, or critique a social post, find a meme template, or generate a meme image/video with custom captions.
---

# Beastify

Beastify analyzes X posts, rewrites them 3–4 ways, and generates memes (images or MP4 videos) from a library of 1,000+ templates.

## Setup

- API key: `BEASTIFY_API_KEY` (starts with `bst_`, from https://beastify.xyz/dashboard/api, Pro plan).
- Base URL: `https://beastify.xyz/api/v1`
- Header on every request: `Authorization: Bearer $BEASTIFY_API_KEY`
- Timeouts: allow 120 s (video memes render slowly).

If an MCP server named `beastify` is connected, prefer its tools (`improve_post`, `transform_post`, `search_memes`, `get_meme_template`, `generate_meme`, `suggest_meme`) over raw HTTP.

## Improve a post

```bash
curl -s https://beastify.xyz/api/v1/improve \
  -H "Authorization: Bearer $BEASTIFY_API_KEY" -H "Content-Type: application/json" \
  -d '{"post": "<the post>", "meme": "auto"}'
```

Returns `analysis` (`mainWeakness`, `summary`, `scores` 0–10 for hook, clarity, specificity, curiosity, personality, conversation), `variants` (`strategy`, `text`, `why`), and `meme` (or `null`). `meme`: `"auto"` = only when it fits, `true` = always try, `false` = never.

Present the main weakness first, then the variants. Scores are editorial heuristics, never virality predictions.

Quick remix of one version:

```bash
curl -s https://beastify.xyz/api/v1/transform -H "Authorization: Bearer $BEASTIFY_API_KEY" -H "Content-Type: application/json" \
  -d '{"text": "<version>", "kind": "shorter"}'   # kinds: shorter | hook | human | funnier | angle
```

## Memes

1. Search: `GET /memes?query=<keywords>&mediaType=all|image|video&limit=10` → `results[]` with `handle`, `name`, `mediaType`, `inputs[]` (`key`, `label`, optional `alias`/`description`), `thumbUrl`.
2. Inspect (optional): `GET /memes/<handle>` → input fields and dimensions.
3. Render: `POST /memes/<handle>/generate` with `{"inputs": {"text1": "...", "text2": "..."}}` → `meme.url` (public JPEG or MP4).
4. Or let Beastify choose: `POST /memes/suggest` with `{"post": "..."}` → `meme` or `null` when nothing fits.

Caption rules: a few words per box, use the alias/description to understand each box's role (e.g. `reject` vs `prefer`), leave a key out to skip a box. Unknown keys return `400 INVALID_INPUTS`.

## Errors

JSON `{"error": {"code", "message"}}`. `401` bad/missing key, `402 PRO_REQUIRED`, `429 RATE_LIMITED` (fair-use ceiling, resets midnight UTC), `5xx` retry once after a few seconds.

Docs: https://beastify.xyz/docs
