Smithsonian Institution search API

Search across Smithsonian collections

OpenAPI Specification

smithsonian-search-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Smithsonian Open Access content search API
  description: 'REST API providing programmatic access to millions of digitized Smithsonian collection objects, metadata, images, and 3D models across 19 museums and research centers. All content is released under CC0 (public domain). Supports search, content retrieval, and term browsing. An API key from api.data.gov is required for all requests.

    '
  version: 1.0.0
  contact:
    name: Smithsonian Open Access Team
    email: openaccess@si.edu
  license:
    name: CC0 1.0 Universal
    url: https://creativecommons.org/publicdomain/zero/1.0/
  termsOfService: https://www.si.edu/termsofuse
servers:
- url: https://api.si.edu/openaccess
  description: Smithsonian Open Access API
security:
- ApiKeyAuth: []
tags:
- name: search
  description: Search across Smithsonian collections
paths:
  /api/v1.0/search:
    get:
      operationId: search
      summary: Search collection objects
      description: Fetches content based on a query across all Smithsonian collections.
      tags:
      - search
      parameters:
      - $ref: '#/components/parameters/Query'
      - $ref: '#/components/parameters/Start'
      - $ref: '#/components/parameters/Rows'
      - $ref: '#/components/parameters/Sort'
      - name: type
        in: query
        required: false
        description: The type of row object. Each type conforms to a published schema.
        schema:
          type: string
          enum:
          - edanmdm
          - ead_collection
          - ead_component
          - all
          default: edanmdm
      - name: row_group
        in: query
        required: false
        description: 'The designated set of row types to filter against. Objects refers to objects, artifacts, and specimens. Archives are all archives collection and item records.

          '
        schema:
          type: string
          enum:
          - objects
          - archives
          default: objects
      - $ref: '#/components/parameters/ApiKey'
      responses:
        '200':
          description: Search results returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v1.0/category/{cat}/search:
    get:
      operationId: searchByCategory
      summary: Search by category
      description: 'Fetches content based on a query filtered to one of the three top-level Smithsonian categories: art_design, history_culture, or science_technology.

        '
      tags:
      - search
      parameters:
      - name: cat
        in: path
        required: true
        description: The category to filter against.
        schema:
          type: string
          enum:
          - art_design
          - history_culture
          - science_technology
      - $ref: '#/components/parameters/Query'
      - $ref: '#/components/parameters/Start'
      - $ref: '#/components/parameters/Rows'
      - $ref: '#/components/parameters/Sort'
      - $ref: '#/components/parameters/ApiKey'
      responses:
        '200':
          description: Category search results returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /api/v1.0/terms/{category}:
    get:
      operationId: getTerms
      summary: Get terms by category
      description: Fetches an array of terms based on a term category for use in faceted search.
      tags:
      - search
      parameters:
      - name: category
        in: path
        required: true
        description: The term category to retrieve.
        schema:
          type: string
          enum:
          - culture
          - data_source
          - date
          - object_type
          - online_media_type
          - place
          - topic
          - unit_code
      - name: starts_with
        in: query
        required: false
        description: Optional string prefix to filter terms.
        schema:
          type: string
      - $ref: '#/components/parameters/ApiKey'
      responses:
        '200':
          description: Terms returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermsResponse'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  parameters:
    ApiKey:
      name: api_key
      in: query
      required: true
      description: API key received from https://api.data.gov/signup/
      schema:
        type: string
    Sort:
      name: sort
      in: query
      required: false
      description: 'Sort order of the result set. Default is relevancy. newest sorts by timestamp descending. updated sorts by lastTimeUpdated descending.

        '
      schema:
        type: string
        enum:
        - id
        - newest
        - updated
        - random
        default: relevancy
    Query:
      name: q
      in: query
      required: true
      description: 'The query string. Accepts boolean operators (AND, OR) and fielded searches (e.g. topic:Gastropoda). See /terms endpoints for valid field types.

        '
      schema:
        type: string
    Start:
      name: start
      in: query
      required: false
      description: The starting row offset for pagination.
      schema:
        type: integer
        minimum: 0
        default: 0
    Rows:
      name: rows
      in: query
      required: false
      description: Number of rows to return (0–1000).
      schema:
        type: integer
        minimum: 0
        maximum: 1000
        default: 10
  schemas:
    SearchResponse:
      type: object
      properties:
        status:
          type: integer
          description: HTTP status code.
          example: 200
        responseCode:
          type: integer
          description: API response code (1 = success, 0 = error).
          example: 1
        response:
          type: object
          properties:
            rows:
              type: array
              description: Array of matching collection objects.
              items:
                $ref: '#/components/schemas/CollectionObject'
            rowCount:
              type: integer
              description: Total number of matching records.
              example: 4700000
            message:
              type: string
              description: Human-readable response message.
              example: content found
    TermsResponse:
      type: object
      properties:
        status:
          type: integer
          example: 200
        responseCode:
          type: integer
          example: 1
        response:
          type: object
          properties:
            terms:
              type: array
              description: Array of term strings for the requested category.
              items:
                type: string
    ErrorResponse:
      type: object
      properties:
        status:
          type: integer
          description: HTTP status code.
          example: 404
        responseCode:
          type: integer
          description: API response code (0 = error).
          example: 0
        response:
          type: object
          properties:
            error:
              type: string
              description: Error message describing the issue.
              example: 'not found: the resource you were acting on could not be found'
        timestamp:
          type: string
          description: Timestamp of the error.
          example: Fri Jun 07 09:23:09 EDT 2019
    CollectionObject:
      type: object
      description: A digitized Smithsonian collection object.
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          example: edanmdm-nmaahc_2012.36.4ab
        title:
          type: string
          description: Title of the collection object.
          example: Drumsticks used by Art Blakey
        unitCode:
          type: string
          description: Code identifying the Smithsonian museum or research unit.
          example: NMAAHC
        linkedId:
          type: string
          description: Linked identifier if applicable.
        type:
          type: string
          description: Object type (e.g. edanmdm, ead_collection).
          example: edanmdm
        url:
          type: string
          description: Canonical URL identifier for the object.
          example: edanmdm:nmaahc_2012.36.4ab
        content:
          type: object
          description: Type-specific content metadata. Structure varies by object type.
          additionalProperties: true
        hash:
          type: string
          description: Content hash of the record.
        docSignature:
          type: string
          description: Document signature for integrity checking.
        timestamp:
          type: integer
          format: int64
          description: Unix timestamp when the record was created.
        lastTimeUpdated:
          type: integer
          format: int64
          description: Unix timestamp when the record was last updated.
        version:
          type: string
          description: Version identifier for the record.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: api_key
      description: API key from https://api.data.gov/signup/
externalDocs:
  description: Open Access API Documentation
  url: https://edan.si.edu/openaccess/apidocs/