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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/agora-website-content-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.1.0
info:
title: Agora Website Content API
version: '2026-09-12'
summary: Agora's public, first-party content API for agorareal.com.
description: 'The anonymous, read-mostly content API behind agorareal.com. The marketing site is a headless
WordPress install at websiteapi.agorareal.com fronted by a Next.js application on agorareal.com, and
the WordPress REST API is served publicly at https://websiteapi.agorareal.com/wp-json. Alongside the
stock wp/v2 namespace, Agora publishes its own first-party namespace, agora/v1, with 25 routes purpose-built
for the site: posts and case studies by slug, author detail, category batches, the cookie and privacy
policies, the site map, Yoast redirects, theme settings and the AI "Season of Innovation" release
feed.
PROVENANCE: this document was DERIVED, not fetched. Agora publishes no OpenAPI. Every path, method
and parameter below is copied from the live self-describing route index at https://websiteapi.agorareal.com/wp-json
(HTTP 200, 326,828 bytes, fetched 2026-09-12), which is the WordPress REST API''s own machine-readable
discovery document. The route index declares arguments but not response schemas, so no response body
schema is asserted here. The error envelope and the pagination headers WERE observed on live anonymous
calls and are recorded as seen.
SCOPE: this is the content API for Agora''s website. It is NOT the Agora investment-management platform
API. That surface is tenant-scoped at https://{tenant}.acp.agorareal.com/api, is unreachable anonymously
(nginx 502 to every anonymous /api/* request), and is sold as a separately priced Enterprise add-on
with no public reference.'
contact:
name: Agora
url: https://agorareal.com/contact-us/
x-generated-from: https://websiteapi.agorareal.com/wp-json
x-generated-method: derived
x-generated-date: '2026-09-12'
servers:
- url: https://websiteapi.agorareal.com/wp-json
description: Agora headless WordPress REST API (production).
tags:
- name: Agora Content
description: Agora's own first-party agora/v1 namespace.
- name: WordPress Content
description: Public read routes of the stock wp/v2 namespace.
- name: oEmbed
description: oEmbed representation of an agorareal.com URL.
paths:
/agora/v1/Carrers:
get:
operationId: getAgoraV1Carrers
summary: GET /agora/v1/Carrers
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/all_categories:
get:
operationId: getAgoraV1AllCategories
summary: GET /agora/v1/all_categories
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/fetch-theme-setting:
get:
operationId: getAgoraV1FetchThemeSetting
summary: GET /agora/v1/fetch-theme-setting
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/flexible-content:
get:
operationId: getAgoraV1FlexibleContent
summary: GET /agora/v1/flexible-content
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/get-author-by-author-slug/{author_slug}:
get:
operationId: getAgoraV1GetAuthorByAuthorSlug
summary: GET /agora/v1/get-author-by-author-slug/{author_slug}
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
parameters:
- name: author_slug
in: path
required: true
description: Path segment author_slug.
schema:
type: string
security:
- {}
/agora/v1/get-author-detail-by-author-id/{author_id}:
get:
operationId: getAgoraV1GetAuthorDetailByAuthorId
summary: GET /agora/v1/get-author-detail-by-author-id/{author_id}
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
parameters:
- name: author_id
in: path
required: true
description: Path segment author_id.
schema:
type: string
security:
- {}
/agora/v1/get-case-study-by-post-slug/{post_slug}:
get:
operationId: getAgoraV1GetCaseStudyByPostSlug
summary: GET /agora/v1/get-case-study-by-post-slug/{post_slug}
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
parameters:
- name: post_slug
in: path
required: true
description: Path segment post_slug.
schema:
type: string
security:
- {}
/agora/v1/get-categories:
get:
operationId: getAgoraV1GetCategories
summary: GET /agora/v1/get-categories
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/get-cookie-policy:
get:
operationId: getAgoraV1GetCookiePolicy
summary: GET /agora/v1/get-cookie-policy
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/get-more-articles-by-blog-slug/{blog_slug}:
get:
operationId: getAgoraV1GetMoreArticlesByBlogSlug
summary: GET /agora/v1/get-more-articles-by-blog-slug/{blog_slug}
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
parameters:
- name: blog_slug
in: path
required: true
description: Path segment blog_slug.
schema:
type: string
security:
- {}
/agora/v1/get-posts-by-post-slug/{post_slug}:
get:
operationId: getAgoraV1GetPostsByPostSlug
summary: GET /agora/v1/get-posts-by-post-slug/{post_slug}
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
parameters:
- name: post_slug
in: path
required: true
description: Path segment post_slug.
schema:
type: string
security:
- {}
/agora/v1/get-privacy-policy:
get:
operationId: getAgoraV1GetPrivacyPolicy
summary: GET /agora/v1/get-privacy-policy
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/get_ai_new_releases_filters:
get:
operationId: getAgoraV1GetAiNewReleasesFilters
summary: GET /agora/v1/get_ai_new_releases_filters
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/get_ai_new_releases_posts:
get:
operationId: getAgoraV1GetAiNewReleasesPosts
summary: GET /agora/v1/get_ai_new_releases_posts
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the index
and are therefore not asserted here.
responses:
'200':
description: Success. Response body shape is not declared in the route index.
headers:
X-WP-Total:
description: Total number of matching records (collection routes).
schema:
type: integer
X-WP-TotalPages:
description: Total number of pages available (collection routes).
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
content:
application/json:
schema: {}
'400':
description: Invalid parameter.
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'401':
description: 'Not authenticated. Observed body: {"code":"rest_not_logged_in",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'403':
description: 'Authenticated but not permitted. Observed body: {"code":"rest_forbidden",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
'404':
description: 'No route or record. Observed body: {"code":"rest_no_route",...} / {"code":"rest_post_invalid_id",...}.'
content:
application/json:
schema:
$ref: '#/components/schemas/RestError'
security:
- {}
/agora/v1/get_all_authors:
get:
operationId: getAgoraV1GetAllAuthors
summary: GET /agora/v1/get_all_authors
tags:
- Agora Content
description: Route declared by the live WordPress REST route index at https://websiteapi.agorareal.com/wp-json.
Parameters are copied verbatim from the index; response schemas are not declared by the
# --- truncated at 32 KB (212 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/agora-real-estate/refs/heads/main/openapi/agora-real-estate-website-content-api-openapi.yml