Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/rainforest-qa:rainforest-qa-sites-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: Rainforest Sites API
description: Nearly all interactions done in Rainforest can be done via the API. Find your API Token (for the CLIENT_TOKEN header field) on the integration settings page (https://app.rainforestqa.com/settings/integrations).
version: '1'
servers:
- url: https://app.rainforestqa.com/api
security:
- api_key: []
tags:
- name: Sites
description: Operations about sites
paths:
/1/sites/{site_id}:
put:
summary: Update a site
parameters:
- in: path
name: site_id
description: A site ID
required: true
schema:
type: integer
format: int32
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/put-site'
required: true
responses:
'200':
description: Site updated
content:
application/json:
schema:
$ref: '#/components/schemas/Site'
'400':
description: Site could not be updated
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Site not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Sites
operationId: put-site
x-rdme-order: 11
get:
summary: Get a site
parameters:
- in: path
name: site_id
description: A site ID
required: true
schema:
type: integer
format: int32
responses:
'200':
description: Site retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/Site'
'404':
description: Site not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Sites
operationId: get-site
x-rdme-order: 10
delete:
summary: Delete a site
description: Delete a site and its associated site-environments
parameters:
- in: path
name: site_id
description: A site ID
required: true
schema:
type: integer
format: int32
responses:
'200':
description: Site deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Site'
'400':
description: Site could not be deleted
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Site not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Sites
operationId: delete-site
x-rdme-order: 12
/1/sites:
get:
summary: List sites
parameters:
- in: query
name: name
description: Filter by name (case-insensitive)
required: false
schema:
type: string
- in: query
name: page
description: Page of results to display
required: false
schema:
type: integer
format: int32
default: 1
- in: query
name: page_size
description: 'Number of results to return per page; maximum: 100'
required: false
schema:
type: integer
format: int32
default: 10
responses:
'200':
description: Retrieved sites
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Site'
tags:
- Sites
operationId: get-sites
x-rdme-order: 1
post:
summary: Create a new site
description: Create a new site - creates corresponding site-environments for each environment as well
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/post-sites'
required: true
responses:
'201':
description: Site created
content:
application/json:
schema:
$ref: '#/components/schemas/Site'
'400':
description: Site could not be created
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Sites
operationId: post-sites
x-rdme-order: 2
components:
schemas:
post-sites:
type: object
properties:
name:
type: string
description: The name of the new site
default_url:
type: string
description: Default URL for site-environments
default:
type: boolean
description: Set this site as the default
category:
type: string
description: Set the type of url
enum:
- site
- ios
- android
default: site
ai_generation_rules:
type: string
description: Set the AI generation rules for the site
required:
- name
description: Create a new site - creates corresponding site-environments for each environment as well
Site:
type: object
properties:
id:
type: integer
format: int32
created_at:
type: string
format: date-time
name:
type: string
default:
type: boolean
category:
type: string
enum:
- site
- ios
- android
ai_generation_rules:
type: string
snippet_count:
type: integer
format: int32
test_count:
type: integer
format: int32
description: Site model
put-site:
type: object
properties:
name:
type: string
description: New name of site
default:
type: boolean
description: Set this site as default
enum:
- true
category:
type: string
description: Set the type of url
enum:
- site
- ios
- android
ai_generation_rules:
type: string
description: Set the AI generation rules for the site
description: Update a site
Error:
type: object
properties:
error:
type: string
description: An error message describing what went wrong
required:
- error
description: Error model
securitySchemes:
api_key:
type: apiKey
name: CLIENT_TOKEN
in: header