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

# /get/records

```
URL: http://<db.host>:<db.port>/get/records
```

Retrieves records from a given table, optionally filtered by an expression
and/or sorted by a column. This operation can be performed on tables and views.
Records can be returned encoded as binary, json, or geojson.

This operation supports paging through the data via the input parameter
*offset* and input parameter *limit* parameters.  Note that when paging through
a table, if the table (or the underlying table in case of a view) is updated
(records are inserted, deleted or modified) the records retrieved may differ
between calls based on the updates applied.

## Input Parameter Description

<ParamField body="table_name" type="string">
  Name of the table or view from which the records will be fetched, in \[schema\_name.]table\_name format, using standard [name resolution rules](../../concepts/tables/#table-name-resolution).
</ParamField>

<ParamField body="offset" type="long">
  A positive integer indicating the number of initial results to skip (this can be useful for paging through the results).

  The default value is 0. The minimum allowed value is 0. The maximum allowed value is MAX\_INT.
</ParamField>

<ParamField body="limit" type="long">
  A positive integer indicating the maximum number of results to be returned, or END\_OF\_SET (-9999) to indicate that the maximum number of results allowed by the server should be returned.  The number of records returned will never exceed the server's own limit, defined by the [max\_get\_records\_size](../../config/#config-main-general) parameter in the server configuration. Use output parameter *has\_more\_records* to see if more records exist in the result to be fetched, and input parameter *offset* and input parameter *limit* to request subsequent pages of results.

  The default value is -9999.
</ParamField>

<ParamField body="encoding" type="string">
  Specifies the encoding for returned records; one of *binary*, *json*, or *geojson*.

  The default value is `binary`.

  The supported values are:

  * binary
  * json
  * geojson
  * arrow
</ParamField>

<ParamField body="options" type="map of string to strings">
  The default value is an empty map ( \{} ).

  <Expandable title="options">
    <ParamField body="expression">
      Filter expression to apply to the table.
    </ParamField>

    <ParamField body="fast_index_lookup">
      Indicates if indexes should be used to perform the lookup for a given expression if possible. Only applicable if there is no sorting, the expression contains only equivalence comparisons based on existing tables indexes and the range of requested values is from \[0 to END\_OF\_SET].

      The default value is `true`.

      The supported values are:

      * true
      * false
    </ParamField>

    <ParamField body="sort_by">
      Column that the data should be sorted by. Empty by default (i.e. no sorting is applied).
    </ParamField>

    <ParamField body="sort_order">
      String indicating how the returned values should be sorted - ascending or descending. If sort\_order is provided, sort\_by has to be provided.

      The default value is `ascending`.

      The supported values are:

      * ascending
      * descending
    </ParamField>
  </Expandable>
</ParamField>

## Output Parameter Description

The Kinetica server embeds the endpoint response inside a standard response structure which contains status information and the actual response to the query.  Here is a description of the various fields of the wrapper:

<ResponseField name="status" type="String">
  'OK' or 'ERROR'
</ResponseField>

<ResponseField name="message" type="String">
  Empty if success or an error message
</ResponseField>

<ResponseField name="data_type" type="String">
  'get\_records\_response' or 'none' in case of an error
</ResponseField>

<ResponseField name="data" type="String">
  Empty string
</ResponseField>

<ResponseField name="data_str" type="JSON or String">
  This embedded JSON represents the result of the /get/records endpoint:

  <Expandable title="data_str">
    <ResponseField name="table_name" type="string">
      Value of input parameter *table\_name*.
    </ResponseField>

    <ResponseField name="type_name" type="string" />

    <ResponseField name="type_schema" type="string">
      Avro schema of output parameter *records\_binary* or output parameter *records\_json*.
    </ResponseField>

    <ResponseField name="records_binary" type="array of bytes">
      If the input parameter *encoding* was 'binary', then this list contains the binary encoded records retrieved from the table, otherwise not populated.
    </ResponseField>

    <ResponseField name="records_json" type="array of strings">
      If the input parameter *encoding* was 'json', then this list contains the JSON encoded records retrieved from the table. If the input parameter *encoding* was 'geojson' this list contains a single entry consisting of a GeoJSON FeatureCollection containing a feature per record. Otherwise not populated.
    </ResponseField>

    <ResponseField name="total_number_of_records" type="long">
      Total/Filtered number of records.
    </ResponseField>

    <ResponseField name="has_more_records" type="boolean">
      Too many records. Returned a partial set.
    </ResponseField>

    <ResponseField name="info" type="map of string to strings">
      Additional information.
    </ResponseField>
  </Expandable>

  Empty string in case of an error.
</ResponseField>
