Spyderbat Adhoc Search API

Ad-hoc Search interface for complex queries

Operations 11

POST /api/v1/org/{orgUID}/objects/ Get objects by ID #
POST /api/v1/org/{orgUID}/objects/poll_results Gets the pending results for a given query #
POST /api/v1/org/{orgUID}/objects/start_query Get objects by ID and graph link rules, returning a query ID for slow results #
POST /api/v1/org/{orgUID}/objects/stop_query Terminates a running query #
POST /api/v1/org/{orgUID}/objects/walk-graph Get objects by ID and graph link rules #
POST /api/v1/org/{orgUID}/search/convert/ Convert an adhoc search #
GET /api/v1/org/{orgUID}/search/schema/ Schema for an adhoc search #
POST /api/v1/org/{orgUID}/search/validate/ Validate an adhoc search #
POST /api/v1/org/{orgUID}/search/{jobID} Start an adhoc search #

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/spyderbat-adhocsearch-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

spyderbat-adhocsearch-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Spyderbat Adhoc Search API
  version: 1.0.0
  contact:
    name: API Support
    url: https://api.prod.spyderbat.com/openapi
    email: support@spyderbat.com
  license:
    name: MIT
    url: https://mit-license.org/
  termsOfService: https://www.spyderbat.com/terms-of-use/
  x-logo:
    url: /static/sb-logo.svg
    backgroundColor: '#161A21'
    altText: Spyderbat Logo
  description: 'Operations tagged AdhocSearch across 2 of this provider''s published API definitions: spyderbat-openapi-original.json, spyderbat-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.prod.spyderbat.com/
  description: Spyderbat API Server
security:
- apiToken: []
tags:
- name: AdhocSearch
  description: 'Ad-hoc Search interface for complex queries

    '
paths:
  /api/v1/org/{orgUID}/objects/:
    post:
      tags:
      - AdhocSearch
      summary: Get objects by ID
      description: "\nReturns objects by ID.\n\n * Requires action source_data:Query"
      operationId: Objects
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectsInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionObjectQueryResponse'
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/objects/poll_results:
    post:
      tags:
      - AdhocSearch
      summary: Gets the pending results for a given query
      description: "\nReturns the next set of objects from a query previously started with\nstart_query. If 'complete' is true in the response, then there are no more\nresults and calling poll_results with the same query ID will return \"not found\".\n\n * Requires action source_data:Query"
      operationId: ObjectsPollResults
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectsPollResultsInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionObjectPollResultsResponse'
        '403':
          description: permission denied
        '404':
          description: not found
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/objects/start_query:
    post:
      tags:
      - AdhocSearch
      summary: Get objects by ID and graph link rules, returning a query ID for slow results
      description: "\nReturns objects from the given IDs and links given with the graph rules.\nIf no rules are present, returns only the objects with the given IDs.\nIf results are slow to fetch, part of the results will be returned with a\nquery ID that can be used to fetch the remaining results from poll_results.\n\n * Requires action source_data:Query"
      operationId: ObjectsStartQuery
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectsStartQueryInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionObjectStartQueryResponse'
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/objects/stop_query:
    post:
      tags:
      - AdhocSearch
      summary: Terminates a running query
      description: "\nTells the objects service that the given query is no longer needed, and\ncan be stopped or cleaned up. Future calls to poll results with this\nquery ID will return \"not found\".\n\n * Requires action source_data:Query"
      operationId: ObjectsStopQuery
      parameters:
      - name: orgUID
        in: path
        description: Organization UID of the query
        required: true
        schema:
          type: string
          description: Organization UID of the query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectsStopQueryInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
        '404':
          description: not found
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/objects/walk-graph:
    post:
      tags:
      - AdhocSearch
      summary: Get objects by ID and graph link rules
      description: "\nReturns objects from the given IDs and links given with the graph rules.\n\n * Requires action source_data:Query"
      operationId: ObjectsWalkGraph
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectsWalkGraphInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/search/:
    post:
      tags:
      - AdhocSearch
      summary: Start an adhoc search
      description: "\nStarts an ahdoc search. Returns an ID that can be used to get results.\n\n * Requires action source_data:Query"
      operationId: Search
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      - name: limit
        in: query
        description: Maximum number of results to return
        schema:
          type: integer
          description: Maximum number of results to return
          format: int32
          maximum: 100000000
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/search/convert/:
    post:
      tags:
      - AdhocSearch
      summary: Convert an adhoc search
      description: "\nConverts an ahdoc search.\n\n * Requires action source_data:Query"
      operationId: Convert
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/search/parse-query/:
    post:
      tags:
      - AdhocSearch
      summary: Returns a structured representation of a query without running it
      description: "\nParses and validates a search query, then returns a structured representation of the parsed query.\nDoes not run the provided query.\n\n * Requires action source_data:Query"
      operationId: Parse Search Query
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      - name: limit
        in: query
        description: Maximum number of results to return
        schema:
          type: integer
          description: Maximum number of results to return
          format: int32
          maximum: 100000000
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Parse_Search_QueryInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/search/schema/:
    get:
      tags:
      - AdhocSearch
      summary: Schema for an adhoc search
      description: "\nSchema for an ahdoc search.\n\n * Requires action source_data:Query"
      operationId: Schema
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/search/validate/:
    post:
      tags:
      - AdhocSearch
      summary: Validate an adhoc search
      description: "\nValidates an ahdoc search.\n\n * Requires action source_data:Query"
      operationId: Validate
      parameters:
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      - name: limit
        in: query
        description: Maximum number of results to return
        schema:
          type: integer
          description: Maximum number of results to return
          format: int32
          maximum: 100000000
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
  /api/v1/org/{orgUID}/search/{jobID}:
    post:
      tags:
      - AdhocSearch
      summary: Start an adhoc search
      description: "\nReturns data from an adhoc search job.\n\n * Requires action source_data:Query"
      operationId: Results
      parameters:
      - name: jobID
        in: path
        description: Job ID to get results for
        required: true
        schema:
          type: string
          description: Job ID to get results for
          maxLength: 16128
      - name: orgUID
        in: path
        description: Organization UID to query
        required: true
        schema:
          type: string
          description: Organization UID to query
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResultsInput'
      responses:
        '200':
          description: OK
        '403':
          description: permission denied
    servers:
    - url: https://api.prod.spyderbat.com/
      description: Spyderbat API Server
