Box

Box Search API

The Box Search API enables full-text search across content stored in Box, supporting keyword queries, metadata-based filtering, content type restrictions, date range filters, and other advanced search parameters.

OpenAPI Specification

search-openapi-original.yml Raw ↑
openapi: 3.1.0
info:
  title: Box Search API
  description: Needs a description.
paths:
  /search:
    get:
      operationId: get_search
      summary: Box Search for content
      tags:
        - Search
      x-box-tag: search
      x-box-enable-explorer: true
      description: |-
        Searches for files, folders, web links, and shared files across the
        users content or across the entire enterprise.
      parameters:
        - name: query
          description: >-
            The string to search for. This query is matched against item names,

            descriptions, text content of files, and various other fields of

            the different item types.


            This parameter supports a variety of operators to further refine

            the results returns.


            * `""` - by wrapping a query in double quotes only exact matches are
              returned by the API. Exact searches do not return search matches
              based on specific character sequences. Instead, they return
              matches based on phrases, that is, word sequences. For example:
              A search for `"Blue-Box"` may return search results including
              the sequence `"blue.box"`, `"Blue Box"`, and `"Blue-Box"`;
              any item containing the words `Blue` and `Box` consecutively, in
              the order specified.
            * `AND` - returns items that contain both the search terms. For
              example, a search for `marketing AND BoxWorks` returns items
              that have both `marketing` and `BoxWorks` within its text in any order.
              It does not return a result that only has `BoxWorks` in its text.
            * `OR` - returns items that contain either of the search terms. For
              example, a search for `marketing OR BoxWorks` returns a result that
              has either `marketing` or `BoxWorks` within its text. Using this
              operator is not necessary as we implicitly interpret multi-word
              queries as `OR` unless another supported boolean term is used.
            * `NOT` - returns items that do not contain the search term
            provided.
              For example, a search for `marketing AND NOT BoxWorks` returns a result
              that has only `marketing` within its text. Results containing
              `BoxWorks` are omitted.

            We do not support lower case (that is,

            `and`, `or`, and `not`) or mixed case (that is, `And`, `Or`, and
            `Not`)

            operators.


            This field is required unless the `mdfilters` parameter is defined.
          in: query
          required: false
          example: sales
          schema:
            type: string
        - name: scope
          description: |-
            Limits the search results to either the files that the user has
            access to, or to files available to the entire enterprise.

            The scope defaults to `user_content`, which limits the search
            results to content that is available to the currently authenticated
            user.

            The `enterprise_content` can be requested by an admin through our
            support channels. Once this scope has been enabled for a user, it
            will allow that use to query for content across the entire
            enterprise and not only the content that they have access to.
          in: query
          required: false
          schema:
            type: string
            enum:
              - user_content
              - enterprise_content
            default: user_content
          example: user_content
        - name: file_extensions
          description: >-
            Limits the search results to any files that match any of the
            provided

            file extensions. This list is a comma-separated list of file
            extensions

            without the dots.
          example:
            - pdf
            - png
            - gif
          in: query
          required: false
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: created_at_range
          description: |-
            Limits the search results to any items created within
            a given date range.

            Date ranges are defined as comma separated RFC3339
            timestamps.

            If the the start date is omitted (`,2014-05-17T13:35:01-07:00`)
            anything created before the end date will be returned.

            If the end date is omitted (`2014-05-15T13:35:01-07:00,`) the
            current date will be used as the end date instead.
          example:
            - '2014-05-15T13:35:01-07:00'
            - '2014-05-17T13:35:01-07:00'
          in: query
          required: false
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: updated_at_range
          description: |-
            Limits the search results to any items updated within
            a given date range.

            Date ranges are defined as comma separated RFC3339
            timestamps.

            If the start date is omitted (`,2014-05-17T13:35:01-07:00`)
            anything updated before the end date will be returned.

            If the end date is omitted (`2014-05-15T13:35:01-07:00,`) the
            current date will be used as the end date instead.
          example:
            - '2014-05-15T13:35:01-07:00'
            - '2014-05-17T13:35:01-07:00'
          in: query
          required: false
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: size_range
          description: |-
            Limits the search results to any items with a size within
            a given file size range. This applied to files and folders.

            Size ranges are defined as comma separated list of a lower
            and upper byte size limit (inclusive).

            The upper and lower bound can be omitted to create open ranges.
          example:
            - 1000000
            - 5000000
          in: query
          required: false
          explode: false
          schema:
            type: array
            items:
              type: integer
        - name: owner_user_ids
          description: >-
            Limits the search results to any items that are owned

            by the given list of owners, defined as a list of comma separated

            user IDs.


            The items still need to be owned or shared with

            the currently authenticated user for them to show up in the search

            results. If the user does not have access to any files owned by any
            of

            the users an empty result set will be returned.


            To search across an entire enterprise, we recommend using the

            `enterprise_content` scope parameter which can be requested with our

            support team.
          example:
            - '123422'
            - '23532'
            - '3241212'
          in: query
          required: false
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: recent_updater_user_ids
          description: >-
            Limits the search results to any items that have been updated

            by the given list of users, defined as a list of comma separated

            user IDs.


            The items still need to be owned or shared with

            the currently authenticated user for them to show up in the search

            results. If the user does not have access to any files owned by any
            of

            the users an empty result set will be returned.


            This feature only searches back to the last 10 versions of an item.
          example:
            - '123422'
            - '23532'
            - '3241212'
          in: query
          required: false
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: ancestor_folder_ids
          description: >-
            Limits the search results to items within the given

            list of folders, defined as a comma separated lists

            of folder IDs.


            Search results will also include items within any subfolders

            of those ancestor folders.


            The folders still need to be owned or shared with

            the currently authenticated user. If the folder is not accessible by
            this

            user, or it does not exist, a `HTTP 404` error code will be returned

            instead.


            To search across an entire enterprise, we recommend using the

            `enterprise_content` scope parameter which can be requested with our

            support team.
          explode: false
          example:
            - '4535234'
            - '234123235'
            - '2654345'
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: content_types
          description: >-
            Limits the search results to any items that match the search query

            for a specific part of the file, for example the file description.


            Content types are defined as a comma separated lists

            of Box recognized content types. The allowed content types are as
            follows.


            * `name` - The name of the item, as defined by its `name` field.

            * `description` - The description of the item, as defined by its
              `description` field.
            * `file_content` - The actual content of the file.

            * `comments` - The content of any of the comments on a file or
               folder.
            * `tags` - Any tags that are applied to an item, as defined by its
               `tags` field.
          in: query
          example:
            - name
            - description
          explode: false
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - name
                - description
                - file_content
                - comments
                - tag
        - name: type
          description: |-
            Limits the search results to any items of this type. This
            parameter only takes one value. By default the API returns
            items that match any of these types.

            * `file` - Limits the search results to files
            * `folder` - Limits the search results to folders
            * `web_link` - Limits the search results to web links, also known
               as bookmarks
          example: file
          in: query
          required: false
          schema:
            type: string
            enum:
              - file
              - folder
              - web_link
        - name: trash_content
          description: |-
            Determines if the search should look in the trash for items.

            By default, this API only returns search results for items
            not currently in the trash (`non_trashed_only`).

            * `trashed_only` - Only searches for items currently in the trash
            * `non_trashed_only` - Only searches for items currently not in
              the trash
            * `all_items` - Searches for both trashed and non-trashed items.
          in: query
          required: false
          example: non_trashed_only
          schema:
            type: string
            default: non_trashed_only
            enum:
              - non_trashed_only
              - trashed_only
              - all_items
        - name: mdfilters
          description: >-
            Limits the search results to any items for which the metadata
            matches

            the provided filter.


            This parameter contains a list of 1 metadata template to filter

            the search results by. This list can currently only

            contain one entry, though this might be expanded in the future.


            This parameter is required unless the `query` parameter is provided.
          in: query
          example:
            - scope: enterprise
              templateKey: contract
              filters:
                category: online
          x-example:
            - scope: enterprise
              templateKey: contract
              filters:
                category: online
                contractValue: 1000000
          required: false
          schema:
            type: array
            minItems: 1
            maxItems: 1
            items:
              $ref: '#/components/schemas/MetadataFilter'
            description: |-
              A list of metadata templates to filter the search results by.

              Required unless `query` parameter is defined.
        - name: sort
          description: >-
            Defines the order in which search results are returned. This API

            defaults to returning items by relevance unless this parameter is

            explicitly specified.


            * `relevance` (default) returns the results sorted by relevance to
            the

            query search term. The relevance is based on the occurrence of the
            search

            term in the items name, description, content, and additional
            properties.

            * `modified_at` returns the results ordered in descending order by
            date

            at which the item was last modified.
          in: query
          required: false
          schema:
            type: string
            default: relevance
            enum:
              - modified_at
              - relevance
          example: modified_at
        - name: direction
          description: >-
            Defines the direction in which search results are ordered. This API

            defaults to returning items in descending (`DESC`) order unless this

            parameter is explicitly specified.


            When results are sorted by `relevance` the ordering is locked to
            returning

            items in descending order of relevance, and this parameter is
            ignored.
          in: query
          required: false
          schema:
            type: string
            default: DESC
            enum:
              - DESC
              - ASC
          example: ASC
        - name: limit
          description: |-
            Defines the maximum number of items to return as part of a page of
            results.
          in: query
          required: false
          example: 100
          schema:
            type: integer
            format: int64
            default: 30
            maximum: 200
        - name: include_recent_shared_links
          description: |-
            Defines whether the search results should include any items
            that the user recently accessed through a shared link.

            When this parameter has been set to true,
            the format of the response of this API changes to return
            a list of [Search Results with
            Shared Links](r://search_results_with_shared_links)
          in: query
          required: false
          example: true
          schema:
            type: boolean
            default: false
        - name: fields
          description: |-
            A comma-separated list of attributes to include in the
            response. This can be used to request fields that are
            not normally returned in a standard response.

            Be aware that specifying this parameter will have the
            effect that none of the standard fields are returned in
            the response unless explicitly specified, instead only
            fields for the mini representation are returned, additional
            to the fields requested.
          in: query
          example:
            - id
            - type
            - name
          required: false
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: offset
          description: |-
            The offset of the item at which to begin the response.

            Queries with offset parameter value
            exceeding 10000 will be rejected
            with a 400 response.
          in: query
          required: false
          example: 1000
          schema:
            type: integer
            format: int64
            default: 0
        - name: deleted_user_ids
          description: |-
            Limits the search results to items that were deleted by the given
            list of users, defined as a list of comma separated user IDs.

            The `trash_content` parameter needs to be set to `trashed_only`.

            If searching in trash is not performed, an empty result set
            is returned. The items need to be owned or shared with
            the currently authenticated user for them to show up in the search
            results.

            If the user does not have access to any files owned by
            any of the users, an empty result set is returned.

            Data available from 2023-02-01 onwards.
          example:
            - '123422'
            - '23532'
            - '3241212'
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
        - name: deleted_at_range
          description: |-
            Limits the search results to any items deleted within a given
            date range.

            Date ranges are defined as comma separated RFC3339 timestamps.

            If the the start date is omitted (`2014-05-17T13:35:01-07:00`),
            anything deleted before the end date will be returned.

            If the end date is omitted (`2014-05-15T13:35:01-07:00`),
            the current date will be used as the end date instead.

            The `trash_content` parameter needs to be set to `trashed_only`.

            If searching in trash is not performed, then an empty result
            is returned.

            Data available from 2023-02-01 onwards.
          example:
            - '2014-05-15T13:35:01-07:00'
            - '2014-05-17T13:35:01-07:00'
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: |-
            Returns a collection of search results. If there are no matching
            search results, the `entries` array will be empty.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SearchResults'
                  - $ref: '#/components/schemas/SearchResultsWithSharedLinks'
        '400':
          description: >-
            Returns an error when the request was not valid. This can have
            multiple

            reasons and the `context_info` object will provide you with more
            details.


            * `missing_parameter` - Please provide at least the `query` or
            `mdfilters`
              query parameter in a search.
            * `invalid_parameter` - Any of the fields might not be in the right
              format. This could for example mean that one of the RFC3339 dates is
              incorrect, or a string is provided where an integer is expected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '403':
          description: |-
            Returns an error when the user does not have the permission to make
            this API call.

            * The developer provided a `scope` of `enterprise_content` but did
              not request this scope to be enabled for the user through our
              support channels.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        '404':
          description: |-
            Returns an error when the user does not have access to an item
            mentioned in the request.

            * The developer provided a folder ID in `ancestor_folder_ids`
              that either does not exist or the user does not have access to.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
        default:
          description: An unexpected client error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClientError'
components:
  schemas:
    ClientError:
      title: Client error
      type: object
      x-box-resource-id: client_error
      description: A generic error
      properties:
        type:
          description: error
          example: error
          type: string
          enum:
            - error
          nullable: false
        status:
          description: The HTTP status of the response.
          example: 400
          type: integer
          format: int32
          nullable: false
        code:
          description: A Box-specific error code
          example: item_name_invalid
          type: string
          enum:
            - created
            - accepted
            - no_content
            - redirect
            - not_modified
            - bad_request
            - unauthorized
            - forbidden
            - not_found
            - method_not_allowed
            - conflict
            - precondition_failed
            - too_many_requests
            - internal_server_error
            - unavailable
            - item_name_invalid
            - insufficient_scope
        message:
          description: A short message describing the error.
          example: Method Not Allowed
          type: string
          nullable: false
        context_info:
          description: |-
            A free-form object that contains additional context
            about the error. The possible fields are defined on
            a per-endpoint basis. `message` is only one example.
          type: object
          nullable: true
          properties:
            message:
              type: string
              description: More details on the error.
              example: Something went wrong.
        help_url:
          description: A URL that links to more information about why this error occurred.
          example: >-
            https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/
          type: string
          nullable: false
        request_id:
          description: |-
            A unique identifier for this response, which can be used
            when contacting Box support.
          type: string
          example: abcdef123456
          nullable: false
tags:
  - name: Search