# Split

## Create Split Job

`SplitCreateResponse Split.Create(SplitCreateParamsparameters, CancellationTokencancellationToken = default)`

**post** `/api/v1/split/jobs`

Create a document split job.

### Parameters

- `SplitCreateParams parameters`

  - `required string fileInput`

    Body param: File ID or parse job ID

  - `string? organizationID`

    Query param

  - `string? projectID`

    Query param

  - `Configuration? configuration`

    Body param: Split configuration with categories and splitting strategy.

    - `required IReadOnlyList<SplitCategory> Categories`

      Categories to split documents into.

      - `required string Name`

        Name of the category.

      - `string? Description`

        Optional description of what content belongs in this category.

    - `SplittingStrategy SplittingStrategy`

      Strategy for splitting documents.

      - `AllowUncategorized AllowUncategorized`

        Controls handling of pages that don't match any category. 'include': pages can be grouped as 'uncategorized' and included in results. 'forbid': all pages must be assigned to a defined category. 'omit': pages can be classified as 'uncategorized' but are excluded from results.

        - `"forbid"Forbid`

        - `"include"Include`

        - `"omit"Omit`

      - `string? CustomInstructions`

        Free-form guidance for where segment boundaries are placed.

      - `Long MinPagesPerSplit`

        Minimum pages per segment. Shorter segments are merged into an adjacent segment; 1 disables merging.

  - `string? configurationID`

    Body param: Saved configuration ID

  - `string? transactionID`

    Body param: Idempotency key scoped to the project. Reusing a key returns the original job; the new request body is ignored.

  - `IReadOnlyList<string>? webhookConfigurationIds`

    Body param: IDs of saved webhook configurations to notify for this job.

  - `IReadOnlyList<WebhookConfiguration>? webhookConfigurations`

    Body param: Outbound webhook endpoints to notify on job status changes

    - `IReadOnlyList<WebhookEvent>? WebhookEvents`

      Events to subscribe to (e.g. 'parse.success', 'extract.error'). If null, all events are delivered.

      - `"batch.cancelled"BatchCancelled`

      - `"batch.error"BatchError`

      - `"batch.pending"BatchPending`

      - `"batch.running"BatchRunning`

      - `"batch.success"BatchSuccess`

      - `"classify.cancelled"ClassifyCancelled`

      - `"classify.error"ClassifyError`

      - `"classify.partial_success"ClassifyPartialSuccess`

      - `"classify.pending"ClassifyPending`

      - `"classify.running"ClassifyRunning`

      - `"classify.success"ClassifySuccess`

      - `"extract.cancelled"ExtractCancelled`

      - `"extract.error"ExtractError`

      - `"extract.partial_success"ExtractPartialSuccess`

      - `"extract.pending"ExtractPending`

      - `"extract.success"ExtractSuccess`

      - `"parse.cancelled"ParseCancelled`

      - `"parse.error"ParseError`

      - `"parse.partial_success"ParsePartialSuccess`

      - `"parse.pending"ParsePending`

      - `"parse.running"ParseRunning`

      - `"parse.success"ParseSuccess`

      - `"sheets.cancelled"SheetsCancelled`

      - `"sheets.error"SheetsError`

      - `"sheets.partial_success"SheetsPartialSuccess`

      - `"sheets.pending"SheetsPending`

      - `"sheets.success"SheetsSuccess`

      - `"split.cancelled"SplitCancelled`

      - `"split.error"SplitError`

      - `"split.pending"SplitPending`

      - `"split.processing"SplitProcessing`

      - `"split.success"SplitSuccess`

      - `"unmapped_event"UnmappedEvent`

    - `IReadOnlyDictionary<string, string>? WebhookHeaders`

      Custom HTTP headers sent with each webhook request (e.g. auth tokens)

    - `string? WebhookOutputFormat`

      Response format sent to the webhook: 'string' (default) or 'json'

    - `string? WebhookSigningSecret`

      Shared signing secret used to sign webhook deliveries. When set, each request includes an HMAC-SHA256 signature of the request body in the 'LC-Signature' header (value 'sha256=<hex>'). Recompute the HMAC over the raw request body with this secret to verify the delivery is authentic.

    - `string? WebhookUrl`

      URL to receive webhook POST notifications

### Returns

