Website profiles · Technology insights · Alternatives

cataas.com

Cat as a service (CATAAS) is a REST API to spread peace and love (or not) thanks to cats.

No paid content found
Visit website
Profile views 0 Outbound visits 0 Normal
Cat as a service (CATAAS) Full homepage screenshot

At a glance

Category
Development
Language
English
Paid-content signal
No paid content foundObserved
Registered
2015
Hosting
OVH SASInferred
HTTPS certificate trusted
PassedObserved
Last updated

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: /cat returns any cat; /cat/:tag narrows by tag, and multiple tags can be combined.
  • GIFs: /cat/gif returns a random animated cat.
  • Caption text: /cat/says/:text returns a cat "saying" your text, with optional fontSize and fontColor.
  • Image options: type (xsmall, small, medium, square), filter (blur, mono, negate, custom), and width/height let you shape the output.
  • Custom filters: brightness, lightness, saturation, hue, or RGB values can be applied.
  • Response formats: json=true returns a JSON object, and html=true returns a full HTML page suited to embedded previews on social platforms.
  • Browsing data: /api/cats lists cats by tags with skip/limit paging, and /api/tags lists 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=400 or https://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 /cat endpoint 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/json header, 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/hello requests 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=true or sending an application/json header, 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/hello returns 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=:color to any says request.
  • Image type: ?type=xsmall|small|medium|square for size/shape.
  • Filters: ?filter=blur|mono|negate, or filter=custom with brightness, lightness, saturation, hue (or r, g, b).
  • Dimensions: ?width=:width or ?height=:height.
  • Output format: ?json=true for a JSON object, or ?html=true for 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,orange
  • skip and limit — 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).

Related questions

More questions →
What Is OpenAPI-Generated API Documentation and How Does It Work?

OpenAPI-generated API documentation is reference documentation that is produced automatically from an OpenAPI description file rather than written by hand. You write (or generate) a machine-readable specification of your API — endpoints, parameters, request bodies, responses, schemas, and auth — and a documentation tool reads that file and renders a browsable, often interactive reference site. The spec becomes the single source of truth; the docs become a build artifact.

This differs from manually written docs in one fundamental way: with hand-written docs, the prose is the source of truth and the API is described separately. With spec-driven docs, the API description is the source, and every page, table, and code sample is derived from it.

How the workflow actually runs

A typical spec-driven documentation pipeline has five stages:

  1. Author or generate the spec. You either write an OpenAPI document by hand (YAML or JSON), or generate it from code annotations, framework metadata, or a design-first editor. Design-first means the spec is written before implementation; code-first means it is extracted from existing code.
  2. Validate and lint. The spec is checked against the OpenAPI schema and against style rules — consistent naming, required descriptions, no undocumented 4xx responses, no orphaned schemas.
  3. Bundle and transform. Multi-file specs are combined, $ref pointers are resolved, and the document is optionally split into per-tag or per-version outputs.
  4. Render. A documentation tool converts the spec into HTML: an endpoint list, a sidebar of operations, parameter tables, response schemas, and a "try it" console.
  5. Publish and version. The rendered site is deployed, and each API version gets its own snapshot so consumers can read docs matching the version they call.

Steps 2 through 5 are usually automated in CI. If the spec fails validation, the docs build fails — which is the point.

Spec-driven vs. hand-written documentation

Dimension OpenAPI-generated Hand-written
Source of truth The spec file The prose
Consistency with the API High, if the spec is accurate Drifts as the API changes
Effort per endpoint Low after setup Repeated for every endpoint
Narrative and tutorials Weak; needs separate pages Strong
Code samples Generated per language from schemas Written and maintained manually
Customization Bounded by the tool's templates Unlimited
Failure mode Accurate spec, poor docs, or stale spec Beautiful docs that describe an API that no longer exists

