Properties
| Name | Type | Description |
|---|---|---|
| id | string | |
| query | string | |
| type | stringnull | |
| status | stringnull | |
| depth | stringnull | |
| summary | stringnull | |
| findings | array | |
| sources | array | |
| site_id | stringnull | |
| project_id | stringnull | |
| language | stringnull | |
| country | stringnull | |
| progress | integernull | |
| created_at | string | |
| completed_at | stringnull | |
| data | objectnull | Type-specific structured research data. Shape depends on the research type. Null for legacy research sessions. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/frase-io/json-schema/frase-io-research-schema.json",
"title": "Research",
"x-generated": "2026-11-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/frase-io-openapi.json#/components/schemas/Research",
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"query": {
"type": "string"
},
"type": {
"type": [
"string",
"null"
],
"enum": [
"general",
"topic",
"competitor",
"gap",
"serp"
]
},
"status": {
"type": [
"string",
"null"
],
"enum": [
"pending",
"researching",
"analyzing",
"completed",
"failed"
]
},
"depth": {
"type": [
"string",
"null"
]
},
"summary": {
"type": [
"string",
"null"
]
},
"findings": {
"type": "array",
"items": {
"$ref": "#/$defs/ResearchFinding"
}
},
"sources": {
"type": "array",
"items": {
"$ref": "#/$defs/ResearchSource"
}
},
"site_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"project_id": {
"type": [
"string",
"null"
],
"format": "uuid"
},
"language": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"progress": {
"type": [
"integer",
"null"
]
},
"created_at": {
"type": "string",
"format": "date-time"
},
"completed_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"data": {
"type": [
"object",
"null"
],
"description": "Type-specific structured research data. Shape depends on the research type. Null for legacy research sessions.",
"properties": {
"keywords": {
"type": "array",
"description": "Keywords with metrics (type=general)",
"items": {
"type": "object",
"properties": {
"keyword": {
"type": "string"
},
"search_volume": {
"type": "integer"
},
"difficulty": {
"type": "string",
"enum": [
"Low",
"Medium",
"High"
]
},
"cpc": {
"type": "number"
},
"intent": {
"type": [
"string",
"null"
]
},
"category": {
"type": "string"
}
}
}
},
"serp_results": {
"type": "array",
"description": "SERP competitor analysis (type=general, gap)",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"domain": {
"type": "string"
},
"rank": {
"type": "integer"
},
"word_count": {
"type": "integer"
},
"is_own_site": {
"type": "boolean"
},
"is_tracked_competitor": {
"type": "boolean"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"text": {
"type": "string"
}
}
}
}
}
}
},
"evidence": {
"type": "array",
"description": "Evidence items (type=general)",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"stat",
"fact",
"quote"
]
},
"source": {
"type": [
"string",
"null"
]
}
}
}
},
"sources": {
"type": "array",
"description": "Sources found (type=general)",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"domain": {
"type": "string"
}
}
}
},
"content_gaps": {
"type": "array",
"description": "Content gaps (type=gap, general)",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"impact": {
"type": "string",
"enum": [
"high",
"medium",
"low"
]
},
"competitors_covering": {
"type": "integer"
}
}
}
},
"competitors": {
"type": "array",
"description": "Competitor analysis (type=competitor)",
"items": {
"type": "object",
"properties": {
"domain": {
"type": "string"
},
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"rank": {
"type": "integer"
},
"word_count": {
"type": "integer"
},
"headings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"text": {
"type": "string"
}
}
}
}
}
}
},
"topic_directions": {
"type": "array",
"description": "Topic exploration directions (type=topic)",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"angle": {
"type": "string"
},
"estimated_difficulty": {
"type": "string",
"enum": [
"Low",
"Medium",
"High"
]
}
}
}
},
"sub_topics": {
"type": "array",
"description": "Sub-topic opportunities (type=topic)",
"items": {
"type": "object",
"properties": {
"topic": {
"type": "string"
},
"relevance": {
"type": "number"
},
"search_volume": {
"type": "integer"
}
}
}
},
"keyword_clusters": {
"type": "array",
"description": "Keyword clusters (type=topic)",
"items": {
"type": "object",
"properties": {
"cluster_name": {
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
},
"total_volume": {
"type": "integer"
}
}
}
}
}
}
},
"$defs": {
"ResearchFinding": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"content": {
"type": "string"
},
"relevance": {
"type": "number"
},
"source_urls": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"ResearchSource": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
},
"snippet": {
"type": "string"
},
"domain": {
"type": "string"
}
}
}
}
}
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/frase-io-research"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.