typesearch-ai Indexes API

The Indexes API from typesearch-ai — 3 operation(s) for indexes.

Operations 7

POST /v1/indexes Create a custom index #
GET /v1/indexes List your custom indexes #
GET /v1/indexes/{id} Get a custom index #
DELETE /v1/indexes/{id} Delete a custom index and its URLs #
POST /v1/indexes/{id}/urls Add URLs, a sitemap or a feed #
GET /v1/indexes/{id}/urls List the URLs of a custom index #
DELETE /v1/indexes/{id}/urls Remove URLs or sources #

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/typesearch-ai:typesearch-ai-indexes-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

typesearch-ai-indexes-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Typesearch Ai Indexes API
  version: 1.0.0
  description: 'Operations tagged Indexes across 3 of this provider''s published API definitions: api.typesearch.ai.v1.openapi.json, typesearch-ai-api-v1-openapi.json, typesearch-ai-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.typesearch.ai
security:
- bearer: []
- apiKey: []
tags:
- name: Indexes
paths:
  /v1/indexes:
    post:
      summary: Create a custom index
      description: 'A custom index is your own list of URLs, searched with the same relevance model as the news index: pass its id as `index` to POST /v1/search. Pay as you go allows 3 indexes and 100 URLs; the Monthly credit plan 50 and 10,000; Enterprise, unlimited.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IndexRequest'
      responses:
        '201':
          description: The index that was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Index'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: '`index_limit_reached`: your plan allows no more indexes.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: postV1Indexes
      x-operation-id-source: derived
    get:
      summary: List your custom indexes
      responses:
        '200':
          description: Your indexes and your plan’s limits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IndexList'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: getV1Indexes
      x-operation-id-source: derived
    servers:
    - url: https://api.typesearch.ai
  /v1/indexes/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: The index id, idx_…
      schema:
        type: string
    get:
      summary: Get a custom index
      responses:
        '200':
          description: The index.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Index'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: getV1IndexesById
      x-operation-id-source: derived
    delete:
      summary: Delete a custom index and its URLs
      responses:
        '200':
          description: '`{ id, deleted: true }`'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: deleteV1IndexesById
      x-operation-id-source: derived
    servers:
    - url: https://api.typesearch.ai
  /v1/indexes/{id}/urls:
    parameters:
    - name: id
      in: path
      required: true
      description: The index id, idx_…
      schema:
        type: string
    post:
      summary: Add URLs, a sitemap or a feed
      description: 'Up to 1,000 URLs per request, and sitemaps or feeds (read every hour: new URLs are added, updated ones re-read). New URLs are read within a minute and every URL is re-read daily, honoring robots.txt and publisher exclusions. URLs beyond your plan’s limit are counted in `over_limit`, with a warning; if none fits, 409 `url_limit_reached`. Billed daily: US$2.00 per 1,000 URLs per month.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IndexUrlsRequest'
      responses:
        '202':
          description: What was added.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IndexUrlsResponse'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '409':
          description: '`url_limit_reached`: your plan’s URL limit is full.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: postV1IndexesByIdUrls
      x-operation-id-source: derived
    get:
      summary: List the URLs of a custom index
      parameters:
      - name: status
        in: query
        required: false
        schema:
          type: string
          enum:
          - pending
          - ready
          - failed
          - blocked
      - name: cursor
        in: query
        required: false
        description: The next_cursor of the previous page.
        schema:
          type: string
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 200
          default: 50
      responses:
        '200':
          description: A page of URLs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IndexUrlList'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: getV1IndexesByIdUrls
      x-operation-id-source: derived
    delete:
      summary: Remove URLs or sources
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IndexUrlsDeleteRequest'
      responses:
        '200':
          description: '`{ removed, removed_sources }`'
        '402':
          description: 'Payment required: `insufficient_credits` (no credit left), `spend_limit_reached` (the key hit its monthly limit) or `budget_too_small`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        default:
          description: 'Error (RFC 9457). In English unless the request sends `Accept-Language: es`.'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Indexes
      operationId: deleteV1IndexesByIdUrls
      x-operation-id-source: derived
    servers:
    - url: https://api.typesearch.ai