The practical conclusion most teams reach: generate the reference, write the guides. Reference material is repetitive and mechanical, which is exactly what generation is good at. Conceptual explanations, migration notes, and tutorials carry judgment that a spec cannot express.

What you get out of the box

Generated reference pages commonly include:

  • An operation list grouped by tag or path, with HTTP method and path.
  • Parameter tables showing name, location (path, query, header, cookie), type, required flag, and description.
  • Request and response schemas rendered as expandable trees, including nested objects and arrays.
  • Authentication details pulled from the securitySchemes section.
  • Interactive request consoles that let a reader send a real call from the browser.
  • Generated code samples in several languages, derived from the same schemas.
  • Multiple output formats, such as a static site, a single HTML file, or a mock server.

Because all of these come from one document, changing a field name in the spec updates the parameter table, the schema tree, and every code sample at once.

Where spec-driven documentation breaks down

Generation is not free. The trade-offs are real:

Spec quality becomes documentation quality. A field with no description produces a table row with an empty cell. A vague summary produces a vague heading. Tools can enforce presence of descriptions via linting, but they cannot enforce that the description is useful.

Customization has limits. If you need a page that does not map to an OpenAPI concept — a conceptual overview, a pricing explanation, a comparison of two endpoints — you write it outside the generator and link to it.

Not everything is expressible. Webhooks, streaming responses, long-polling behavior, and complex multi-step flows are awkward or impossible to describe fully in OpenAPI. Those need prose.

The spec can go stale. If the spec is maintained separately from the implementation, it drifts just like hand-written docs. The mitigation is to generate the spec from code, or to test the implementation against the spec in CI.

Interactive consoles need care. A "try it" button that hits a production API with real credentials is a security and rate-limit problem. Point it at a sandbox, or disable it.

Deciding whether to adopt it

Adopt spec-driven reference documentation if most of these are true:

  • Your API has more than a handful of endpoints, or changes frequently.
  • You ship client SDKs or code samples in more than one language.
  • Multiple teams consume the API and need a consistent, always-current reference.
  • You already have, or are willing to maintain, an OpenAPI description.

Stay with hand-written docs, or a hybrid, if:

  • Your API is small and stable, and the reference fits on one page.
  • Your documentation is mostly conceptual and contains little endpoint-level detail.
  • You cannot commit to keeping the spec in sync with the implementation.

A reasonable middle path: generate the reference from the spec, and hand-write the getting-started guide, authentication walkthrough, and error-handling page. Link the two directions so readers can move from concept to endpoint and back.

A minimal starting checklist

  1. Produce one valid OpenAPI document for a single API version.
  2. Add a linter with rules for descriptions, operation IDs, and error responses.
  3. Wire the docs build into CI so a failing spec fails the build.
  4. Render the reference and review it as a reader, not as the author.
  5. Write the two or three conceptual pages the generator cannot produce.
  6. Version the published docs alongside the API version.

The core idea is simple: describe the API once, in a format both machines and humans can read, and let the reference documentation fall out of that description. Everything else — tooling, hosting, interactivity — is a detail on top of that decision.

How to Get JSON Data or an HTML Page from CATAAS

To get machine-readable data from CATAAS, use /cat?json=true for a single random cat, /api/cats?tags=...&skip=0&limit=10 for a batch list, and /api/tags for all available tags. To get a ready-to-embed HTML page instead, use /cat?html=true. One behavior worth knowing: the site notes that JSON is returned when the request contains an application/json header, so if you rely on header-based negotiation, set that header explicitly.

Single random cat as JSON

Request:

GET https://cataas.com/cat?json=true

Expected result: a JSON object describing one random cat instead of the image binary. This is the simplest way to get a cat reference you can then render yourself, for example by building an image URL from the returned identifier.

You can combine this with the other /cat options, since the documentation shows a combined example:

GET https://cataas.com/cat/gif/says/Hello?filter=mono&fontColor=orange&fontSize=20&type=square

