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

# Create Material List

```jsonc Body raw (json) wrap expandable theme={null}
{
    "is_template" // nullable | boolean
    "customer_id" // nullable | required without is_template | required if is_template=false | existing customer id
    "author_id" // nullable | existing user id
    "title" // required | string | max:255
    "notes" // optional | string | max:10000
    "internal_notes" // optional | string | max:10000
    "status_id" // optional | existing custom status id
    "status_workflow_id" // required with status_id | existing status workflow id
    "groupings": [ // nullable | array
        {
            "order_number" // nullable | integer
            "title" // required | string | max:255
            "type" // required | string | max:255 | values: 'item', 'group'
            "description" // nullable | string
            "component_visibility" // required | string | values: 'all', 'group', 'component'
            "price_visibility" // required | string | values: 'all', 'group', 'component'
            "quantity" // optional | numeric
            "commission_amount" // optional | numeric
            "hvi_amount" // optional | numeric
            "pricebook_id" // nullable | integer | existing  Pricebook id
            "flat_rate_job_id" // nullable | integer | existing pricebook flat rate job id
            "line_items": [ // nullable | array
                {
                    "id" // nullable | integer | existing line item id
                    "item_id" // nullable | integer | existing item id
                    "quantity" // required | numeric
                    "unit_price" // required | numeric
                    "unit_cost"  // required | numeric
                    "taxable" // nullable | boolean
                    "title" // required | string | max:255
                    "description" // nullable | string
                    "type" // nullable | string | max:255 | values: 'product', 'service'
                    "sku" // nullable | string | max:255
                    "unit_measure" // nullable | string | max:255
                    "tax_rate" // nullable | numeric
                    "xero_sales_account" // nullable | integer
                    "xero_tax_account" // nullable | integer
                    "reece_item" // nullable | array
                    "external_type" // nullable | string | max:255
                    "external_id" // nullable | string | max:255
                    "external_sync_status" // nullable | string | max:255
                    "additional_reece_item" // nullable | array
                    "qbo_income_account_id" // nullable | integer
                    "qbo_sales_tax_code_id" // nullable | integer
                    "qbo_expense_account_id" // nullable | integer
                    "granite_group_item" // nullable | array
                    "minimum_order_quantity" // nullable | numeric
                    "price_update_method" // nullable | string | max:255
                    "automatic_markup_percentage" // nullable | string | max:255
                    "serialized_inventory_id" // nullable | integer | existing serialized inventory id
                    "inventory_mode" // nullable | string | max:255
                    "ces_item" // nullable | array
                }
            ]
        }
    ],
    "customfields": [ // nullable | optional | array | description: array of custom fleds
        {
            "id" // optional | nullable | required if field_instance_id is not set | integer | custom field id
            "field_instance_id" // optional | nullable | required if id is not set | integer | custom field instance id
            "value" // required | string | custom value
        },
        {
            "id" // optional | nullable | required if field_instance_id is not set | integer | custom field id
            "field_instance_id" // optional | nullable | required if id is not set | integer | custom field instance id
            "value" // required | string | custom value
        }
    ],
    "assignments": [ // nullable| array
        {
            "user_id" // required | integer | existing user id
            "team_id" // nullable | integer | existing team id
        }
    ],
    "tags" // nullable | array | existing tag ids
}
```


## OpenAPI

````yaml post /material-list
openapi: 3.0.0
info:
  title: FieldPulse API
  description: >-
    REST API for the FieldPulse field service management platform.


    **Authentication:** All requests require an `x-api-key` header. Contact
    support@fieldpulse.com to obtain your API key.


    **Important:** The API Playground below makes live requests against your
    production data. Use caution when testing write operations (POST, PUT,
    DELETE).
  version: 1.0.0
servers:
  - url: https://ywe3crmpll.execute-api.us-east-2.amazonaws.com/stage
    description: Production
security:
  - apiKeyAuth: []
