# Flow on Helios XL Ingest API

> **📝 Note**: This is a Preview feature.

XL Ingest handles the initial transfer of large tables by breaking them into smaller logical partitions. You can use this API to select and configure tables for slicing, and transfer data from source databases to SingleStore in parallel slices.

## Prerequisites

Before using the XL Ingest APIs, ensure that the table to be ingested is selected in Ingest, **Skip Initial Extract** is enabled for the table, and a full extract has been performed to copy only the schema.

## Authentication

All requests must include authentication credentials. Refer to [Flow on Helios API Authentication](https://docs.singlestore.com/db/v9.1/load-data/load-data-with-singlestore-flow-on-helios/flow-on-helios-api/flow-on-helios-api-authentication.md) for more information.

## Base URL

All XL Ingest API requests must be sent to the following base URL:

```
https://<flow-endpoint>:30084/ixl
```

Where `<flow-endpoint>` corresponds to the endpoint for the Helios Flow instance. In the Portal, go to **Ingestion** > **Flow**. In the row for your Flow instance, click the three dots on the right, select **View Details**, and copy the value from **Endpoint**.

## Flow on Helios XL Ingest API Reference

The following endpoints include HTTP methods, required headers, request and response formats, and example requests.

* *Configure a Table for Slicing*

  ## Configure a Table for SlicingSelects and configures the table to be split into slices. Defines the slice boundaries and related slicing options.## EndpointPATCH /ixl?cmd=tdp## Query Parameters| Header | Required | Value            | Description                                                |
  | ------ | -------- | ---------------- | ---------------------------------------------------------- |
  | cmd    | Yes      | application/json | Command identifier. Must be set to`tdp`for this operation. |## Request Headers| Header        | Required | Value                       | Description                          |
  | ------------- | -------- | --------------------------- | ------------------------------------ |
  | Content-Type  | Yes      | application/json            | Media type of request body.          |
  | Authorization | Yes      | Bearer \<your-API-key-here> | Bearer token for API authentication. |## Request BodyA JSON array specifying the table ID, selection flag, and slicing parameters.```json
  {
    "id": "<db_name>:<schema_name>.<table_name>",
    "sliceList": [
      { "name": "slice1" },
      { "name": "slice2" },
      { "name": "slice3" }
      // ... add as many as needed
    ],
    "select": true | false,
    "sliceCol": "<column_for_slicing>",
    "where": "<where_clause>",
    "prefixSize": <prefix_size>,
    "sliceCount": <slice_count>
  }

  ```## Body Parameters| Name       | Required                       | Type    | Description                                                                                                                              |
  | ---------- | ------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
  | id         | Yes                            | string  | Table ID in the format:`db_name:schema_name.table_name`                                                                                  |
  | select     | Yes                            | boolean | Flag to select the table for slicing`(true/false`).                                                                                      |
  | sliceList  | Required for manual slicing    | array   | List of slice identifiers, each object specifies a slice boundary. (e.g., \[{ name: '102' }, { name: '104'}])                            |
  | sliceCol   | Yes                            | string  | Column name used to divide the table into parallel processing slices for better performance. (e.g., "customer\_id", "order\_date")       |
  | where      | No                             | string  | Optional SQL WHERE clause to filter which records are processed. (e.g., "status='ACTIVE'", "created\_date \&gt; '2024-01-01'")           |
  | prefixSize | Required for automatic slicing | integer | Number of characters/digits to use when calculating slice boundaries (text: prefix chars, numeric: ignore trailing digits). (e.g., 2, 3) |
  | sliceCount | Required for automatic slicing | integer | Number of parallel slices to create from the table for concurrent processing. (e.g., 4, 8)                                               |## Example Request```shell
  curl -X PATCH "https://svc-b0c51e77-50fd-4d48-92a1-38f50bda9707-flow.aws-virginia-8.svc.singlestore.com:30084/ixl?cmd=tdp" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 13c3fe2100bde3c2dbf4e98551f42b8fe2ce3d7c1962f5bd2c282bb937de4fb9" \
    -d '{
  "id":"default:json_demo.customer_orders",
  "sliceCol":"order_id",
  "where":"",
  "sliceList":[{"name":"400000"},{"name":"800000"},{"name":"1200000"},{"name":"1600000"},{"name":"2000000"}],
  "select":true,
  "prefixSize":"",
  "sliceCount":""
  }'

  ```## Responses200 OK - Success```json
  {
    "success": true
  }

  ```

* *Transfer the Slices from Source to Destination*

  ## Transfer the Slices from Source to DestinationTransfer the data between source and destination databases based on the configured slices.## EndpointPOST /ixl?cmd=tgsy\&tab=\<table\_id>## Query Parameters| Header | Required | Description                                                 |
  | ------ | -------- | ----------------------------------------------------------- |
  | cmd    | Yes      | Command identifier. Must be set to`tgsy`for this operation. |
  | tab    | Yes      | Table ID in the format:`db_name%3Aschema_name.table_name`   |## Example Request```shell
  curl -X POST "https://svc-b0c51e77-50fd-4d48-92a1-38f50bda9707-flow.aws-virginia-8.svc.singlestore.com:30084/ixl?cmd=tgsy&tab=default%3Ajson_demo.customer_orders" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 13c3fe2100bde3c2dbf4e98551f42b8fe2ce3d7c1962f5bd2c282bb937de4fb9"

  ```## Responses200 OKExample:```json
  {
    "isRunning":true,
    "type":"SY",
    "tasksComplete":0,
    "table":"default:classicmodels.orderdetails2",
    "tasksTotal":4
  }

  ```200 OK - Task Already Running```
  {
    "isRunning":false,
    "type":"SY",
    "error":"Task Group for default:classicmodels.customers already running",
    "table":"default:classicmodels.customers"
  }

  ```

***

Modified at: March 26, 2026

Source: [/db/v9.1/load-data/load-data-with-singlestore-flow-on-helios/flow-on-helios-api/flow-on-helios-xl-ingest-api/](https://docs.singlestore.com/db/v9.1/load-data/load-data-with-singlestore-flow-on-helios/flow-on-helios-api/flow-on-helios-xl-ingest-api/)

(An index of the documentation is available at /llms.txt)