The same query parameters (type, filter, width, height, fontSize, fontColor) apply to the random-cat endpoint, so ?json=true can sit alongside them when you want metadata plus a customized image.

Single random cat as an HTML page

Request:

GET https://cataas.com/cat?html=true

Expected result: a random cat wrapped in an HTML page. The documentation describes this as useful for Twitter or Facebook embedded rendering — in other words, a page you can point an embed or iframe at rather than an image URL.

Batch queries: list cats by tag

Request pattern:

GET https://cataas.com/api/cats?tags=tag1,tag2&skip=0&limit=10
Parameter Meaning Example
tags Comma-separated tags to filter by tags=cute,orange
skip Number of results to skip (paging offset) skip=0
limit Maximum number of results to return limit=10

Expected result: a list of cats matching the tags. Use skip with a fixed limit to page through results — for example skip=0&limit=10, then skip=10&limit=10.

Note the separator difference: the batch endpoint uses a comma (,) between tags, while the random-cat path uses a colon (:tag) to combine tags, as in /cat/orange:cute. The site's changelog specifically mentions fixing tag search and tags combined with the comma separator, so comma is the documented form for /api/cats.

Discover valid tags

Request:

GET https://cataas.com/api/tags

Expected result: all tags currently available. Call this before building a tag-filtered query so you don't page through empty results with a tag that doesn't exist.

Practical notes

  • The homepage counter reads "Have 0 cats for now," which reflects the live count at load time; don't hardcode an expected total. Always rely on the limit/skip response rather than assuming a collection size.
  • If a JSON request comes back as something unexpected, check whether you sent the application/json header — the site states JSON is returned when the request contains it.
  • For a single image with custom text, /cat/says/:text plus fontSize and fontColor covers most captioning needs; add ?json=true only when you need the object rather than the image.

Quick reference

Goal Endpoint
One random cat, JSON object /cat?json=true
One random cat, HTML page /cat?html=true
Many cats by tag, paged /api/cats?tags=a,b&skip=0&limit=10
All tags /api/tags
What Is Cat as a Service (CATAAS)?

CATAAS (Cat as a Service) is a REST API that returns cat images and GIFs on demand. You call a URL such as /cat and get a random cat back; you can add tags, overlaid text, filters, and size parameters to control what you get. It is useful when you need placeholder cat imagery for a demo, a test fixture, a chat bot, or a fun embed, and you want it without hosting images yourself. The site describes itself as "a REST API to spread peace and love (or not) thanks to cats."

What you can request

The API is organized around a small set of URL patterns. The table below reflects the endpoints listed in the site's documentation.

What you want URL pattern Example
Random cat /cat Random cat
Random cat with a tag /cat/:tag Random orange cute cat
Random GIF cat /cat/gif Random gif cat
Cat with overlaid text /cat/says/:text Random cat saying hello
Tagged cat with text /cat/:tag/says/:text Random cute cat saying hello
Text with font styling /cat/says/:text?fontSize=:size&fontColor=:color Custom random cat saying hello

Tags can be combined using the :tag separator, so a single request can narrow results to more than one tag.

Advanced options

Beyond tags and text, the documentation lists query parameters that change the image itself:

  • Type: /cat?type=:type accepts xsmall, small, medium, or square.
  • Filter: /cat?filter=:filter accepts blur, mono, negate, or custom.
  • Custom filter values: with filter=custom, you can pass brightness, lightness, saturation, and hue, or pass r, g, and b values.
  • Dimensions: /cat?width=:width or /cat?height=:height sets a custom size.
  • HTML output: /cat?html=true returns the cat inside an HTML page, which the docs note is useful for Twitter or Facebook embedded rendering.
  • JSON output: /cat?json=true returns a random cat as a JSON object.

Parameters can be combined. The documentation's own combo example is /cat/gif/says/Hello?filter=mono&fontColor=orange&fontSize=20&type=square.

Getting JSON data and tags

