---
title: "StructuredExtractionRequest"
canonical_url: "https://www.nutrient.io/api/csharp/requests/structured-extraction-request/"
md_url: "https://www.nutrient.io/api/csharp/requests/structured-extraction-request.md"
last_updated: "2026-10-08T08:55:57.713Z"
description: "Describes a structured data extraction request for `ExtractStructured`."
---

Describes a structured data extraction request for `ExtractStructured`. Carries a schema envelope — `{"schema": <JSON Schema>}` — describing the fields the extracted data must conform to, and optional free-form instructions that steer the extraction.

The envelope's `schema` member is a standard JSON Schema object — typically an object root whose properties carry a `description` telling the extractor what to put there. The envelope shape matches what schema generation produces, so a generated result can be passed straight through; an envelope `constraints` member is accepted and reserved for future post-extraction validation (it is not evaluated yet). Provider, model, endpoint, and confidence reporting are controlled separately via `AiProcessingSettings` on the document's settings.

```csharp

using Nutrient;

```

## Construction

```csharp

public StructuredExtractionRequest()

```

## Properties

### Instructions

```csharp

public string Instructions { get; set; }

```

Optional natural-language instructions that steer the extraction: disambiguation rules, formatting preferences, or domain context — anything you'd tell a colleague doing the extraction by hand.

**Type:** `string`

### Schema

```csharp

public string Schema { get; set; }

```

The schema envelope as a JSON string: `{"schema": <JSON Schema>}`. Required. The inner schema describes the fields to extract; each property's `description` tells the extractor what belongs there. An envelope `constraints` member is accepted and reserved for future post-extraction validation.

**Type:** `string`

## Resource management

```csharp

public void Dispose()

```

`StructuredExtractionRequest` implements `IDisposable`. Call `Dispose()` or use a C# `using` declaration to release its native handle right away. If you don't, the handle is released when the object is garbage collected.

---

## Related pages

- [Requests](/api/csharp/requests.md)
- [Classification Request](/api/csharp/requests/classification-request.md)
- [Schema Generation Request](/api/csharp/requests/schema-generation-request.md)

