Gotham Greens Media API

Public, unauthenticated read access to the media library behind gothamgreens.com — product photography, farm imagery and recipe images with their generated size variants.

Operations 2

GET /wp/v2/media List media items #
GET /wp/v2/media/{id} Get a media item #

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/gotham-greens-media-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

gotham-greens-media-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Gotham Greens Media API
  version: wp/v2
  summary: Public read surface of the gothamgreens.com media library.
  description: The `attachment` (media) type behind gothamgreens.com — product photography, greenhouse and farm imagery, and Journal recipe images — exposed anonymously through the WordPress core REST API, including each asset's generated size variants and source URL. Derived from the live route index and verified with anonymous probes returning HTTP 200. Upload and edit operations on these routes require authentication and are not documented here.
  contact:
    name: Gotham Greens
    url: https://www.gothamgreens.com/contact/
  license:
    name: Site content — all rights reserved, see Terms of Use
    url: https://www.gothamgreens.com/terms-of-use/
  x-apis-io-provenance:
    method: derived
    source: https://www.gothamgreens.com/wp-json/
    derived_on: '2026-08-01'
    note: Routes enumerated from the live wp-json discovery document (406 routes across 17 namespaces); each operation below was probed anonymously and returned HTTP 200. Schemas reflect the fields observed in live responses on 2026-08-01. No fabricated operations.
servers:
- url: https://www.gothamgreens.com/wp-json
  description: Production
tags:
- name: Media
  description: Media library attachments and their generated size variants.
paths:
  /wp/v2/media:
    get:
      tags:
      - Media
      operationId: listMedia
      summary: List media items
      description: Returns a paginated collection of media library attachments.
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/perPage'
      - $ref: '#/components/parameters/search'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/orderby'
      - $ref: '#/components/parameters/context'
      - name: media_type
        in: query
        description: Limit results to attachments of a specific media type.
        schema:
          type: string
          enum:
          - image
          - video
          - text
          - application
          - audio
      - name: mime_type
        in: query
        description: Limit results to attachments of a specific MIME type.
        schema:
          type: string
      - name: parent
        in: query
        description: Limit results to attachments attached to the given post IDs.
        schema:
          type: array
          items:
            type: integer
      responses:
        '200':
          description: A page of media items.
          headers:
            X-WP-Total:
              $ref: '#/components/headers/XWPTotal'
            X-WP-TotalPages:
              $ref: '#/components/headers/XWPTotalPages'
            Link:
              $ref: '#/components/headers/LinkPagination'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MediaItem'
        '400':
          $ref: '#/components/responses/InvalidParam'
  /wp/v2/media/{id}:
    get:
      tags:
      - Media
      operationId: getMediaItem
      summary: Get a media item
      description: Returns a single media library attachment by its numeric ID.
      parameters:
      - $ref: '#/components/parameters/id'
      - $ref: '#/components/parameters/context'
      responses:
        '200':
          description: The requested media item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaItem'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  responses:
    NotFound:
      description: The requested object does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rest_no_route
            message: No route was found matching the URL and request method.
            data:
              status: 404
    InvalidParam:
      description: One or more query parameters failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rest_invalid_param
            message: 'Invalid parameter(s): per_page'
            data:
              status: 400
              params:
                per_page: per_page must be between 1 (inclusive) and 100 (inclusive)
  headers:
    LinkPagination:
      description: RFC 8288 Link header carrying `next` and `prev` pagination relations.
      schema:
        type: string
    XWPTotalPages:
      description: Total number of pages in the collection at the current per_page.
      schema:
        type: integer
    XWPTotal:
      description: Total number of items in the collection.
      schema:
        type: integer
  parameters:
    page:
      name: page
      in: query
      description: Current page of the collection. Defaults to 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    context:
      name: context
      in: query
      description: Scope under which the request is made; determines fields present in the response. Only `view` and `embed` are available anonymously.
      schema:
        type: string
        enum:
        - view
        - embed
        default: view
    orderby:
      name: orderby
      in: query
      description: Sort collection by object attribute.
      schema:
        type: string
    order:
      name: order
      in: query
      description: Order sort attribute ascending or descending.
      schema:
        type: string
        enum:
        - asc
        - desc
    perPage:
      name: per_page
      in: query
      description: 'Maximum number of items to be returned in the result set. Verified live: values outside 1-100 return HTTP 400 `rest_invalid_param`.'
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 10
    id:
      name: id
      in: path
      required: true
      description: Unique numeric identifier for the object.
      schema:
        type: integer
    search:
      name: search
      in: query
      description: Limit results to those matching a string.
      schema:
        type: string
  schemas:
    Error:
      type: object
      description: The WordPress REST error envelope, verified live. Note this is NOT RFC 9457 application/problem+json — it is served as application/json with a WordPress-specific shape.
      properties:
        code:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            status:
              type: integer
            params:
              type: object
              additionalProperties:
                type: string
            details:
              type: object
              additionalProperties: true
          required:
          - status
      required:
      - code
      - message
      - data
    MediaItem:
      type: object
      description: A media library attachment as returned anonymously in `view` context.
      properties:
        id:
          type: integer
        date:
          type: string
          format: date-time
        date_gmt:
          type: string
          format: date-time
        guid:
          $ref: '#/components/schemas/RenderedText'
        modified:
          type: string
          format: date-time
        modified_gmt:
          type: string
          format: date-time
        slug:
          type: string
        status:
          type: string
        type:
          type: string
          const: attachment
        link:
          type: string
          format: uri
        title:
          $ref: '#/components/schemas/RenderedText'
        author:
          type: integer
        comment_status:
          type: string
        ping_status:
          type: string
        template:
          type: string
        meta:
          type: object
          additionalProperties: true
        class_list:
          type: array
          items:
            type: string
        acf:
          oneOf:
          - type: object
            additionalProperties: true
          - type: array
        description:
          $ref: '#/components/schemas/RenderedText'
        caption:
          $ref: '#/components/schemas/RenderedText'
        alt_text:
          type: string
        media_type:
          type: string
        mime_type:
          type: string
        filename:
          type: string
        filesize:
          type: integer
        media_details:
          type: object
          additionalProperties: true
          description: Width, height, file path, image_meta and the generated `sizes` map.
        post:
          type:
          - integer
          - 'null'
          description: ID of the post this attachment is attached to, if any.
        source_url:
          type: string
          format: uri
          description: Direct URL to the original uploaded file.
        featured_media:
          type: integer
        _links:
          type: object
          additionalProperties: true
      required:
      - id
      - type
      - source_url
      - media_type
      - mime_type
    RenderedText:
      type: object
      description: WordPress rendered-text object.
      properties:
        rendered:
          type: string
      required:
      - rendered