- `class SplitCreateResponse:`

  A split job.

  - `required string ID`

    Unique identifier for the split job.

  - `required IReadOnlyList<SplitCategory> Categories`

    Categories used for splitting.

    - `required string Name`

      Name of the category.

    - `string? Description`

      Optional description of what content belongs in this category.

  - `required DocumentInputType DocumentInputType`

    Whether the input was a file or parse job

    - `"file_id"FileID`

    - `"parse_job_id"ParseJobID`

    - `"url"Url`

  - `required string FileInput`

    File ID or parse job ID

  - `required string ProjectID`

    Project this job belongs to.

  - `required string Status`

    Current job status. Valid values are: pending, processing, completed, failed, cancelled.

  - `required string UserID`

    User who created this job.

  - `string? ConfigurationID`

    Split configuration ID used for this job.

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? ErrorMessage`

    Error message if the job failed.

  - `SplitResultResponse? Result`

    Result of a completed split job.

    - `required IReadOnlyList<SplitSegmentResponse> Segments`

      List of document segments.

      - `required string Category`

        Category name this split belongs to.

      - `required string ConfidenceCategory`

        Categorical confidence level. Valid values are: high, medium, low.

      - `required IReadOnlyList<Long> Pages`

        1-indexed page numbers in this split.

  - `SplittingStrategy SplittingStrategy`

    Strategy used for splitting.

    - `AllowUncategorized AllowUncategorized`

      Controls handling of pages that don't match any category. 'include': pages can be grouped as 'uncategorized' and included in results. 'forbid': all pages must be assigned to a defined category. 'omit': pages can be classified as 'uncategorized' but are excluded from results.

      - `"forbid"Forbid`

      - `"include"Include`

      - `"omit"Omit`

    - `string? CustomInstructions`

      Free-form guidance for where segment boundaries are placed.

    - `Long MinPagesPerSplit`

      Minimum pages per segment. Shorter segments are merged into an adjacent segment; 1 disables merging.

  - `string? TransactionID`

    Idempotency key scoped to the project, if one was provided.

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
SplitCreateParams parameters = new()
{
    FileInput = "dfl-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
};

var split = await client.Split.Create(parameters);

Console.WriteLine(split);
```

#### Response

```json
{
  "id": "id",
  "categories": [
    {
      "name": "x",
      "description": "x"
    }
  ],
  "document_input_type": "file_id",
  "file_input": "dfl-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "project_id": "project_id",
  "status": "status",
  "user_id": "user_id",
  "configuration_id": "configuration_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "result": {
    "segments": [
      {
        "category": "category",
        "confidence_category": "confidence_category",
        "pages": [
          0
        ]
      }
    ]
  },
  "splitting_strategy": {
    "allow_uncategorized": "forbid",
    "custom_instructions": "Start a new segment at every signature page.",
    "min_pages_per_split": 1
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## List Split Jobs

`SplitListPageResponse Split.List(SplitListParams?parameters, CancellationTokencancellationToken = default)`

**get** `/api/v1/split/jobs`

List document split jobs.

### Parameters

- `SplitListParams parameters`

  - `DateTimeOffset? createdAtOnOrAfter`

    Include items created at or after this timestamp (inclusive)

  - `DateTimeOffset? createdAtOnOrBefore`

    Include items created at or before this timestamp (inclusive)

  - `IReadOnlyList<string>? jobIds`

    Filter by specific job IDs

  - `string? organizationID`

  - `Long? pageSize`

  - `string? pageToken`

  - `string? projectID`

  - `Status? status`

    Filter by job status (pending, processing, completed, failed, cancelled)

    - `"cancelled"Cancelled`

    - `"completed"Completed`

    - `"failed"Failed`

    - `"pending"Pending`

    - `"processing"Processing`

### Returns

- `class SplitListPageResponse:`

  Paginated list of split jobs.

  - `required IReadOnlyList<SplitListResponse> Items`

    The list of items.

    - `required string ID`

      Unique identifier for the split job.

    - `required IReadOnlyList<SplitCategory> Categories`

      Categories used for splitting.

      - `required string Name`

        Name of the category.

      - `string? Description`

        Optional description of what content belongs in this category.

    - `required DocumentInputType DocumentInputType`

      Whether the input was a file or parse job

      - `"file_id"FileID`

      - `"parse_job_id"ParseJobID`

      - `"url"Url`

    - `required string FileInput`

      File ID or parse job ID

    - `required string ProjectID`

      Project this job belongs to.

    - `required string Status`

      Current job status. Valid values are: pending, processing, completed, failed, cancelled.

    - `required string UserID`

      User who created this job.

    - `string? ConfigurationID`

      Split configuration ID used for this job.

    - `DateTimeOffset? CreatedAt`

      Creation datetime

    - `string? ErrorMessage`

      Error message if the job failed.

    - `SplitResultResponse? Result`

      Result of a completed split job.

      - `required IReadOnlyList<SplitSegmentResponse> Segments`

        List of document segments.

        - `required string Category`

          Category name this split belongs to.

        - `required string ConfidenceCategory`

          Categorical confidence level. Valid values are: high, medium, low.

        - `required IReadOnlyList<Long> Pages`

          1-indexed page numbers in this split.

    - `SplittingStrategy SplittingStrategy`

      Strategy used for splitting.

      - `AllowUncategorized AllowUncategorized`

        Controls handling of pages that don't match any category. 'include': pages can be grouped as 'uncategorized' and included in results. 'forbid': all pages must be assigned to a defined category. 'omit': pages can be classified as 'uncategorized' but are excluded from results.

        - `"forbid"Forbid`

        - `"include"Include`

        - `"omit"Omit`

      - `string? CustomInstructions`

        Free-form guidance for where segment boundaries are placed.

      - `Long MinPagesPerSplit`

        Minimum pages per segment. Shorter segments are merged into an adjacent segment; 1 disables merging.

    - `string? TransactionID`

      Idempotency key scoped to the project, if one was provided.

    - `DateTimeOffset? UpdatedAt`

      Update datetime

  - `string? NextPageToken`

    A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.

  - `Long? TotalSize`

    The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only.

### Example

```csharp
SplitListParams parameters = new();

