Eridu Discovery API

Anonymous, unauthenticated discovery metadata for eridu.ai — the self-describing route index (167 routes across 7 namespaces at capture), the registered content types and taxonomies, the publication statuses, and the public author records. This is the surface that makes the rest of the API machine-readable in the absence of any published developer documentation.

Operations 8

GET / Get the API index #
GET /wp/v2/types List content types #
GET /wp/v2/types/{type} Get a content type #
GET /wp/v2/taxonomies List taxonomies #
GET /wp/v2/taxonomies/{taxonomy} Get a taxonomy #
GET /wp/v2/statuses List publication statuses #
GET /wp/v2/users List authors #
GET /wp/v2/users/{id} Get an author #

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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/eridu-discovery-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 Specification

eridu-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Eridu Discovery API
  version: 1.0.0
  summary: Anonymous discovery metadata for eridu.ai
  description: 'Anonymous discovery metadata for eridu.ai — the self-describing route index, the registered content types and taxonomies, publication statuses, and the public author records. This is the surface that makes the rest of the API machine-readable in the absence of any published developer documentation.


    Eridu publishes no developer program, no developer portal and no product API. This document is an API Evangelist derivation of the only machine-readable interface the company serves — the WordPress core REST API behind eridu.ai — captured from the provider''s own live self-describing route index on 2026-08-12. It is read-only and anonymously readable; write methods exist on the same routes but require a WordPress user with an application password.'
  contact:
    name: Eridu
    url: https://eridu.ai/contact/
  termsOfService: https://eridu.ai/terms-of-use/
  x-apievangelist-derived-from: https://eridu.ai/wp-json/
  x-apievangelist-derived-on: '2026-08-12'
servers:
- url: https://eridu.ai/wp-json
  description: Eridu WordPress REST API
security: []
tags:
- name: Discovery
  description: Anonymous discovery metadata for eridu.ai — the self-describing route index, the registered content types and taxonomies, publication statuses, and the public author records. This is the surface that makes the rest of the API machine-readable in the absence of any published developer documentation.
paths:
  /:
    get:
      operationId: getApiIndex
      summary: Get the API index
      description: 'Retrieve the self-describing API index: site name, namespaces, authentication methods and every registered route.'
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: context
        in: query
        required: false
        description: The context query parameter, as registered by the endpoint.
        schema:
          type: string
          default: view
  /wp/v2/types:
    get:
      operationId: listTypes
      summary: List content types
      description: List the registered content types and their REST bases.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscoveryItem'
          headers:
            X-WP-Total:
              description: Total number of matching records across all pages.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current per_page size.
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
  /wp/v2/types/{type}:
    get:
      operationId: getType
      summary: Get a content type
      description: Retrieve a single registered content type.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: type
        in: path
        required: true
        description: An alphanumeric identifier for the post type.
        schema:
          type: string
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
  /wp/v2/taxonomies:
    get:
      operationId: listTaxonomies
      summary: List taxonomies
      description: List the registered taxonomies and the types they apply to.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscoveryItem'
          headers:
            X-WP-Total:
              description: Total number of matching records across all pages.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current per_page size.
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: type
        in: query
        required: false
        description: Limit results to taxonomies associated with a specific post type.
        schema:
          type: string
  /wp/v2/taxonomies/{taxonomy}:
    get:
      operationId: getTaxonomy
      summary: Get a taxonomy
      description: Retrieve a single registered taxonomy.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: taxonomy
        in: path
        required: true
        description: An alphanumeric identifier for the taxonomy.
        schema:
          type: string
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
  /wp/v2/statuses:
    get:
      operationId: listStatuses
      summary: List publication statuses
      description: List the publication statuses registered on the site.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscoveryItem'
          headers:
            X-WP-Total:
              description: Total number of matching records across all pages.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current per_page size.
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
  /wp/v2/users:
    get:
      operationId: listUsers
      summary: List authors
      description: List the public author records for eridu.ai.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DiscoveryItem'
          headers:
            X-WP-Total:
              description: Total number of matching records across all pages.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current per_page size.
              schema:
                type: integer
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: capabilities
        in: query
        required: false
        description: Limit result set to users matching at least one specific capability provided. Accepts csv list or single capability.
        schema:
          type: array
          items:
            type: string
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: exclude
        in: query
        required: false
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: has_published_posts
        in: query
        required: false
        description: Limit result set to users who have published posts.
        schema:
          type: boolean
      - name: include
        in: query
        required: false
        description: Limit result set to specific IDs.
        schema:
          type: array
          items:
            type: integer
          default: []
      - name: offset
        in: query
        required: false
        description: Offset the result set by a specific number of items.
        schema:
          type: integer
      - name: order
        in: query
        required: false
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        required: false
        description: Sort collection by user attribute.
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - registered_date
          - slug
          - include_slugs
          - email
          - url
          default: name
      - name: page
        in: query
        required: false
        description: Current page of the collection.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: per_page
        in: query
        required: false
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: roles
        in: query
        required: false
        description: Limit result set to users matching at least one specific role provided. Accepts csv list or single role.
        schema:
          type: array
          items:
            type: string
      - name: search
        in: query
        required: false
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: search_columns
        in: query
        required: false
        description: Array of column names to be searched.
        schema:
          type: array
          items:
            type: string
            enum:
            - email
            - name
            - id
            - username
            - slug
          default: []
      - name: slug
        in: query
        required: false
        description: Limit result set to users with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      - name: who
        in: query
        required: false
        description: Limit result set to users who are considered authors.
        schema:
          type: string
          enum:
          - authors
  /wp/v2/users/{id}:
    get:
      operationId: getUser
      summary: Get an author
      description: Retrieve a single public author record by id.
      tags:
      - Discovery
      security: []
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscoveryItem'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      parameters:
      - name: id
        in: path
        required: true
        description: Unique identifier for the user.
        schema:
          type: integer
      - name: context
        in: query
        required: false
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
components:
  responses:
    BadRequest:
      description: Invalid parameter.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: No record matches the supplied identifier.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication is required for the requested context.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      description: The WordPress REST API error envelope.
      properties:
        code:
          type: string
          description: Machine-readable error code, e.g. rest_post_invalid_id.
        message:
          type: string
          description: Human-readable error message.
        data:
          type: object
          description: Error data, carrying the HTTP status and, for validation failures, per-parameter details.
          properties:
            status:
              type: integer
              description: The HTTP status code.
          additionalProperties: true
      required:
      - code
      - message
    DiscoveryItem:
      type: object
      description: A discovery record as returned by the WordPress core REST API. Field-level schemas are published by the endpoint itself via the OPTIONS method and the `context=edit` schema; they are not restated here so this document never diverges from the live contract.
      additionalProperties: true
  securitySchemes:
    applicationPassword:
      type: http
      scheme: basic
      description: 'WordPress application passwords (HTTP Basic: username + application password). Advertised by the site''s own API index at https://eridu.ai/wp-json/ under `authentication.application-passwords`. Required only for write methods and non-public contexts; every operation in this document is anonymously readable.'