Two endpoints return data rather than an image:

  • /api/cats?tags=tag1,tag2&skip=0&limit=10 returns a list of cats, with tag filtering and paging via skip and limit.
  • /api/tags returns all available tags.

According to the site's changelog notes, JSON is returned when the request contains an application/json header, and tag search plus comma-separated tag combinations were fixed in the current major version. The API documentation is linked from the site as "API doc."

Things to know before you build on it

  • The homepage counter read "Have 0 cats for now" at the time of the captured page, so the available image pool may be limited or in flux; check /api/tags and /api/cats before relying on specific tags.
  • The site lists a "Buy me a beer" support link but no pricing page or payment details, so treat cost and usage limits as unspecified rather than free-for-any-volume.
  • The footer reads "© 2026 - Made with ❤️ by Kevin - all rights reserved," which is worth checking if you plan to redistribute the images rather than just display them.

For a quick start, request /cat to confirm the service responds, then add ?json=true if your client expects structured data, or move to /api/cats when you need a list rather than a single random image.

How to Filter and Customize Cat Images from the CATAAS API

You can filter and customize CATAAS cat images with query parameters on the /cat endpoint: type sets the image shape (xsmall, small, medium, square), filter applies blur, mono, negate, or custom effects, width/height resize the image, and filter=custom accepts brightness, lightness, saturation, hue, or RGB values. All of these can be combined with tag paths and the says text endpoint, so a single request can return, for example, a square, monochrome, resized cat saying "Hello."

The parameters at a glance

Parameter Accepted values What it does
type xsmall, small, medium, square Returns the cat image in the given image type
filter blur, mono, negate, custom Applies a preset filter to the image
filter=custom + brightness, lightness, saturation, hue Numeric values Adjusts those four properties
filter=custom + r, g, b Numeric values Applies an RGB-based filter
width or height Numeric value Returns the cat at a custom size

These are documented as query parameters on /cat, so they attach after a ? and are joined with &.

Step-by-step: build a customized request

  1. Start from the base endpoint. A plain GET /cat returns a random cat.
  2. Add a shape if you need one. GET /cat?type=square returns a square cat; the other documented values are xsmall, small, and medium.
  3. Add a filter. GET /cat?filter=mono returns a monochrome cat. The presets are blur, mono, and negate.
  4. Or tune the filter yourself. GET /cat?filter=custom&brightness=:brightness&lightness=:lightness&saturation=:saturation&hue=:hue adjusts those four properties, while GET /cat?filter=custom&r=:red&g=:green&b=:blue applies an RGB filter.
  5. Resize. GET /cat?width=:width or GET /cat?height=:height returns the cat at your chosen dimension.
  6. Combine everything. The documentation's own combo example is /cat/gif/says/Hello?filter=mono&fontColor=orange&fontSize=20&type=square, which mixes a GIF, overlay text, a filter, text styling, and an image type in one request.

Expected result: the response is the image itself, unless you ask for another format (see below). Verify it worked by checking that the returned image shows the shape, filter, and size you requested; if a parameter seems ignored, confirm the spelling and that it is attached to /cat with ? and &.

Combining filters with tags and text

Filters are query parameters, so they stack on top of the path-based features:

  • Tags: /cat/:tag returns a random cat with that tag, and multiple tags can be combined with the :tag separator (the docs show "Random orange cute cat" as the example). Add filters after the path, e.g. /cat/:tag?filter=blur.
  • Text overlay: /cat/says/:text returns a cat saying your text, and /cat/:tag/says/:text combines a tag with text. Text styling is also available via fontSize and fontColor, as in /cat/says/:text?fontSize=:size&fontColor=:color.
  • Everything at once: a tag path, says, and query filters can all appear in one URL, following the combo pattern above.