var page = await client.Split.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

#### Response

```json
{
  "items": [
    {
      "id": "id",
      "categories": [
        {
          "name": "x",
          "description": "x"
        }
      ],
      "document_input_type": "file_id",
      "file_input": "dfl-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
      "project_id": "project_id",
      "status": "status",
      "user_id": "user_id",
      "configuration_id": "configuration_id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "error_message": "error_message",
      "result": {
        "segments": [
          {
            "category": "category",
            "confidence_category": "confidence_category",
            "pages": [
              0
            ]
          }
        ]
      },
      "splitting_strategy": {
        "allow_uncategorized": "forbid",
        "custom_instructions": "Start a new segment at every signature page.",
        "min_pages_per_split": 1
      },
      "transaction_id": "transaction_id",
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```

## Get Split Job

`SplitGetResponse Split.Get(SplitGetParamsparameters, CancellationTokencancellationToken = default)`

**get** `/api/v1/split/jobs/{split_job_id}`

Get a document split job.

### Parameters

- `SplitGetParams parameters`

  - `required string splitJobID`

  - `string? organizationID`

  - `string? projectID`

### Returns

- `class SplitGetResponse:`

  A split job.

  - `required string ID`

    Unique identifier for the split job.

  - `required IReadOnlyList<SplitCategory> Categories`

    Categories used for splitting.

    - `required string Name`

      Name of the category.

    - `string? Description`

      Optional description of what content belongs in this category.

  - `required DocumentInputType DocumentInputType`

    Whether the input was a file or parse job

    - `"file_id"FileID`

    - `"parse_job_id"ParseJobID`

    - `"url"Url`

  - `required string FileInput`

    File ID or parse job ID

  - `required string ProjectID`

    Project this job belongs to.

  - `required string Status`

    Current job status. Valid values are: pending, processing, completed, failed, cancelled.

  - `required string UserID`

    User who created this job.

  - `string? ConfigurationID`

    Split configuration ID used for this job.

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? ErrorMessage`

    Error message if the job failed.

  - `SplitResultResponse? Result`

    Result of a completed split job.

    - `required IReadOnlyList<SplitSegmentResponse> Segments`

      List of document segments.

      - `required string Category`

        Category name this split belongs to.

      - `required string ConfidenceCategory`

        Categorical confidence level. Valid values are: high, medium, low.

      - `required IReadOnlyList<Long> Pages`

        1-indexed page numbers in this split.

  - `SplittingStrategy SplittingStrategy`

    Strategy used for splitting.

    - `AllowUncategorized AllowUncategorized`

      Controls handling of pages that don't match any category. 'include': pages can be grouped as 'uncategorized' and included in results. 'forbid': all pages must be assigned to a defined category. 'omit': pages can be classified as 'uncategorized' but are excluded from results.

      - `"forbid"Forbid`

      - `"include"Include`

      - `"omit"Omit`

    - `string? CustomInstructions`

      Free-form guidance for where segment boundaries are placed.

    - `Long MinPagesPerSplit`

      Minimum pages per segment. Shorter segments are merged into an adjacent segment; 1 disables merging.

  - `string? TransactionID`

    Idempotency key scoped to the project, if one was provided.

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
SplitGetParams parameters = new() { SplitJobID = "split_job_id" };

var split = await client.Split.Get(parameters);

Console.WriteLine(split);
```

#### Response

