HERE Index API

Manages index layer (create, update and query indices)

Operations 6

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /layers/{layerID} Query partitions in an index layer · Gets the partitions that match the query #
Ask an LLM
“How do I find index layer partitions that match a query, such as by time window or tile?”
“Can I split an index layer query into parts to run it in parallel?”
Tell an agent
Query index layer {layerID} for partitions matching {query}.
Run query {query} on index layer {layerID} restricted to part {part}.
PUT /layers/{layerID} Add and remove index layer partitions · Updates index layer partitions #
Ask an LLM
“How do I add and remove index entries in an index layer in a single request?”
“Can I delete the underlying data blob when removing index partitions?”
Tell an agent
Update index layer {layerID} with additions {additions} and removals {removals}.
Remove index entries {removals} from layer {layerID} and delete their blobs {deleteBlob}.
POST /layers/{layerID} Insert index data into an index layer · Inserts index data to an index layer #
Ask an LLM
“How do I publish index records for a data blob to an index layer?”
“What's the call to add new index entries after uploading data?”
Tell an agent
Insert index data for my uploaded blob into index layer {layerID}.
Add new index entries to layer {layerID} with billing tag {billingTag}.
DELETE /layers/{layerID} Delete index partitions matching a query · Deletes the partitions that match the query #
Ask an LLM
“How do I delete all index layer partitions that match a condition?”
“Does deleting index partitions by query give me an ID to track progress?”
Tell an agent destructive · confirm first
Delete the partitions in index layer {layerID} matching {deleteQuery}.
Purge index layer {layerID} entries where {deleteQuery}.
GET /layers/{layerID}/deleteRequest/{deleteId} Check the status of an index delete request · Returns the status of the delete request #
Ask an LLM
“Has my index layer delete request finished, failed, or is it still processing?”
“How do I track a delete-by-query job on an index layer?”
Tell an agent
Get the status of delete request {deleteId} on index layer {layerID}.
Check whether delete {deleteId} in layer {layerID} succeeded.
GET /layers/{layerID}/parts Get part IDs for parallel index queries · Get partIds for parallel queries #
Ask an LLM
“How do I split an index layer into parts so I can query it in parallel?”
“Can I ask for a specific number of parts to divide an index query across?”
Tell an agent
Get {numRequestedParts} part IDs for index layer {layerID}.
Divide index layer {layerID} into {numRequestedParts} parts for parallel querying.

Documentation

📖
Documentation
https://docs.here.com/identity-and-access-management/docs
📖
APIReference
https://docs.here.com/identity-and-access-management/reference
📖
Documentation
https://docs.here.com/data-api/docs
📖
APIReference
https://docs.here.com/data-api/reference
📖
Documentation
https://docs.here.com/usage/docs
📖
APIReference
https://docs.here.com/usage/reference
📖
Documentation
https://docs.here.com/destination-weather/docs
📖
APIReference
https://docs.here.com/destination-weather/reference
📖
Documentation
https://docs.here.com/ev-products/docs
📖
APIReference
https://docs.here.com/ev-products/reference
📖
Documentation
https://docs.here.com/fuel-prices/docs
📖
APIReference
https://docs.here.com/fuel-prices/reference
📖
Documentation
https://docs.here.com/geocoding-and-search/docs
📖
APIReference
https://docs.here.com/geocoding-and-search/reference
📖
Documentation
https://docs.here.com/routing/docs
📖
APIReference
https://docs.here.com/routing/reference
📖
Documentation
https://docs.here.com/positioning/docs
📖
APIReference
https://docs.here.com/positioning/reference
📖
Documentation
https://docs.here.com/indoor-map/docs
📖
APIReference
https://docs.here.com/indoor-map/reference
📖
Documentation
https://docs.here.com/transit/docs
📖
APIReference
https://docs.here.com/transit/reference
📖
Documentation
https://docs.here.com/map-attributes/docs
📖
APIReference
https://docs.here.com/map-attributes/reference
📖
Documentation
https://docs.here.com/map-rendering/docs
📖
APIReference
https://docs.here.com/map-rendering/reference
📖
Documentation
https://docs.here.com/workspace/docs
📖
APIReference
https://docs.here.com/workspace/reference
📖
Documentation
https://docs.here.com/tour-planning/docs
📖
APIReference
https://docs.here.com/tour-planning/reference
📖
Documentation
https://docs.here.com/tracking/docs
📖
APIReference
https://docs.here.com/tracking/reference
📖
Documentation
https://docs.here.com/traffic-api/docs
📖
APIReference
https://docs.here.com/traffic-api/reference
📖
Documentation
https://docs.here.com/wego-pro/docs
📖
APIReference
https://docs.here.com/wego-pro/reference