Choosing between presets and custom filters

  • Use a preset (blur, mono, negate) when you want a predictable, one-word effect and don't need fine control — it keeps URLs short and readable.
  • Use filter=custom when you need a specific look: the brightness/lightness/saturation/hue route for perceptual adjustments, or the r/g/b route for color-channel control. Note that the two custom forms are documented separately, so pick one per request rather than assuming they merge.
  • Use type vs. width/height depending on intent: type selects a documented image variant, while width/height gives you an explicit dimension. If you need an exact pixel size, the width/height parameters are the direct route.

Getting JSON instead of an image

If your client needs metadata rather than the binary image, the docs describe two options: /cat?json=true returns a random cat as a JSON object, and the newer behavior returns JSON when the request contains an application/json header. For browsing the collection, /api/cats?tags=tag1,tag2&skip=0&limit=10 returns cats filtered by tags with pagination, and /api/tags returns all available tags — useful for discovering valid tag values before building filtered image URLs.

Common snags

  • Tag search behavior changed: the site notes a fix for tags search and for tags combined with a , separator, so if you relied on older tag syntax, check the current API doc.
  • Mixing parameters: keep the ?/& structure intact when combining filter, type, and text options; a malformed query is the most likely reason a customization silently doesn't apply.
  • JSON vs. image: decide up front whether you want the image or the JSON object, since json=true or the JSON header changes the response type.
How Tag Combinations Work on CATAAS and How to Support the Project

On CATAAS (Cat as a Service), you combine tags by chaining them with the :tag separator in the image URL — for example /cat/orange:cute returns a random cat matching both tags. The /api/cats endpoint uses a different convention: comma-separated tags in a single tags query parameter, like ?tags=orange,cute. To support the project, the site offers a "Buy me a beer" link.

Combining tags for random cat images

The basic image endpoint accepts one or more tags directly in the path:

URL pattern What it returns
/cat A random cat, no tag filter
/cat/:tag A random cat with that tag
/cat/:tag1:tag2 A random cat matching the combined tags

The site's own example is a random orange cute cat, built by joining tags with the : separator. The practical effect is narrowing the random pool: each added tag restricts results further, so a combination that no image satisfies will not return a usable cat.

Tags plus text

You can keep the tag filter while adding a caption:

  • /cat/:tag/says/:text — a random cat with that tag saying your text.
  • /cat/says/:text — the same, without a tag filter.

Text styling is appended as query parameters, e.g. ?fontSize=:size&fontColor=:color. These combine with the advanced options below.

Querying the JSON API by tags

The JSON endpoints use commas rather than colons:

Endpoint Purpose
/api/cats?tags=tag1,tag2&skip=0&limit=10 Returns cats matching the tags, with paging via skip and limit
/api/tags Returns all available tags

Two practical notes from the site's changelog: tag search was fixed, and tags combined with a , separator were fixed — so comma separation is the supported form for the API. If you are unsure which tags exist, call /api/tags first and build combinations from real values instead of guessing.

Getting JSON from the image endpoint

/cat?json=true returns a random cat as a JSON object. The changelog adds that JSON is returned when the request contains an application/json header, so a client sending that header gets JSON without the query flag. /cat?html=true instead returns an HTML page, which the site describes as useful for Twitter or Facebook embedded rendering.

Mixing tags with filters and sizes

Tags are only one part of the query string; the advanced parameters stack on top:

  • Type: ?type=xsmall, small, medium, or square.
  • Filter: ?filter=blur, mono, negate, or custom.
  • Custom filter: ?filter=custom&brightness=:b&lightness=:l&saturation=:s&hue=:h, or RGB via &r=:red&g=:green&b=:blue.
  • Dimensions: ?width=:width or ?height=:height.

The site's combined example is /cat/gif/says/Hello?filter=mono&fontColor=orange&fontSize=20&type=square. The same pattern works with a tag path, so a tagged, captioned, filtered, square image is a single request.

Supporting the project