```json
{
  "id": "id",
  "categories": [
    {
      "name": "x",
      "description": "x"
    }
  ],
  "document_input_type": "file_id",
  "file_input": "dfl-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "project_id": "project_id",
  "status": "status",
  "user_id": "user_id",
  "configuration_id": "configuration_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "result": {
    "segments": [
      {
        "category": "category",
        "confidence_category": "confidence_category",
        "pages": [
          0
        ]
      }
    ]
  },
  "splitting_strategy": {
    "allow_uncategorized": "forbid",
    "custom_instructions": "Start a new segment at every signature page.",
    "min_pages_per_split": 1
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Delete Split Job

`JsonElement Split.Delete(SplitDeleteParamsparameters, CancellationTokencancellationToken = default)`

**delete** `/api/v1/split/jobs/{split_job_id}`

Delete a split job and its results.

### Parameters

- `SplitDeleteParams parameters`

  - `required string splitJobID`

  - `string? organizationID`

  - `string? projectID`

### Example

```csharp
SplitDeleteParams parameters = new() { SplitJobID = "split_job_id" };

var split = await client.Split.Delete(parameters);

Console.WriteLine(split);
```

#### Response

```json
{}
```

## Cancel Split Job

`SplitCancelResponse Split.Cancel(SplitCancelParamsparameters, CancellationTokencancellationToken = default)`

**post** `/api/v1/split/jobs/{split_job_id}/cancel`

Cancel a running split job.

Requests cancellation; the job transitions to CANCELLED asynchronously once processing stops. Returns the job, which may still be in its current non-terminal state. Jobs already in a terminal state (COMPLETED, FAILED, CANCELLED) cannot be cancelled.

### Parameters

- `SplitCancelParams parameters`

  - `required string splitJobID`

  - `string? organizationID`

  - `string? projectID`

### Returns

- `class SplitCancelResponse:`

  A split job.

  - `required string ID`

    Unique identifier for the split job.

  - `required IReadOnlyList<SplitCategory> Categories`

    Categories used for splitting.

    - `required string Name`

      Name of the category.

    - `string? Description`

      Optional description of what content belongs in this category.

  - `required DocumentInputType DocumentInputType`

    Whether the input was a file or parse job

    - `"file_id"FileID`

    - `"parse_job_id"ParseJobID`

    - `"url"Url`

  - `required string FileInput`

    File ID or parse job ID

  - `required string ProjectID`

    Project this job belongs to.

  - `required string Status`

    Current job status. Valid values are: pending, processing, completed, failed, cancelled.

  - `required string UserID`

    User who created this job.

  - `string? ConfigurationID`

    Split configuration ID used for this job.

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? ErrorMessage`

    Error message if the job failed.

  - `SplitResultResponse? Result`

    Result of a completed split job.

    - `required IReadOnlyList<SplitSegmentResponse> Segments`

      List of document segments.

      - `required string Category`

        Category name this split belongs to.

      - `required string ConfidenceCategory`

        Categorical confidence level. Valid values are: high, medium, low.

      - `required IReadOnlyList<Long> Pages`

        1-indexed page numbers in this split.

  - `SplittingStrategy SplittingStrategy`

    Strategy used for splitting.

    - `AllowUncategorized AllowUncategorized`

      Controls handling of pages that don't match any category. 'include': pages can be grouped as 'uncategorized' and included in results. 'forbid': all pages must be assigned to a defined category. 'omit': pages can be classified as 'uncategorized' but are excluded from results.

      - `"forbid"Forbid`

      - `"include"Include`

      - `"omit"Omit`

    - `string? CustomInstructions`

      Free-form guidance for where segment boundaries are placed.

    - `Long MinPagesPerSplit`

      Minimum pages per segment. Shorter segments are merged into an adjacent segment; 1 disables merging.

  - `string? TransactionID`

    Idempotency key scoped to the project, if one was provided.

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
SplitCancelParams parameters = new() { SplitJobID = "split_job_id" };

var response = await client.Split.Cancel(parameters);

Console.WriteLine(response);
```

#### Response

```json
{
  "id": "id",
  "categories": [
    {
      "name": "x",
      "description": "x"
    }
  ],
  "document_input_type": "file_id",
  "file_input": "dfl-aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "project_id": "project_id",
  "status": "status",
  "user_id": "user_id",
  "configuration_id": "configuration_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "error_message": "error_message",
  "result": {
    "segments": [
      {
        "category": "category",
        "confidence_category": "confidence_category",
        "pages": [
          0
        ]
      }
    ]
  },
  "splitting_strategy": {
    "allow_uncategorized": "forbid",
    "custom_instructions": "Start a new segment at every signature page.",
    "min_pages_per_split": 1
  },
  "transaction_id": "transaction_id",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```
