> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enterspeed.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get content by IDs, or handles

> The Post version of the Delivery API is used to fetch many view by IDs or handles.

*Note: The maximum handles and ids combined in one request is limited to 1000*




## OpenAPI

````yaml /enterspeed/enterspeedv1Api.yaml post /v2
openapi: 3.0.0
info:
  version: 0.4.0
  title: API documentation
  description: >-
    The Enterspeed API are based on REST principles.


    Before you start you will need to [create an
    Enterspeed-account](https://app.enterspeed.com) and set up a tenant (a
    property for your website). Here you can create

    - A data source (provides you with an API key for the **Ingest API**).

    - An environment client (provides you with an API key for the **Delivery
    API** and **Query API**).

    - A domain (ensure the correct data gets fetched).


    🎉 Have fun using our API. Make sure to [contact
    us](https://www.enterspeed.com/contact) if you need any help. We're happy
    assist!
  x-logo:
    url: https://docs.enterspeed.com/img/logo.svg
    altText: Enterspeed Logo
  license:
    name: See Enterspeed Terms of service
    url: https://www.enterspeed.com/terms-of-service
servers:
  - url: https://api.enterspeed.com
    description: General API
security: []
tags:
  - name: Delivery
    description: >-
      The Delivery API is what you use to `GET` your data from Enterspeed to
      your frontend project. Before you can fetch your content from Enterspeed,
      you first need to create an **Environment client** which generates an API
      key. This is done under *Settings --> Environment settings*.


      You can find an example of how to fetch data [Umbraco & Next.js
      tutorial](https://docs.enterspeed.com/tutorials/umbraco-nextjs/fetching-data-in-nextjs).
  - name: Ingest
    description: >-
      The Ingest API is used to `POST` your current data sources into
      Enterspeed. Before you can start ingesting data, you'll need to create a
      **Data source** inside Enterspeed, which generates an API key. This is
      done under *Settings --> Data sources*.


      The Ingest API can also be used to `DELETE` already ingested data from
      Enterspeed.
  - name: Routes
    description: >-
      The Routes API is what you use to `GET` all available URL routes for a
      specific environment, which can be helpful for SSG (Static Site
      Generation) or creating a sitemap.


      Before you can fetch your routes from Enterspeed, you first need to create
      an **Environment client** which generates an API key. This is done under
      *Settings --> Environment settings*.


      **ℹ NOTE:** The `first` or `last` parameter is required and must be set
      between 100 - 500 (e.g. `first=250`). Both are not allowed at the same
      time.
  - name: Query
    description: >-
      The Query API is what you use to query items from your indexes.


      Before you can query your indexes from Enterspeed, you first need to
      create an **Environment client** which generates an API key. This is done
      under *Settings --> Environment settings*.
paths:
  /v2:
    servers:
      - url: https://delivery.enterspeed.com
        description: Delivery API
    post:
      tags:
        - Delivery
      summary: Get content by IDs, or handles
      description: >
        The Post version of the Delivery API is used to fetch many view by IDs
        or handles.


        *Note: The maximum handles and ids combined in one request is limited to
        1000*
      operationId: getContentPost
      parameters:
        - name: includeDuplicateViews
          in: query
          description: >
            By default, each view is returned only once. However, if you set
            includeDuplicateViews to true, the view will be returned for each
            matching requested handle
          example: 'true'
          schema:
            type: boolean
            default: false
          required: false
        - name: X-Api-Key
          required: true
          in: header
          description: Api key to validate your environment.
          schema:
            type: string
            example: environment-1637c4d0-e878-4738-b866-152106a4f88c
        - name: Content-Length
          required: true
          in: header
          description: >
            The length of the message body, in bytes (this header is
            automatically added by most clients). 


            Note: The endpoint does not support `Transfer-Encoding: chunked`.
            `JsonContent` and `PostAsJsonAsync` in .NET will by default set the
            `Transfer-Encoding: chunked` header. Use types like e.g.
            `StringContent` or `ByteArrayContent` instead.
          schema:
            type: number
      requestBody:
        description: The ids or handles of the views to load
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/GetByIdsOrHandles'
      responses:
        '200':
          description: Valid request.
          content:
            application/json:
              schema:
                type: object
                oneOf:
                  - $ref: '#/components/schemas/ViewResponse'
        '401':
          description: Unauthorized. Missing X-Api-Key header or the X-Api-Key is invalid.
        '403':
          description: >-
            Forbidden. The X-Api-Key is valid but does not have the necessary
            permissions.
        '422':
          description: >-
            Invalid request. Server responded but the request was in an invalid
            format.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/NoIdsOrHandlesParametersResponse'
components:
  schemas:
    GetByIdsOrHandles:
      type: object
      description: >-
        Both `ids` and `handles` are optional, but the request must contain at
        least one id or one handle.
      example:
        ids:
          - >-
            gid://Environment/290a1654-e380-487e-8ea0-8f9f2fff589c/Source/01gh7ed9-6912-485b-9595-cd1e0c4ce89c/Entity/1234/View/content
        handles:
          - content-1234
    ViewResponse:
      type: object
      properties:
        meta:
          type: object
          properties:
            status:
              type: number
              example: 200
              description: Returns code 200
        views:
          type: object
          example:
            gid://Environment/290a1654-e380-487e-8ea0-8f9f2fff589c/Source/01gh7ed9-6912-485b-9595-cd1e0c4ce89c/Entity/1234/View/content:
              title: How to increase performance
              image: /media-path/performance.jpg
              url: /blog/how-to-increase-performance/
            content-1234:
              title: How to increase performance
              image: /media-path/performance.jpg
              url: /blog/how-to-increase-performance/
    NoIdsOrHandlesParametersResponse:
      type: object
      properties:
        meta:
          type: object
          properties:
            status:
              type: number
              description: HttpStatus code 422
              example: 422
        message:
          type: string
          description: Missing id, handle or url query parameter

````