The page includes a "Buy me a beer 🍺" link alongside the upload and API doc links, described as a way to support the project if you like Cataas. The site does not publish pricing, tiers, or account requirements, so treat the beer link as the stated support channel rather than assuming any paid plan or free-tier guarantee. The footer credits Kevin and notes all rights reserved.

Quick reference

  • Image endpoint, multiple tags: join with :, e.g. /cat/orange:cute.
  • JSON API, multiple tags: join with ,, e.g. /api/cats?tags=orange,cute.
  • Discover valid tags: /api/tags.
  • JSON output: /cat?json=true or send an application/json header.
  • Support: use the "Buy me a beer" link on the site.

Website Overview

Limited stack disclosure and few obvious backend markers suggest a more restrained public footprint. That reduces easy fingerprinting clues but is not proof of overall security. An established domain and managed infrastructure suggest continuity of operations and may support dependable delivery, although neither guarantees service quality.

Domain and Registration

Registered in 2015, this domain has about 11 years of history. That suggests continuity, although ownership and purpose may have changed. Transfer-protection status is present, helping reduce the risk of unauthorized domain transfers. The domain uses the common .com extension, which is not an independent safety signal.

DNS and Email

The lowest TTL is 60 seconds, supporting rapid record changes at the cost of more frequent lookups. Nameservers are provided by ui-dns.biz, indicating managed DNS hosting. MX records point to the ionos.fr email service. No CNAME was found; the observed records resolve directly to addresses. SPF and DMARC are configured. DKIM status is unknown.

TLS and Certificates

The certificate uses an RSA 4096-bit public key, offering broad client compatibility. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued by Let's Encrypt, commonly associated with automated certificate services. The certificate's total validity is about 89 days, consistent with a short renewal cycle.

HTTP and Browser Security

The checked browser-security headers were not detected, leaving fewer explicit browser-side safeguards. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. No obvious internal addresses or debug information were found in the headers. No explicit CDN or WAF marker was found in the response headers. No CORS permission header was found, so browsers normally restrict cross-origin script access.

Technology Stack Analysis

No obvious technology stack is exposed. This may reflect restrained information disclosure, although the underlying technologies remain unknown.

Search and Social Sharing

The title has 25 characters, within a common display range. A meta description is present, with 89 characters. The observed directives allow indexing and link following. No Generator meta tag is publicly exposed. A viewport declaration is present, providing a basis for mobile layout.

Hosting and Email

DNSui-dns.biz
HostingOVH SAS
Emailionos.fr
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) France flagFrance Inferred 94.23.214.79

Registration details

RDAP / WHOIS

RegistrarIONOS SE
Registered2015-10-18
Expires2027-10-18
Domain statusclient transfer prohibited
Nameserversns1023.ui-dns.biz、ns1023.ui-dns.com、ns1023.ui-dns.de、ns1023.ui-dns.org
DNSSECunsigned

DNS records

DNS

TypeNameValueTTLPriority
Acataas.com94.23.214.7960—
MXcataas.commx00.ionos.fr360010
MXcataas.commx01.ionos.fr360010
NScataas.comns1023.ui-dns.biz172800—
NScataas.comns1023.ui-dns.com172800—
NScataas.comns1023.ui-dns.de172800—
NScataas.comns1023.ui-dns.org172800—
TXTcataas.comv=spf1 include:_spf-eu.ionos.com ~all3600—
DMARCdmarc.ionos.frv=DMARC1; p=none;86400—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subjectcataas.com
IssuerLet's Encrypt
Valid until2027-01-17T08:40 · Remaining when checked: 89 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html

Identified technologies

Technology stack: Unknown

Pages, Search and Sharing

Meta descriptionCat as a service (CATAAS) is a REST API to spread peace and love (or not) thanks to cats.
Canonical URLhttps://cataas.com/
LanguageEnglish (default)
Twitter CardNot detected

No robots.txt found

No sitemaps found

User reviews (0)

  • No reviews yet.