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

# Create data step

> Create a Data Step (HTTP call) for an action or attribute.

Creates a [`Data Step`](/en/api-reference/actions-and-attributes#data-step-object): one HTTP call belonging to an action or attribute. Steps run in `stepNumber` order, each feeding its extracted output into the next.

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer token containing your Fini workspace API key. Format: `Bearer fini_...` The key needs `write` scope.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  `application/json`
</ParamField>

## Body parameters

<ParamField body="name" type="string" required>
  Step name.
</ParamField>

<ParamField body="requestUrl" type="string" required>
  Request URL. Supports `{{placeholder}}` interpolation from inputs and earlier steps.
</ParamField>

<ParamField body="requestMethod" type="string" required>
  HTTP verb, for example `GET`, `POST`, `PUT`, `PATCH`, or `DELETE`.
</ParamField>

<ParamField body="toolId" type="string">
  ID of the action or attribute this step belongs to. Set it so the step runs as part of that chain.
</ParamField>

<ParamField body="stepNumber" type="number">
  Position of the step in the chain. Steps run in ascending order.
</ParamField>

<ParamField body="requestHeaders" type="object">
  Request headers. To store a value as sensitive, send `{ "hide": true, "value": "<secret>" }`. See [Sensitive values and masking](/en/api-reference/actions-and-attributes#sensitive-values-and-masking).
</ParamField>

<ParamField body="requestBody" type="object">
  Request body, with the same masking support as headers.
</ParamField>

<ParamField body="responseMapping" type="ResponseMapping">
  Map of output keys to response paths. See [ResponseMapping](/en/api-reference/actions-and-attributes#responsemapping-object).
</ParamField>

<ParamField body="id" type="string">
  Optional explicit UUID for the new step.
</ParamField>

## Response

Returns the created [`Data Step`](/en/api-reference/actions-and-attributes#data-step-object) with sensitive values masked.

## Errors

<AccordionGroup>
  <Accordion title="400 Bad Request" icon="circle-exclamation">
    The body is malformed or missing a required field.
  </Accordion>

  <Accordion title="401 Unauthorized" icon="lock">
    The API key is missing, malformed, revoked, or invalid.
  </Accordion>

  <Accordion title="403 Forbidden" icon="shield-halved">
    The API key does not include the `write` scope required for this route.
  </Accordion>

  <Accordion title="500 Internal Server Error" icon="triangle-exclamation">
    Fini failed while creating the Data Step in storage.
  </Accordion>
</AccordionGroup>
