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

# Pipelines Overview

> Build a parameterization pipeline with ionworks-schema and submit it through ionworks-api.

A pipeline is an ordered set of **elements** — `DirectEntry`, `Calculation`, `DataFit`, `Validation` — that together produce a parameterised cell model. Build the pipeline with [`ionworks-schema`](https://schema.docs.ionworks.com/) and submit it with [`ionworks-api`](https://github.com/ionworks/ionworks-api).

For the conceptual model and what each element type does, see the [Pipelines Guide](/guide/pipelines/overview).

## A minimal pipeline

```python theme={null}
import ionworks_schema as iws
from ionworks import Ionworks

# Known parameters from a datasheet or literature
known = iws.direct_entries.DirectEntry(
    parameters={"Ambient temperature [K]": 298.15},
    source="datasheet",
)

# A simple capacity calculation
capacity_pos = iws.calculations.ElectrodeCapacity(electrode="positive")
capacity_neg = iws.calculations.ElectrodeCapacity(electrode="negative")

# Assemble and submit
pipeline = iws.Pipeline(
    {"known": known, "Q_pos": capacity_pos, "Q_neg": capacity_neg},
    name="Capacity pipeline",
)

client = Ionworks()
submission = client.pipeline.create(pipeline)
print(submission.id)
```

`client.pipeline.create()` accepts either an `iws.Pipeline` instance or the dict returned by `pipeline.to_config()` (useful when you want to inspect the payload before sending).

## Element types

| Schema                                                    | Element type  | Use for                                                                                                    |
| --------------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------- |
| `iws.direct_entries.DirectEntry`                          | `entry`       | Drop in known parameter values (literature, datasheet, manual entry)                                       |
| `iws.direct_entries.DirectEntryFunctionSchema` subclasses | `entry`       | Pre-built parameterisations (electrolyte, OCP, defaults) — see [Direct Entries](/pipelines/direct-entries) |
| `iws.calculations.*`                                      | `calculation` | Derive parameters from others — see [Calculations](/pipelines/calculations/geometry-capacity)              |
| `iws.DataFit` / `iws.ArrayDataFit`                        | `data_fit`    | Fit unknown parameters to measured data — see [Data Fitting](/pipelines/data-fitting/overview)             |
| `iws.Validation`                                          | `validation`  | Check fitted parameters against held-out data                                                              |

The element name (the dict key) appears in the pipeline report. The order matters: each element receives the parameters produced by everything before it.

## Submitting and retrieving results

See [Python API](/pipelines/api) for the full reference. The common flow:

```python theme={null}
submission = client.pipeline.create(pipeline)
client.pipeline.wait_for_completion(submission.id)
result = client.pipeline.result(submission.id)
print(result.element_results)
```

<CardGroup cols={2}>
  <Card title="Pipelines (theory)" icon="diagram-project" href="/guide/pipelines/overview">
    The conceptual model of pipeline elements and their composition.
  </Card>

  <Card title="Python API" icon="code" href="/pipelines/api">
    `client.pipeline.create / get / list / result / wait_for_completion`.
  </Card>
</CardGroup>
