> ## 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.

# Update project by ID

> Update a project

```jsonc Body raw (json) wrap expandable theme={null}
{
  "customer_id",// nullable | integer | existing customer id
  "name",// optional | string | max:255
  "description",// optional | string | max:1000
  "status",// optional | integer | acceptable_values: 1(opportunity),2(accepted),3(planning),4(in progress),5(pending),6(completed),7(canceled)
  "status_id",// optional | integer | existing custom status id
  "status_workflow_id",// optional | integer | existing status workflow id
  "location_id",// optional | integer | existing location id
  "location",// optional | string | max:5000 | description: Location string like "Street 1, City, State, Zip code"
  "start_time",// optional | timestamp
  "end_time",// optional | timestamp
  "notes",// optional | string | max:7500
  "job_notes",// nullable | string | max:1000
  "completion_percentage",// optional | string | digits_between:0,100
  "customfields": [ // 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
        }
    ]
}
```


## OpenAPI

````yaml put /projects/{projectId}
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:
  /projects/{projectId}:
    put:
      tags:
        - Projects
      summary: Update project by ID
      description: Update a project
      operationId: putProjectsByProjectId
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                customer_id:
                  type: integer
                  nullable: true
                  description: Existing customer id.
                name:
                  type: string
                  maxLength: 255
                description:
                  type: string
                  maxLength: 1000
                status:
                  type: integer
                  enum:
                    - 1
                    - 2
                    - 3
                    - 4
                    - 5
                    - 6
                    - 7
                  description: >-
                    1 = opportunity, 2 = accepted, 3 = planning, 4 = in
                    progress, 5 = pending, 6 = completed, 7 = canceled.
                status_id:
                  type: integer
                  description: Existing custom status id.
                status_workflow_id:
                  type: integer
                  description: Existing status workflow id.
                location_id:
                  type: integer
                  description: Existing location id.
                location:
                  type: string
                  maxLength: 5000
                  description: Location string like "Street 1, City, State, Zip code".
                start_time:
                  type: integer
                  description: Unix timestamp.
                end_time:
                  type: integer
                  description: Unix timestamp.
                notes:
                  type: string
                  maxLength: 7500
                job_notes:
                  type: string
                  nullable: true
                  maxLength: 1000
                completion_percentage:
                  type: string
                  description: A whole number from 0 to 100.
                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
                  description: Array of custom fields.
            example:
              customer_id: 1
              name: some string
              description: some string
              status: 1
              status_id: 1
              status_workflow_id: 1
              location_id: 1
              location: some string
              start_time: 1234567890
              end_time: 1234567890
              notes: some string
              job_notes: some string
              completion_percentage: some string
              customfields:
                - id: 1
                  field_instance_id: 1
                  value: some string
                - id: 1
                  field_instance_id: 1
                  value: some string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: boolean
                    description: false when the request succeeds.
                    example: false
                  response:
                    type: object
                    description: The updated 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 or object 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

- [Offline Mode Overview](/troubleshooting/offline-mode/offline-mode.md)
- [Material Lists Overview](/inventory-materials/material-lists/material-lists.md)
- [Customer Portal Overview](/customers/customer-portal/customer-portal.md)
- [Setting Up Caller ID](/add-ons/engage/caller-id.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.