tags:
  - name: Assets
    description: Endpoints related to assets
  - name: Assets Category
    description: Endpoints related to assets category
  - name: Comments
    description: Endpoints related to comments
  - name: Company Profile
    description: Endpoints related to contracts
  - name: Contracts
    description: Endpoints related to contracts
  - name: Customers
    description: Endpoints related to customers
  - name: Custom Fields
    description: Endpoints related to custom fields
  - name: Estimates
    description: Endpoints related to estimates
  - name: Invoices
  - name: Items
  - name: Jobs
  - name: Lead Source
  - name: Locations
  - name: Material Lists
  - name: Payments
  - name: Pipeline Status
  - name: Projects
  - name: Purchase Orders
  - name: Subtasks
  - name: Tags
  - name: Teams
  - name: Timesheets
  - name: Users
  - name: Vendors
  - name: Version
paths:
  /material-list:
    post:
      tags:
        - Material Lists
      summary: Create Material List
      operationId: postMaterialList
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                is_template:
                  type: boolean
                  nullable: true
                customer_id:
                  type: string
                  nullable: true
                  description: >-
                    Required without is_template. Required if is_template=false.
                    Existing customer id.
                author_id:
                  type: string
                  nullable: true
                  description: Existing user id.
                title:
                  type: string
                  maxLength: 255
                notes:
                  type: string
                  maxLength: 10000
                internal_notes:
                  type: string
                  maxLength: 10000
                status_id:
                  type: string
                  description: Existing custom status id.
                status_workflow_id:
                  type: string
                  description: Required with status_id. Existing status workflow id.
                groupings:
                  type: array
                  items:
                    type: object
                    properties:
                      order_number:
                        type: integer
                        nullable: true
                      title:
                        type: string
                        maxLength: 255
                      type:
                        type: string
                        enum:
                          - item
                          - group
                        maxLength: 255
                      description:
                        type: string
                        nullable: true
                      component_visibility:
                        type: string
                        enum:
                          - all
                          - group
                          - component
                      price_visibility:
                        type: string
                        enum:
                          - all
                          - group
                          - component
                      quantity:
                        type: number
                      commission_amount:
                        type: number
                      hvi_amount:
                        type: number
                      pricebook_id:
                        type: integer
                        nullable: true
                        description: Existing Pricebook id.
                      flat_rate_job_id:
                        type: integer
                        nullable: true
                        description: Existing pricebook flat rate job id.
                      line_items:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              nullable: true
                              description: Existing line item id.
                            item_id:
                              type: integer
                              nullable: true
                              description: Existing item id.
                            quantity:
                              type: number
                            unit_price:
                              type: number
                            unit_cost:
                              type: number
                            taxable:
                              type: boolean
                              nullable: true
                            title:
                              type: string
                              maxLength: 255
                            description:
                              type: string
                              nullable: true
                            type:
                              type: string
                              nullable: true
                              enum:
                                - product
                                - service
                              maxLength: 255
                            sku:
                              type: string
                              nullable: true
                              maxLength: 255
                            unit_measure:
                              type: string
                              nullable: true
                              maxLength: 255
                            tax_rate:
                              type: number
                              nullable: true
                            xero_sales_account:
                              type: integer
                              nullable: true
                            xero_tax_account:
                              type: integer
                              nullable: true
                            reece_item:
                              type: array
                              items: {}
                              nullable: true
                            external_type:
                              type: string
                              nullable: true
                              maxLength: 255
                            external_id:
                              type: string
                              nullable: true
                              maxLength: 255
                            external_sync_status:
                              type: string
                              nullable: true
                              maxLength: 255
                            additional_reece_item:
                              type: array
                              items: {}
                              nullable: true
                            qbo_income_account_id:
                              type: integer
                              nullable: true
                            qbo_sales_tax_code_id:
                              type: integer
                              nullable: true
                            qbo_expense_account_id:
                              type: integer
                              nullable: true
                            granite_group_item:
                              type: array
                              items: {}
                              nullable: true
                            minimum_order_quantity:
                              type: number
                              nullable: true
                            price_update_method:
                              type: string
                              nullable: true
                              maxLength: 255
                            automatic_markup_percentage:
                              type: string
                              nullable: true
                              maxLength: 255
                            serialized_inventory_id:
                              type: integer
                              nullable: true
                              description: Existing serialized inventory id.
                            inventory_mode:
                              type: string
                              nullable: true
                              maxLength: 255
                            ces_item:
                              type: array
                              items: {}
                              nullable: true
                          required:
                            - quantity
                            - unit_price
                            - unit_cost
                            - title
                        nullable: true
                    required:
                      - title
                      - type
                      - component_visibility
                      - price_visibility
                  nullable: true
                customfields:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: integer
                        nullable: true
                        description: >-
                          Required if field_instance_id is not set. Custom field
                          id.
                      field_instance_id:
                        type: integer
                        nullable: true
                        description: Required if id is not set. Custom field instance id.
                      value:
                        type: string
                        description: Custom value.
                    required:
                      - value
                  nullable: true
                  description: Array of custom fields.
                assignments:
                  type: array
                  items:
                    type: object
                    properties:
                      user_id:
                        type: integer
                        description: Existing user id.
                      team_id:
                        type: integer
                        nullable: true
                        description: Existing team id.
                    required:
                      - user_id
                  nullable: true
                tags:
                  type: array
                  items:
                    type: integer
                  nullable: true
                  description: Existing tag ids.
              required:
                - title
            example:
              is_template: true
              customer_id: some string
              author_id: some string
              title: some string
              notes: some string
              internal_notes: some string
              status_id: some string
              status_workflow_id: some string
              groupings:
                - order_number: 1
                  title: some string
                  type: item
                  description: some string
                  component_visibility: all
                  price_visibility: all
                  quantity: 1
                  commission_amount: 1
                  hvi_amount: 1
                  pricebook_id: 1
                  flat_rate_job_id: 1
                  line_items:
                    - id: 1
                      item_id: 1
                      quantity: 1
                      unit_price: 1
                      unit_cost: 1
                      taxable: true
                      title: some string
                      description: some string
                      type: product
                      sku: some string
                      unit_measure: some string
                      tax_rate: 1
                      xero_sales_account: 1
                      xero_tax_account: 1
                      reece_item: []
                      external_type: some string
                      external_id: some string
                      external_sync_status: some string
                      additional_reece_item: []
                      qbo_income_account_id: 1
                      qbo_sales_tax_code_id: 1
                      qbo_expense_account_id: 1
                      granite_group_item: []
                      minimum_order_quantity: 1
                      price_update_method: some string
                      automatic_markup_percentage: some string
                      serialized_inventory_id: 1
                      inventory_mode: some string
                      ces_item: []
              customfields:
                - id: 1
                  field_instance_id: 1
                  value: some string
                - id: 1
                  field_instance_id: 1
                  value: some string
              assignments:
                - user_id: 1
                  team_id: 1
              tags:
                - 1
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    description: false when the request succeeds.
                    example: false
                  response:
                    type: object
                    description: The created record.
        '400':
          description: Bad Request
          content:
            application/json:
              example:
                error: true
                errors:
                  - error message
                  - error message
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                message: Unauthorized
        '404':
          description: Not Found
          content:
            application/json:
              example:
                message: Request URL not found
        '500':
          description: Internal Server Error
          content:
            application/json:
              example:
                message: Internal Server Error
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````

## Related topics

- [Material Lists Overview](/inventory-materials/material-lists/material-lists.md)
- [FieldPulse API Overview](/integrations/developer-api/fieldpulse-api-overview.md)
- [How to Use Material Lists on the Mobile App](/inventory-materials/material-lists/mobile-app.md)
- [Material Lists](/inventory-materials/material-lists/index.md)
- [Material Lists Offline Mode Details](/inventory-materials/material-lists/offline-behavior.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.