components:
  schemas:
    IndexUrlList:
      type: object
      properties:
        object:
          type: string
          const: list
        urls:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
              status:
                type: string
                enum:
                - pending
                - ready
                - failed
                - blocked
                description: 'blocked: robots.txt, a publisher request or a bot check does not allow it; tried again in a week.'
              title:
                type:
                - string
                - 'null'
              description:
                type:
                - string
                - 'null'
              data:
                anyOf:
                - type: object
                  propertyNames:
                    type: string
                  additionalProperties:
                    type:
                    - string
                    - number
                - type: 'null'
                description: 'Structured data the page declares: price, currency, availability, brand, sku…'
              published_at:
                type:
                - string
                - 'null'
              read_at:
                type:
                - string
                - 'null'
              changed_at:
                type:
                - string
                - 'null'
              next_read_at:
                type:
                - string
                - 'null'
              error:
                type:
                - string
                - 'null'
            required:
            - url
            - status
            - title
            - description
            - data
            - published_at
            - read_at
            - changed_at
            - next_read_at
            - error
            additionalProperties: false
        next_cursor:
          type:
          - string
          - 'null'
      required:
      - object
      - urls
      - next_cursor
      additionalProperties: false
    Index:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
          const: index
        name:
          type: string
        status:
          type: string
          enum:
          - active
          - paused
          description: 'paused: no credit left, so it is not re-read (nor billed) until there is.'
        urls:
          type: object
          properties:
            total:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            ready:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            pending:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            failed:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            blocked:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
          - total
          - ready
          - pending
          - failed
          - blocked
          additionalProperties: false
        sources:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
              type:
                type: string
                enum:
                - sitemap
                - feed
              status:
                type: string
                enum:
                - pending
                - ok
                - failed
              read_at:
                type:
                - string
                - 'null'
              urls:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
                description: URLs it listed the last time it was read.
              error:
                type:
                - string
                - 'null'
            required:
            - url
            - type
            - status
            - read_at
            - urls
            - error
            additionalProperties: false
          description: 'Sitemaps and feeds: read every hour; new URLs are added (up to your limit) and updated ones re-read.'
        cost_per_day_usd:
          type: number
          description: What its URLs cost per day right now (US$2.00 per 1,000 URLs per month, a thirtieth per day).
        last_read_at:
          type:
          - string
          - 'null'
        created_at:
          type: string
        updated_at:
          type: string
      required:
      - id
      - object
      - name
      - status
      - urls
      - sources
      - cost_per_day_usd
      - last_read_at
      - created_at
      - updated_at
      additionalProperties: false
    Problem:
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        detail:
          type: string
        code:
          type: string
        request_id:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
            required:
            - path
            - message
            additionalProperties: false
      required:
      - type
      - title
      - status
      - detail
      - code
      - request_id
      additionalProperties: false
    IndexUrlsRequest:
      type: object
      properties:
        urls:
          minItems: 1
          maxItems: 1000
          type: array
          items:
            type: string
            maxLength: 2100
        sitemap:
          type: string
          minLength: 1
          maxLength: 2000
        feed:
          type: string
          minLength: 1
          maxLength: 2000
      additionalProperties: false
    IndexUrlsResponse:
      type: object
      properties:
        index:
          type: string
        added:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        existing:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        invalid:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
              reason:
                type: string
            required:
            - url
            - reason
            additionalProperties: false
        over_limit:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
          description: 'URLs that did not fit in your plan’s limit (see warnings: the next plan allows more).'
        total:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        sources:
          type: array
          items:
            type: object
            properties:
              url:
                type: string
              type:
                type: string
                enum:
                - sitemap
                - feed
              status:
                type: string
                enum:
                - pending
                - ok
                - failed
              read_at:
                type:
                - string
                - 'null'
              urls:
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
                description: URLs it listed the last time it was read.
              error:
                type:
                - string
                - 'null'
            required:
            - url
            - type
            - status
            - read_at
            - urls
            - error
            additionalProperties: false
        limits:
          type: object
          properties:
            urls:
              anyOf:
              - type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              - type: 'null'
              description: URLs you can have across all your custom indexes; null is unlimited. Pay as you go 100, Monthly credit plan 10,000, Enterprise unlimited.
            urls_used:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            indexes:
              anyOf:
              - type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              - type: 'null'
            indexes_used:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
          - urls
          - urls_used
          - indexes
          - indexes_used
          additionalProperties: false
          description: Your plan’s custom-index limits.
        warnings:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
            required:
            - code
            - message
            additionalProperties: false
      required:
      - index
      - added
      - existing
      - invalid
      - over_limit
      - total
      - sources
      - limits
      - warnings
      additionalProperties: false
    IndexUrlsDeleteRequest:
      type: object
      properties:
        urls:
          minItems: 1
          maxItems: 1000
          type: array
          items:
            type: string
            maxLength: 2100
        sources:
          minItems: 1
          maxItems: 20
          type: array
          items:
            type: string
            maxLength: 2100
      additionalProperties: false
    IndexList:
      type: object
      properties:
        object:
          type: string
          const: list
        indexes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              object:
                type: string
                const: index
              name:
                type: string
              status:
                type: string
                enum:
                - active
                - paused
                description: 'paused: no credit left, so it is not re-read (nor billed) until there is.'
              urls:
                type: object
                properties:
                  total:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  ready:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  pending:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  failed:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  blocked:
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                required:
                - total
                - ready
                - pending
                - failed
                - blocked
                additionalProperties: false
              sources:
                type: array
                items:
                  type: object
                  properties:
                    url:
                      type: string
                    type:
                      type: string
                      enum:
                      - sitemap
                      - feed
                    status:
                      type: string
                      enum:
                      - pending
                      - ok
                      - failed
                    read_at:
                      type:
                      - string
                      - 'null'
                    urls:
                      type: integer
                      minimum: -9007199254740991
                      maximum: 9007199254740991
                      description: URLs it listed the last time it was read.
                    error:
                      type:
                      - string
                      - 'null'
                  required:
                  - url
                  - type
                  - status
                  - read_at
                  - urls
                  - error
                  additionalProperties: false
                description: 'Sitemaps and feeds: read every hour; new URLs are added (up to your limit) and updated ones re-read.'
              cost_per_day_usd:
                type: number
                description: What its URLs cost per day right now (US$2.00 per 1,000 URLs per month, a thirtieth per day).
              last_read_at:
                type:
                - string
                - 'null'
              created_at:
                type: string
              updated_at:
                type: string
            required:
            - id
            - object
            - name
            - status
            - urls
            - sources
            - cost_per_day_usd
            - last_read_at
            - created_at
            - updated_at
            additionalProperties: false
        limits:
          type: object
          properties:
            urls:
              anyOf:
              - type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              - type: 'null'
              description: URLs you can have across all your custom indexes; null is unlimited. Pay as you go 100, Monthly credit plan 10,000, Enterprise unlimited.
            urls_used:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            indexes:
              anyOf:
              - type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              - type: 'null'
            indexes_used:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
          - urls
          - urls_used
          - indexes
          - indexes_used
          additionalProperties: false
          description: Your plan’s custom-index limits.
      required:
      - object
      - indexes
      - limits
      additionalProperties: false
    IndexRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 80
      required:
      - name
      additionalProperties: false
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
x-refined-from:
- api.typesearch.ai.v1.openapi.json
- typesearch-ai-api-v1-openapi.json
- typesearch-ai-openapi.json
x-pricing:
  currency: USD
  per_1000_requests:
    ultra: 1
    fast: 1.4
    normal: 2.2
    deep: 5.6
    similar: 2.2
    similar_deep: 4.6
    site_search: 2.4
  per_1000_pages:
    contents: 0.2
    contents_with_query: 0.4
  per_1000_urls_per_month:
    custom_index: 2
  per_1000_charts:
    query_addon: 0.5
    from_data: 0.3