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

# Status

> Similar to select attributes, originally designed for use in Lists

Just like [select](/docs/attribute-types/attribute-types-select) attributes, status attributes are a constrained input type, where the user must pick from a predefined list. They are used in the Attio UI to define the different columns on a kanban board, but they can also be used with objects directly.

There's only one predefined status attribute, available on the deal object as `stage`.

The possible values of a status attribute are known as "statuses", and there are [separate APIs for managing them](/rest-api/endpoint-reference/attributes/list-statuses).

All status attributes are single-select.

### Reading values

Status values have a `status` property, which is an object describing which status was used:

<CodeGroup>
  ```jsonc Example: 3 out of 5 stars theme={"system"}
  {
    "active_from": "2023-04-03T15:21:06.447000000Z",
    "active_until": null,
    "created_by_actor": {
      /*...*/
    },
    "attribute_type": "select",
    "status": {
      "id": {
        "workspace_id": "4f9a01be-3792-4ab9-926f-ca7f9005700c",
        "object_id": "5f1feef5-fe73-4c0e-9d97-5b0a96a7d32b",
        "attribute_id": "a4977b52-d367-4e28-a671-b5c4fa401fc5",
        "status_id": "11f07f01-c10f-4e05-a522-33e050bc52ee"
      },
      "title": "In Progress",
      "is_archived": false,
      "target_time_in_status": null,
      "celebration_enabled": false
    }
  }
  ```
</CodeGroup>

### Writing values

You can find a list of available statuses using the [list statuses](/rest-api/endpoint-reference/attributes/list-statuses) API.

To write status values, pass the title of the status as a string.

You can also pass an object with a `status` property which references either the `status_id` or the `title` of the status.

If you attempt to write a value where the ID or title cannot be found, you will receive an error rather than create a new status.

<CodeGroup>
  ```json Using string theme={"system"}
  {
    "stage": "Lead"
  }
  ```

  ```json Using object (title) theme={"system"}
  {
    "stage": [
      {
        "status": "Lead"
      }
    ]
  }
  ```

  ```json Using object (status_id) theme={"system"}
  {
    "stage": [
      {
        "status": "11f07f01-c10f-4e05-a522-33e050bc52ee"
      }
    ]
  }
  ```
</CodeGroup>

### Filtering

Status attributes can be filtered by equality, using either the implicit syntax or the explicit one, with either the title or status ID:

<CodeGroup>
  ```json Finding deals in the "In Progress" stage theme={"system"}
  {
    "filter": {
      "stage": "In Progress"
    }
  }
  ```

  ```json ... with a status ID instead theme={"system"}
  {
    "filter": {
      "stage": {
        "status": {
          "$eq": "11f07f01-c10f-4e05-a522-33e050bc52ee"
        }
      }
    }
  }
  ```
</CodeGroup>

You can also filter for multiple possible matching values using the `$or` syntax:

<CodeGroup>
  ```json Finding deals in either "In Progress" or "Lead" stage theme={"system"}
  {
    "filter": {
      "$or": [{"stage": "In Progress"}, {"stage": "Lead"}]
    }
  }
  ```
</CodeGroup>

Status attributes can also be filtered based on when they were modified, using the `active_from` property. This allows automations based on when the attribute was changed. This filter supports the `$lt`, `$lte`, `$gt`, `$gte` operators:

<CodeGroup>
  ```json Finding deals where the stage was changed this week theme={"system"}
  {
    "filter": {
      "stage": {
        "active_from": {
          "$gte": "2023-11-20"
        }
      }
    }
  }
  ```

  ```json ... where the stage was not changed this year theme={"system"}
  {
    "filter": {
      "stage": {
        "active_from": {
          "$lt": "2023-01-01"
        }
      }
    }
  }
  ```
</CodeGroup>
