Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is Cat as a service (CATAAS)?
Cat as a service (CATAAS) is a free REST API that returns cat images and GIFs on demand. Rather than hosting cat pictures yourself, you call a URL and get back a random cat, optionally with a tag filter, an overlaid caption, a size, or an image filter. The site describes it as "a REST API to spread peace and love (or not) thanks to cats."
What you can request
The API is built around a handful of simple URL patterns:
- Random cat:
/catreturns any cat;/cat/:tagnarrows by tag, and multiple tags can be combined. - GIFs:
/cat/gifreturns a random animated cat. - Caption text:
/cat/says/:textreturns a cat "saying" your text, with optionalfontSizeandfontColor. - Image options:
type(xsmall, small, medium, square),filter(blur, mono, negate, custom), andwidth/heightlet you shape the output. - Custom filters: brightness, lightness, saturation, hue, or RGB values can be applied.
- Response formats:
json=truereturns a JSON object, andhtml=truereturns a full HTML page suited to embedded previews on social platforms. - Browsing data:
/api/catslists cats by tags withskip/limitpaging, and/api/tagslists available tags.
Where it fits
It is a good match for demos, placeholder imagery, teaching HTTP and API calls, or adding a lighthearted touch to a prototype. A developer building a test app, for example, can drop /cat/says/Hello into an image tag and get a working visual with no asset pipeline. Because the responses are plain URLs, it also works well in chat bots and quick mockups.
The trade-off is that it is a small, single-purpose service: you get cats, not a general image library, and its output is random rather than curated. For anything requiring stable, specific images, host your own assets.
Next step
Open the API documentation linked from the site and try one request in a browser—start with /cat/says/hello—then add ?json=true to see the structured response your code would receive.
How do I get a random cat image from the CATAAS API?
For a random cat image, request the base endpoint: https://cataas.com/cat. The response is an image, so you can drop it straight into an <img> tag, a background, or a test fixture without parsing anything.
Common variants
- Random GIF:
https://cataas.com/cat/gif - Random cat with a tag:
https://cataas.com/cat/cute(combine tags with:as in the docs, e.g./cat/orange:cute) - Cat with caption:
https://cataas.com/cat/says/hello - Captioned with styling:
https://cataas.com/cat/says/hello?fontSize=20&fontColor=orange - Sized or filtered:
https://cataas.com/cat?width=400orhttps://cataas.com/cat?filter=mono
Getting JSON instead of an image
Add ?json=true to the /cat endpoint, or send an Accept: application/json header, and you get a JSON object rather than the image bytes. Use this when you need the cat's ID or metadata, then build the image URL from it. To browse the collection rather than one random pick, use /api/cats?tags=tag1,tag2&skip=0&limit=10; /api/tags lists available tags.
Practical notes
- Tags are optional but narrowing. If a tag has no matches, the request can fail; for a guaranteed image, stick to the bare
/catendpoint and treat tags as a best-effort filter. - Cache or pin results in production. Random means the image changes each call, which is fine for demos and placeholders but noisy for repeatable tests. Fetch once, store the URL, and reuse it.
- Check the JSON shape first. The page notes that JSON is returned when the request includes an
application/jsonheader, so confirm the object's fields before wiring them into your code.
A good next step: open https://cataas.com/cat?json=true in a browser to see the JSON structure, then construct an image URL from it and embed that in your page. For full parameters, see the API doc linked from Cat as a service (CATAAS).
How can I add custom text to a cat image using CATAAS?
Use CATAAS's /cat/says/:text endpoint: a request to /cat/says/hello returns a random cat image with "hello" overlaid as text. To add styling, append query parameters — /cat/says/hello?fontSize=40&fontColor=orange sets the text size and color. You can also combine it with a tag and a filter, as the site's own example does: /cat/gif/says/Hello?filter=mono&fontColor=orange&fontSize=20&type=square.
Practical notes
- Text goes in the URL path, so keep it short and URL-encode spaces or special characters (e.g.
hello%20world). Long captions may not fit well on the image. - Each request returns a different random cat, so the same URL won't give you the same picture twice. If you need a stable image, fetch once and cache the response on your side.
- Tag filtering narrows the pool:
/cat/cute/says/hellorequests a random cat tagged "cute" with your text. Combining tags uses a separator, per the site's documentation. - JSON output is available by adding
json=trueor sending anapplication/jsonheader, which is useful if your code needs metadata alongside the image. - Image type and filters (
xsmall,small,medium,square;blur,mono,negate,custom) can be layered onto the same request, which helps when the caption must match a layout or a monochrome design.
A concrete example
If you're building a Slack bot that replies with a captioned cat, construct the URL server-side with the user's short message as :text, set fontSize to something readable at chat-preview size, and cache the returned image briefly so repeated mentions don't hammer the service. For a prototype or a personal project this is quick; for a production feature, treat it as a random-image source rather than a precise image generator, since you can't choose which cat appears.
For the full parameter list and the tag-combination syntax, check the API documentation linked from Cat as a service (CATAAS).
How do I apply filters like blur or monochrome to a CATAAS cat image?
Add a filter query parameter to any /cat URL. For a plain random image, request /cat?filter=blur or /cat?filter=mono; the documented filter values are blur, mono, negate and custom. The filter can be combined with the other options, for example /cat?filter=mono&type=square or /cat?filter=blur&width=400.
Combining filters with other parameters
| Goal | Example pattern |
|---|---|
| Random cat with blur | /cat?filter=blur |
| Monochrome cat with a caption | /cat/says/Hello?filter=mono |
| Filtered GIF cat | /cat/gif?filter=mono |
| Filtered cat with a tag | /cat/cute?filter=blur |
| Custom color adjustments | /cat?filter=custom&brightness=...&saturation=... |
For custom, the page lists brightness, lightness, saturation and hue, plus separate red, green and blue parameters. Those are the filters to use when you want a specific look rather than one of the fixed presets.
A practical next step: pick one preset first, such as mono or blur, and check the result in a browser before adding says text or a size. If you need a fixed format for an app, add json=true to get a JSON response instead of a raw image. For a broader set of random-image APIs to compare, see The Cat API and PlaceKitten.
How can I combine multiple CATAAS parameters to create a customized cat image?
CATAAS lets you stack its URL parameters into a single request, so the main skill is knowing the order of the path segments and which query options combine safely. The path part (/cat, an optional :tag, and an optional /says/:text) defines which cat and what text; the query string (?type=, ?filter=, ?width=, ?fontSize=, etc.) defines how it is rendered. Mixing both is supported — the site's own "combo" example is /cat/gif/says/Hello?filter=mono&fontColor=orange&fontSize=20&type=square.
Combining building blocks
- Tag + text:
/cat/:tag/says/:text— e.g./cat/cute/says/helloreturns a random cat tagged "cute" with that caption. - Multiple tags: join them with a comma, per the page's note on tag search — e.g.
/cat/orange,cute. - Text styling: add
?fontSize=:size&fontColor=:colorto anysaysrequest. - Image type:
?type=xsmall|small|medium|squarefor size/shape. - Filters:
?filter=blur|mono|negate, orfilter=customwithbrightness,lightness,saturation,hue(orr,g,b). - Dimensions:
?width=:widthor?height=:height. - Output format:
?json=truefor a JSON object, or?html=truefor a page suited to social embeds.
A practical example
Suppose you want a square, monochrome cat tagged "cute" saying "hi" in orange text: /cat/cute/says/hi?type=square&filter=mono&fontColor=orange&fontSize=20. If you need the result programmatically, append &json=true and read the returned JSON instead of the raw image.
Decision criteria
Choose the simplest combination that meets the need: use path segments for selection and text, and query parameters only for rendering. If a request returns unexpected results, test the tag alone first (/cat/:tag), then add says, then add query options one at a time — that isolates whether a tag, the caption, or a filter is the problem. For a quick reference while building, the project's documentation is at Cat as a service (CATAAS).
How do I retrieve a list of all cats or tags using the CATAAS JSON API?
Use the JSON endpoints /api/cats and /api/tags on CATAAS. The first returns cat records, the second returns the tag vocabulary; add ?json=true (or send an application/json header) to the image endpoints when you want a JSON object instead of an image.
Listing cats
/api/cats returns cat records and accepts two useful parameters:
tags— a comma-separated list, e.g./api/cats?tags=cute,orangeskipandlimit— paging, e.g./api/cats?skip=0&limit=10
Combine them to page through a filtered set: /api/cats?tags=cute&skip=20&limit=10. This is the right call when you are building a gallery, a picker, or a cache of images rather than requesting one random cat per page load.
Listing tags
/api/tags returns all available tags. Fetch this once to populate a filter dropdown or autocomplete, then feed the chosen values into the tags parameter above. Tags can be combined with a comma separator, so a multi-select UI maps cleanly onto one request.
Random single cat vs. a list
The /cat family returns one image per request — good for placeholders, avatars or demo content. The /api/cats endpoint is the listing call. A quick comparison:
| Need | Endpoint | Notes |
|---|---|---|
| One random cat image | /cat |
Returns image bytes by default |
| One random cat as JSON | /cat?json=true |
Metadata instead of image |
| Filtered, paged collection | /api/cats?tags=…&skip=…&limit=… |
For galleries and caches |
| All tags | /api/tags |
Populate filters once |
Practical next step
For a filter UI, call /api/tags at load, render the options, then request /api/cats?tags=<selected>&limit=20 and increase skip by 20 for "load more". Handle the case where a filtered result set is smaller than limit — that signals the end of paging. Keep requests modest and cache responses, since this is a small community service rather than a high-volume production API; if you need guaranteed uptime or SLAs, plan a local fallback image.
For reference on the API's own conventions, see Cat as a service (CATAAS).
User reviews (0)