components:
  schemas:
    ObjectsInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        ids:
          type: array
          items:
            type: string
          description: Array of IDs to resolve into records
          maxItems: 2000
          minItems: 1
      required:
      - ids
    ConvertInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        query:
          type: string
    ObjectsWalkGraphInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        ids:
          type: array
          items:
            type: string
          description: Array of IDs to resolve into records
          maxItems: 2000
          minItems: 1
        rules:
          type: array
          items:
            $ref: '#/components/schemas/SessionGraphLinkRule'
          description: The rules to use to walk the graph
          maxItems: 2000
      required:
      - ids
    ObjectsStartQueryInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        ids:
          type: array
          items:
            type: string
          description: Array of IDs to resolve into records
          maxItems: 2000
          minItems: 1
        rules:
          type: array
          items:
            $ref: '#/components/schemas/SessionGraphLinkRule'
          description: The rules to use to walk the graph
          maxItems: 2000
      required:
      - ids
    SessionObjectPollResultsResponse:
      type: object
      properties:
        complete:
          type: boolean
          description: Whether or not the data is complete, meaning there are no more results
        errors:
          type: array
          items: {}
          description: List of errors from object query
        results:
          type: array
          items: {}
          description: Objects matching the requested ids
    Parse_Search_QueryInput:
      type: object
      properties:
        case_sensitive:
          type: boolean
          description: Whether the query is case sensitive (default false)
        cluster_uid:
          type: string
          description: An optional pre-filter field that restricts results to one cluster
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        end_time:
          type: integer
          description: End time to query
          format: int32
        group_by:
          type: array
          items:
            $ref: '#/components/schemas/SessionGrouping'
          description: What fields to use for grouping, a non-empty array causes the output to be treated as a histogram
        latest_version:
          type:
          - boolean
          - 'null'
          description: Whether to pre-filter the results to only search with the latest version of each object (default true)
        muid:
          type: string
          description: An optional pre-filter field that restricts results to one machine
        order_by:
          description: Fields to order the results by
        output_fields:
          type: array
          items:
            type: string
          description: 'What fields to output from the query; default: ["id"]'
        query:
          type: string
          description: Query to execute
          maxLength: 65536
        schema:
          type: string
          description: Schema to query
          maxLength: 512
        start_time:
          type: integer
          description: Start time to query
          format: int32
      required:
      - end_time
      - query
      - schema
      - start_time
    SessionObjectStartQueryResponse:
      type: object
      properties:
        errors:
          type: array
          items: {}
          description: List of ids that are not in the database
        query_id:
          type: string
          description: Optional ID that can be passed to poll results to get the rest of the results
          maxLength: 128
        results:
          type: array
          items: {}
          description: Objects matching the requested ids
    ObjectsStopQueryInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        query_id:
          type: string
          description: Query ID returned by start query
          maxLength: 128
      required:
      - query_id
    ResultsInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        limit:
          type: integer
          description: Maximum number of results to return
          format: int32
          maximum: 10000
        token:
          type: string
          description: Where to start the query in the result set from
          maxLength: 128
    SearchInput:
      type: object
      properties:
        case_sensitive:
          type: boolean
          description: Whether the query is case sensitive (default false)
        cluster_uid:
          type: string
          description: An optional pre-filter field that restricts results to one cluster
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        end_time:
          type: integer
          description: End time to query
          format: int32
        group_by:
          type: array
          items:
            $ref: '#/components/schemas/SessionGrouping'
          description: What fields to use for grouping, a non-empty array causes the output to be treated as a histogram
        latest_version:
          type:
          - boolean
          - 'null'
          description: Whether to pre-filter the results to only search with the latest version of each object (default true)
        muid:
          type: string
          description: An optional pre-filter field that restricts results to one machine
        order_by:
          description: Fields to order the results by
        output_fields:
          type: array
          items:
            type: string
          description: 'What fields to output from the query; default: ["id"]'
        query:
          type: string
          description: Query to execute
          maxLength: 65536
        schema:
          type: string
          description: Schema to query
          maxLength: 512
        start_time:
          type: integer
          description: Start time to query
          format: int32
      required:
      - end_time
      - query
      - schema
      - start_time
    SessionGrouping:
      type: object
      properties:
        bins:
          type: array
          items:
            type: number
            format: double
          description: The bins to use for grouping this field, if it is numeric
        name:
          type: string
          description: The field name to group by
    ValidateInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        group_by:
          type: array
          items:
            $ref: '#/components/schemas/SessionGrouping'
          description: What fields to use for grouping, a non-empty array causes the output to be treated as a histogram
        is_for_realtime_search:
          type: boolean
        order_by:
          description: Fields to order the results by
        output_fields:
          type: array
          items:
            type: string
          description: 'What fields to output from the query; default: ["id"]'
        query:
          type: string
        schema:
          type: string
    ObjectsPollResultsInput:
      type: object
      properties:
        context_uid:
          type: string
          description: Context UID for this query, it's used to track the query as it flows through the system, and shouldn't be exposed to customers
        query_id:
          type: string
          description: Query ID returned by start query
          maxLength: 128
      required:
      - query_id
    SessionGraphLinkRule:
      type: object
      properties:
        field:
          type: string
          description: The field of the object which contains an ID or list of IDs
        max_depth:
          type:
          - integer
          - 'null'
          description: The maximum number of times to resolve this link
          format: int32
        object_schema:
          type: string
          description: The short schema of the objects with this link
      required:
      - field
      - object_schema
    SessionObjectQueryResponse:
      type: object
      properties:
        err_array:
          type: array
          items: {}
          description: List of errors from object query
        results:
          type: array
          items: {}
          description: Objects matching the requested ids
        retryable:
          type: array
          items:
            type: string
          description: List of IDs that were not found and can be retried
  securitySchemes:
    apiToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
x-refined-from:
- spyderbat-openapi-original.json
- spyderbat-openapi.json