---
title: Line Attributes Overview
slug: line-attributes-overview
docTags: 
createdAt: 2026-09-12T00:59:20.521Z
---

Line Attributes are admin-defined, line-level inputs that map one rep-facing value to one Salesforce field and carry it across the commercial record (Pricebook Entry → Quote Line Item → Order Product → Subscription → Billing). The Line Attributes API lets you manage attribute *definitions* programmatically — create, read, update, delete, and activate them — the same objects you manage in **Settings → Price Builder → Line Attributes**. This is how a RevOps admin scripts attribute setup, keeps configuration in source control, or lets an AI agent define attributes.

The API runs on the same object as the settings UI, so an attribute created through the API behaves exactly like one created in the app.

For the concept, the admin UI, and how reps set values on a quote, see [Line Attributes](https://docs.nue.io/line-attributes) in the Knowledge Center.

:::hint{type="info"}
**Definitions vs. values**

This section covers managing attribute *definitions*. To set the *value* of a line attribute on a specific quote or order line, set the mapped custom field on the line through the Create or Update Quote & Order methods — the value is a custom field keyed by the mapped field's Salesforce API name.
:::

:::hint{type="info"}
**Required permission**

The Line Attribute object is gated by the **System Settings** feature. Your API key's role must be permitted to manage system settings (the same capability as **Manage Line Attributes** in the app).
:::

## Base URL

Use your tenant's Nue API host. It is **environment-specific** and is not necessarily `api.nue.io` — a sandbox tenant is served from `https://api.sandbox.nue.io`. Confirm your host in the Nue app; do not infer it from a Salesforce named credential. Examples in this section use `{baseUrl}`.

## Endpoints

| Endpoint                              | Method | Description                                                                                                                                                 |
| ------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/api/objects/LineAttribute`          | POST   | [Create](<Guides and Examples/Customer Lifecycle/CPQ Revenue Lifecycle/Line Attributes/Create Line Attributes.mdx>) a Line Attribute definition             |
| `/async/graphql`                      | POST   | [Fetch](<Guides and Examples/Customer Lifecycle/CPQ Revenue Lifecycle/Line Attributes/Fetch Line Attributes.mdx>) Line Attributes via GraphQL               |
| `/api/objects/LineAttribute/{id}`     | PATCH  | [Update](<Guides and Examples/Customer Lifecycle/CPQ Revenue Lifecycle/Line Attributes/Update Line Attributes.mdx>) a Line Attribute (including activation) |
| `/api/objects/LineAttribute/{id}`     | DELETE | [Delete](<Guides and Examples/Customer Lifecycle/CPQ Revenue Lifecycle/Line Attributes/Delete Line Attributes.mdx>) an inactive Line Attribute              |
| `/api/metadata/objects/LineAttribute` | GET    | Describe the object (fields, value sets)                                                                                                                    |

The object apiName is `LineAttribute` — **not** the Salesforce `LineAttribute__c` name, which is rejected. Field names are Nue camelCase apiNames. See the [Line Attribute Data Reference](<Guides and Examples/Customer Lifecycle/CPQ Revenue Lifecycle/Line Attributes/Line Attribute Data Reference.mdx>) for the full field list.

## Authentication

Include your API key in the `nue-api-key` header:

```bash
curl '{baseUrl}/api/metadata/objects/LineAttribute' \
  -H 'nue-api-key: YOUR_API_KEY'
```

## Draft vs. active

`isActive` controls the attribute's lifecycle, and **activation has a side effect**: on the transition into active, Nue provisions the mapped field across the five line objects (Quote Line Item, Order Product, Subscription, Asset, Entitlement), adds it to the `Fields_Expose_to_Nue` field sets, and runs a Business Objects sync.

- **Create as a draft** (`"isActive": false`) to register the attribute without provisioning. This is the only way to create a Line Attribute in a not-yet-active state — the admin UI requires at least one surface and creates it active.
- **Activate** by setting `"isActive": true` (on create or a later update). If provisioning fails, activation fails and the record stays a draft.
