Bored API Riddles API

Random or keyed riddles with difficulty filter (v2 only).

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

bored-riddles-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Bored Activities Riddles API
  version: 2.0.0
  summary: A Free and Simple API to Help You Find Something Better to Do
  description: The Bored API is a free, no-authentication public API that returns suggestions for things to do when you are bored. The canonical implementation is the open-source MEVN (MongoDB / Express / Vue / Node) project maintained by Drew Thoennes at github.com/drewthoennes/Bored-API. The historically hosted instance at https://www.boredapi.com/ has been intermittently or fully unreachable since 2024 (originally hosted on Heroku); community mirrors such as https://bored-api.appbrewery.com continue to serve the dataset. This specification documents both the v1 (legacy, activities-only) and v2 (activities + facts + riddles + websites + suggestions) surfaces of the canonical Drew Thoennes implementation so the API contract is preserved for self-hosting and historical reference.
  contact:
    name: Drew Thoennes
    url: https://github.com/drewthoennes/Bored-API
  license:
    name: MIT
    url: https://github.com/drewthoennes/Bored-API/blob/master/license
  x-status: deprecated-hosted-instance
  x-status-notes: The official hosted instance at https://www.boredapi.com/ is no longer reliably reachable. The reference implementation remains open source and can be self-hosted. The App Brewery community fork (https://bored-api.appbrewery.com) provides an actively maintained hosted mirror with a slightly different path scheme.
servers:
- url: https://www.boredapi.com
  description: Original hosted instance (historically; intermittent / dead as of 2024)
- url: http://localhost:8080
  description: Self-hosted local instance (npm install && npm start)
tags:
- name: Riddles
  description: Random or keyed riddles with difficulty filter (v2 only).
paths:
  /api/v2/riddles:
    get:
      tags:
      - Riddles
      summary: Get a Random Riddle
      description: Returns a single random riddle, optionally filtered by difficulty (easy, normal, hard).
      operationId: getRandomRiddle
      parameters:
      - name: difficulty
        in: query
        description: Filter riddles by difficulty.
        required: false
        schema:
          type: string
          enum:
          - easy
          - normal
          - hard
      responses:
        '200':
          description: A random riddle.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiddleEnvelope'
        '400':
          $ref: '#/components/responses/Error'
  /api/v2/riddles/{key}:
    get:
      tags:
      - Riddles
      summary: Get a Riddle by Key
      description: Returns the riddle matching the supplied key.
      operationId: getRiddleByKey
      parameters:
      - $ref: '#/components/parameters/KeyPathParam'
      - name: difficulty
        in: query
        required: false
        schema:
          type: string
          enum:
          - easy
          - normal
          - hard
      responses:
        '200':
          description: The riddle matching the supplied key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiddleEnvelope'
        '400':
          $ref: '#/components/responses/Error'
components:
  schemas:
    Riddle:
      type: object
      properties:
        question:
          type: string
          example: What has keys but can't open locks?
        answer:
          type: string
          example: A piano.
        difficulty:
          type: string
          enum:
          - easy
          - normal
          - hard
          default: normal
          example: easy
        source:
          type: string
          format: uri
          description: Optional URL backing the riddle.
          example: ''
        key:
          type: string
          example: '7654321'
      required:
      - question
      - answer
      - difficulty
      - key
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          example: Failed to query due to error in arguments
      required:
      - error
    RiddleEnvelope:
      type: object
      properties:
        riddle:
          $ref: '#/components/schemas/Riddle'
      required:
      - riddle
  responses:
    Error:
      description: Bad request or query argument error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    KeyPathParam:
      name: key
      in: path
      required: true
      description: Unique key identifying the resource.
      schema:
        type: string