Specifications

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/here:here-index-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

here-index-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: v1 Index API
  description: Use the `index` service to get the data handles of the partitions that match a query. Then, use the data handles with the `blob` service to get the data from the partitions. For more information, see Get Data from an Index Layer. You can also use the `index` service to publish data to an index layer. For more information, see Publish to an Index Layer.
  version: 1.1.2
  x-olp-service:
    name: index
    version: v1
servers:
- url: https://use.apilookup.for.a.base.url/
security:
- Bearer: []
tags:
- name: Index
  description: Manages index layer (create, update and query indices)
paths:
  /layers/{layerID}:
    parameters:
    - $ref: '#/components/parameters/billingTag'
    get:
      tags:
      - Index
      summary: Gets the partitions that match the query
      description: Queries the index layer for the partitions that match the query. Returns each partition that matches the query, including each partition's data handle, which you use with the `blob` API to retrieve data for each partition.
      operationId: IndexAPIV1PerformQuery
      parameters:
      - name: layerID
        in: path
        description: The ID of the index layer you want to query.
        required: true
        schema:
          type: string
        x-example: index
      - name: query
        in: query
        description: An RSQL query to use to retrieve partitions that match the query. For more information, see [Get Index Data from an Index Layer](https://www.here.com/docs/bundle/data-api-developer-guide/page/rest/getting-data-index.html). The query must use the indexing attributes defined in the index layer.
        required: true
        schema:
          type: string
        x-example: tile==377782527;hour>=0;hour<2
      - name: part
        in: query
        description: Indicates which part of the layer shall be queried.
        required: false
        schema:
          type: string
        x-example: 7a320ce9e4d04d749c7a19810f99a3a1
      responses:
        '200':
          description: OK - Query executed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataResponse'
        '400':
          description: Bad Request - The request is invalid. Verify and retry.
        '401':
          description: Unauthorized - The credentials provided do not authorize the user to perform this operation.
        '403':
          description: Forbidden - The user is not authorized to perform the query on the resource specified.
        '404':
          description: Not Found - The criteria set in the query is not valid.
      x-olp-access-type: resource
      deprecated: false
      x-operation-id-source: normalized
      x-operation-id-original: Index API v1 performQuery
    put:
      tags:
      - Index
      summary: Updates index layer partitions
      description: Modifies partitions in an index layer.
      operationId: IndexAPIV1PerformUpdate
      parameters:
      - name: layerID
        in: path
        description: The layer ID of the index layer.
        required: true
        schema:
          type: string
        x-example: index
      requestBody:
        description: Contains the data you want to add or remove from the index layer
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateIndexRequest'
      responses:
        '200':
          description: OK - The index was successfully updated.
        '401':
          description: Unauthorized - The credentials provided do not authorize the user to perform this operation.
        '403':
          description: Forbidden - The user is not authorized to update the catalog and layer provided.
        '404':
          description: Not Found - A layer with the given name does not exist.
        '409':
          description: Conflict - An index with the given ID already exists
      x-olp-access-type: resource
      deprecated: false
      x-operation-id-source: normalized
      x-operation-id-original: Index API v1 performUpdate
    post:
      tags:
      - Index
      summary: Inserts index data to an index layer
      description: Adds index data for a given data blob to an index layer. For more information, see Publish to an Index Layer.
      operationId: IndexAPIV1InsertIndexes
      parameters:
      - name: layerID
        in: path
        description: The layer ID of the index layer.
        required: true
        schema:
          type: string
        x-example: index
      requestBody:
        description: An array of index attributes and values to be inserted.
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Index'
        required: true
      responses:
        '201':
          description: OK - The index was successfully created.
        '400':
          description: Bad Request - The request is invalid. Verify and retry.
        '401':
          description: Unauthorized - The credentials can't be authenticated by the system.
        '403':
          description: Forbidden - The user is not authorized to create indexes.
        '404':
          description: 'Not Found - A layer with the given name does not exist. '
        '409':
          description: Conflict - An index with the given ID already exists.
      x-olp-access-type: resource
      deprecated: false
      x-operation-id-source: normalized
      x-operation-id-original: Index API v1 insertIndexes
    delete:
      tags:
      - Index
      summary: Deletes the partitions that match the query
      description: Deletes the partitions that match the query in the index layer. Returns the delete request ID, which you can use to query the status of the delete operation.
      operationId: IndexAPIV1PerformDelete
      parameters:
      - name: layerID
        in: path
        description: The ID of the index layer you want to delete from.
        required: true
        schema:
          type: string
        x-example: index
      - name: deleteQuery
        in: query
        description: An RSQL query to use to delete the partitions that match the query. For more information, see [Delete Index Data from an Index Layer](https://www.here.com/docs/bundle/data-api-developer-guide/page/rest/deleting-data-index.html). The query must use the indexing attributes defined in the index layer.
        required: true
        schema:
          type: string
        x-example: tile==377782527;hour>=0;hour<2
      responses:
        '202':
          description: Accepted - Delete request accepted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteResponse'
        '400':
          description: Bad Request - The request is invalid. Verify and retry.
        '401':
          description: Unauthorized - The credentials provided do not authorize the user to perform this operation.
        '403':
          description: Forbidden - The user is not authorized to perform the query on the resource specified.
        '404':
          description: Not Found - The criteria set in the query is not valid.
      x-olp-access-type: resource
      deprecated: false
      x-operation-id-source: normalized
      x-operation-id-original: Index API v1 performDelete
  /layers/{layerID}/deleteRequest/{deleteId}:
    parameters:
    - $ref: '#/components/parameters/billingTag'
    get:
      tags:
      - Index
      summary: Returns the status of the delete request
      description: 'Returns the details of the specified delete request. Delete request can be in one of the following states: Scheduled, Processing, Failed, Succeeded. See Data API Developer’s Guide in the Documentation section for the delete request state diagram.'
      operationId: IndexAPIV1GetDeleteRequestStatus
      parameters:
      - name: layerID
        in: path
        description: The ID of the index layer you want to get the delete request status for.
        required: true
        schema:
          type: string
        x-example: index
      - name: deleteId
        in: path
        description: Id of the delete request returned from the index delete operation.
        required: true
        schema:
          type: string
        x-example: e07191de-8ab8-49f5-a11d-8240e1b93ab7
      responses:
        '200':
          description: Delete request status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteRequestStatus'
        '400':
          description: Bad Request - The request is invalid. Verify and retry.
        '401':
          description: Unauthorized - The credentials provided do not authorize the user to perform this operation.
        '403':
          description: Forbidden - The user is not authorized to perform the operation on the resource specified.
        '404':
          description: Not Found - The criteria set in the request are not valid.
      x-olp-access-type: resource
      deprecated: false
      x-operation-id-source: normalized
      x-operation-id-original: Index API v1 getDeleteRequestStatus
  /layers/{layerID}/parts:
    parameters:
    - $ref: '#/components/parameters/billingTag'
    get:
      tags:
      - Index
      summary: Get partIds for parallel queries
      description: Returns a list of Part Ids which represent the layer parts that can be used to limit the scope of a query operation. This allows to run parallel queries with multiple parts. The user has to provide the desired number of parts and the service will return a list of Part Ids. Please note in some cases the requested number of parts will make them too small and in this case the service might return lesser amount of the parts than requested.
      operationId: IndexAPIV1GetParts
      parameters:
      - name: layerID
        in: path
        description: The ID of the index layer you want to query.
        required: true
        schema:
          type: string
        x-example: index
      - name: numRequestedParts
        in: query
        description: Indicates requested number of layer parts.
        required: true
        schema:
          type: integer
        allowEmptyValue: false
        x-example: 12
      responses:
        '200':
          description: OK - Operation executed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartsResponse'
        '400':
          description: Bad Request - The request is invalid. Verify number of requested parts and retry.
        '401':
          description: Unauthorized - The credentials provided do not authorize the user to perform this operation.
        '403':
          description: Forbidden - The user is not authorized to perform the query on the resource specified.
        '404':
          description: Not Found - A layer with the given name does not exist.
      x-olp-access-type: resource
      deprecated: false
      x-operation-id-source: normalized
      x-operation-id-original: Index API v1 getParts
components:
  schemas:
    PartId:
      type: object
      properties:
        partId:
          type: string
          example: e07191de8ab849f5a11d8240e1b93ab7
      title: PartId
    UpdateIndexRequest:
      type: object
      properties:
        additions:
          type: array
          items:
            $ref: '#/components/schemas/Index'
        deleteBlob:
          type: boolean
          default: false
          description: Indicates if the blobs listed in the removals section shall be deleted. Please note the blobs deletion is not instant but deferred in time.
        removals:
          type: array
          example:
          - e07191de-8ab8-49f5-a11d-8240e1b93ab7
          - 99e0bde0-935c-4382-b940-fe0d2cf2ec23
          items:
            type: string
            format: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
      title: UpdateIndexRequest
    DataResponse:
      type: object
      properties:
        data:
          type: array
          example:
          - id: 7a320ce9-e4d0-4d74-9c7a-19810f99a3a1
            size: 100
            checksum: checksum
            metadata: '{"ingestionTime": "1532018660873"}'
            timestamp: 1543351987660
            crc: crc
            hour: 0
            tile: 377782527
            containsProbe: true
            eventType: vss
          items:
            $ref: '#/components/schemas/MapStringObject'
      title: DataResponse
    DeleteRequestStatus:
      type: object
      properties:
        deleteId:
          type: string
          format: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
          example: e07191de-8ab8-49f5-a11d-8240e1b93ab7
        state:
          type: string
          enum:
          - Scheduled
          - Processing
          - Failed
          - Succeeded
          description: 'The state of the delete request.

            - `Scheduled` - The delete request was successfully scheduled.

            - `Processing` - The delete request is being executed.

            - `Failed` - The delete request failed. Please try again.

            - `Succeeded` - The delete request finished successfully. The number of deleted records is provided in the `count` field.

            '
          readOnly: true
          example: Failed
        message:
          type: string
          description: A message describing the state.
          readOnly: true
          example: Delete request failed due to ....
        count:
          type: integer
          description: Number of deleted index records.
          readOnly: true
          example: 0
      title: DeleteRequestStatus
    DeleteResponse:
      type: object
      properties:
        deleteId:
          type: string
          format: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
          example: e07191de-8ab8-49f5-a11d-8240e1b93ab7
      title: DeleteResponse
    Index:
      type: object
      properties:
        checksum:
          type: string
          format: byte
          example: checksum
          description: The checksum of the data being indexed by this index record.
        crc:
          type: string
          format: byte
          example: crc
          description: The cyclic redundancy check (CRC) of the data being indexed by this index record.
        fields:
          type: object
          additionalProperties:
            type: object
          example:
            hour: 0
            tile: 377782527
            containsProbe: true
            eventType: vss
          description: The indexing attributes for the data being indexed by this index record. The attributes must match the indexing attributes defined for the index layer. To get or set the index attributes for an index layer, use the `config` API.
        id:
          type: string
          format: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
          example: 7a320ce9-e4d0-4d74-9c7a-19810f99a3a1
          description: The unique identifier (UUID) of the data being indexed by this index record.
        metadata:
          type: object
          example:
            ingestionTime: '1532018660873'
          description: User-defined fields that can store extra metadata about this index record.
          additionalProperties:
            type: string
        size:
          type: integer
          format: int64
          example: 100
          description: The size of the data being indexed by this index record.
      title: Index
    PartsResponse:
      type: object
      properties:
        parts:
          type: array
          example:
          - partId: 7a320ce9e4d04d749c7a19810f99a3a1
          items:
            $ref: '#/components/schemas/PartId'
      title: PartsResponse
    MapStringObject:
      type: object
      title: MapStringObject
      additionalProperties:
        type: object
  parameters:
    billingTag:
      in: query
      name: billingTag
      description: Billing Tag is an optional free-form tag which is used for grouping billing records together. If supplied, it must be between 4 - 16 characters, contain only alpha/numeric ASCII characters [A-Za-z0-9]. Grouping billing records by billing tag will be available in future releases.
      schema:
        type: string
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'A token obtained from a separate endpoint using client credentials and an OAuth 1.0a HMAC-SHA256 signed request.


        For more information on how to get a bearer token, see the [Identity & Access Management Guide](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide/page/README.html).

        '
externalDocs:
  description: The developer guide and related API references are available here.
  url: https://www.here.com/docs/category/data-api