TechCrunch Posts API

Article and post content

OpenAPI Specification

techcrunch-posts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: TechCrunch WordPress REST Authors Posts API
  description: TechCrunch is built on WordPress and exposes the standard WordPress REST API, providing JSON endpoints for accessing posts, categories, tags, authors, pages, and other content types. The API is available at the /wp-json/wp/v2/ base path and supports filtering, pagination, searching, and sorting across all TechCrunch content. TechCrunch uses a headless WordPress architecture with a React frontend, making the REST API the primary data layer for content delivery.
  version: v2
  contact:
    name: TechCrunch
    url: https://techcrunch.com/contact-us/
  license:
    name: Terms of Service
    url: https://techcrunch.com/terms-of-service/
servers:
- url: https://techcrunch.com/wp-json/wp/v2
  description: TechCrunch WordPress REST API
tags:
- name: Posts
  description: Article and post content
paths:
  /posts:
    get:
      operationId: listPosts
      summary: List Posts
      description: Retrieve a paginated list of published posts from TechCrunch. Supports filtering by author, category, tag, date range, and full-text search.
      tags:
      - Posts
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        schema:
          type: integer
          default: 10
          maximum: 100
        description: Maximum number of items to be returned in result set.
      - name: search
        in: query
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: after
        in: query
        schema:
          type: string
          format: date-time
        description: Limit response to posts published after a given ISO8601 date.
      - name: before
        in: query
        schema:
          type: string
          format: date-time
        description: Limit response to posts published before a given ISO8601 date.
      - name: author
        in: query
        schema:
          type: array
          items:
            type: integer
        description: Limit result set to posts assigned to specific authors.
      - name: categories
        in: query
        schema:
          type: array
          items:
            type: integer
        description: Limit result set to posts assigned to specific category IDs.
      - name: tags
        in: query
        schema:
          type: array
          items:
            type: integer
        description: Limit result set to posts assigned to specific tag IDs.
      - name: orderby
        in: query
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
        description: Sort collection by object attribute.
      - name: order
        in: query
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Order sort attribute ascending or descending.
      - name: _fields
        in: query
        schema:
          type: string
        description: Limit response to specific fields. Separate multiple fields with commas.
      - name: _embed
        in: query
        schema:
          type: boolean
        description: Embed linked resources in the response.
      responses:
        '200':
          description: List of posts
          headers:
            X-WP-Total:
              schema:
                type: integer
              description: Total number of posts.
            X-WP-TotalPages:
              schema:
                type: integer
              description: Total number of pages.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Post'
        '400':
          $ref: '#/components/responses/BadRequest'
  /posts/{id}:
    get:
      operationId: getPost
      summary: Get Post
      description: Retrieve a specific published post by its unique ID.
      tags:
      - Posts
      parameters:
      - $ref: '#/components/parameters/id'
      - name: _fields
        in: query
        schema:
          type: string
        description: Limit response to specific fields.
      - name: _embed
        in: query
        schema:
          type: boolean
        description: Embed linked resources.
      responses:
        '200':
          description: Post object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Post'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    WPError:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            status:
              type: integer
    RenderedValueWithProtected:
      type: object
      properties:
        rendered:
          type: string
        protected:
          type: boolean
    RenderedValue:
      type: object
      properties:
        rendered:
          type: string
    Post:
      type: object
      properties:
        id:
          type: integer
        date:
          type: string
          format: date-time
          description: The date the post was published in the site's timezone.
        date_gmt:
          type: string
          format: date-time
          description: The date the post was published in GMT.
        guid:
          $ref: '#/components/schemas/RenderedValue'
        modified:
          type: string
          format: date-time
        modified_gmt:
          type: string
          format: date-time
        slug:
          type: string
        status:
          type: string
          enum:
          - publish
          - future
          - draft
          - pending
          - private
        type:
          type: string
          example: post
        link:
          type: string
          format: uri
        title:
          $ref: '#/components/schemas/RenderedValue'
        content:
          $ref: '#/components/schemas/RenderedValueWithProtected'
        excerpt:
          $ref: '#/components/schemas/RenderedValueWithProtected'
        author:
          type: integer
          description: The ID for the author of the post.
        featured_media:
          type: integer
          description: The ID of the featured media for the post.
        comment_status:
          type: string
          enum:
          - open
          - closed
        ping_status:
          type: string
          enum:
          - open
          - closed
        sticky:
          type: boolean
        template:
          type: string
        format:
          type: string
          enum:
          - standard
          - aside
          - chat
          - gallery
          - link
          - image
          - quote
          - status
          - video
          - audio
        categories:
          type: array
          items:
            type: integer
        tags:
          type: array
          items:
            type: integer
        yoast_head_json:
          type: object
          description: Yoast SEO metadata
          additionalProperties: true
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WPError'
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/WPError'
  parameters:
    id:
      name: id
      in: path
      required: true
      schema:
        type: integer
      description: Unique identifier for the resource.