EARLY ACCESS / SPEC IN PROGRESS

Set the size. We pick the best GIF.

The compression engine is live. The API is not public yet. Early access means we build the integration with you.

STATUS: engine in production. No public endpoint, no keys, no docs. We build each integration with the partner.

What the engine does today

LOSSY
COLORS
FRAMES
the three variables the model trades off

Animately's compression engine is running in production and powers the Smart Slider on animately.co/tools/compress-gif, where anyone can load a GIF and use it right now. The Animately engine runs on a machine-learning model trained on real GIFs. The model predicts the size and the quality of settings combinations across three variables: lossy compression level, color palette size, and frame count. Set a target size and the Animately engine solves for the least aggressive settings that reach it.

Animately solves per GIF, because the right settings are per GIF.

PHOTOGRAPHIC
Tolerates color reduction poorly.
FLAT VECTOR
Tolerates color reduction well.
FAST MOTION
Needs every frame.
SCREEN RECORDINGS
Near-duplicate frames drop without anyone noticing.
The model is how the Animately engine tells those cases apart.
EARLY ACCESS

Animately does not offer a public API today: there is no endpoint a third party can call, no keys, and no self-serve access. Animately is designing the API spec with early-access partners, and builds each integration with the partner. If your platform enforces a file-size cap on GIF uploads, tell Animately your use case, your volume, and your formats.

The draft spec we're designing with partners PROPOSED

PROPOSED SPEC. Not yet available. Nothing below is callable today. This is the shape Animately is designing with early-access partners.

One call: set the size, get back the best GIF the engine can produce under it. If your integration needs a different shape, the form below is where you say so.

# PROPOSED. Not yet available.
POST /v1/compress
Content-Type: application/json

{
  "input_url": "https://example.com/upload.gif",
  "target_kb": 512,
  "max_width": 800,
  "min_colors": 64,
  "min_frames": 12,
  "on_unreachable": "best_effort"
}

input_url and target_kb are the only required fields. max_width, min_colors and min_frames are floors that stop the engine trading away something you need. on_unreachable chooses between best_effort, which returns the smallest good version found, and fail, which returns an error rather than an oversized file.

# PROPOSED. Not yet available.
200 OK

{
  "output_url": "https://cdn.animately.co/out/upload-512.gif",
  "size_kb": 498,
  "target_met": true,
  "quality_score": 0.91
}

Partner requirements set the rest

Sync versus async, rate limits, input size ceilings, and how output gets delivered are set by the real constraints of early-access partners. Animately designs those against partner numbers rather than guessing at them. That is what the form is for.

Tell us what you'd build

This starts a technical conversation. It does not provision access to anything.

Got it. Lachlan reads every one of these and replies personally.

That didn't send. Email lachlan@animately.com and we'll pick it up from there.

Prefer email? Write to Lachlan directly. lachlan@animately.com