Skip to main content
PATCH
/
v1
/
projects
/
{id}
Update a project
curl --request PATCH \
  --url https://api.slant.app/v1/projects/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Updated onboarding",
  "description": "<string>",
  "projectable_id": "<string>",
  "project_template_id": "<string>",
  "project_milestone_id": "<string>",
  "assigned_to_id": "<string>"
}
'
import requests

url = "https://api.slant.app/v1/projects/{id}"

payload = {
"name": "Updated onboarding",
"description": "<string>",
"projectable_id": "<string>",
"project_template_id": "<string>",
"project_milestone_id": "<string>",
"assigned_to_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Updated onboarding',
description: '<string>',
projectable_id: '<string>',
project_template_id: '<string>',
project_milestone_id: '<string>',
assigned_to_id: '<string>'
})
};

fetch('https://api.slant.app/v1/projects/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.slant.app/v1/projects/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Updated onboarding',
'description' => '<string>',
'projectable_id' => '<string>',
'project_template_id' => '<string>',
'project_milestone_id' => '<string>',
'assigned_to_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.slant.app/v1/projects/{id}"

payload := strings.NewReader("{\n \"name\": \"Updated onboarding\",\n \"description\": \"<string>\",\n \"projectable_id\": \"<string>\",\n \"project_template_id\": \"<string>\",\n \"project_milestone_id\": \"<string>\",\n \"assigned_to_id\": \"<string>\"\n}")

req, _ := http.NewRequest("PATCH", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.patch("https://api.slant.app/v1/projects/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Updated onboarding\",\n \"description\": \"<string>\",\n \"projectable_id\": \"<string>\",\n \"project_template_id\": \"<string>\",\n \"project_milestone_id\": \"<string>\",\n \"assigned_to_id\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.slant.app/v1/projects/{id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Updated onboarding\",\n \"description\": \"<string>\",\n \"projectable_id\": \"<string>\",\n \"project_template_id\": \"<string>\",\n \"project_milestone_id\": \"<string>\",\n \"assigned_to_id\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "id": "project123xyz",
  "name": "Smith Family Onboarding",
  "book_id": "book123xyz",
  "project_milestone": {
    "id": "milestone123xyz",
    "title": "Initial Setup",
    "project_template_id": "template123xyz",
    "guid": "milestone-guid",
    "color": "<string>",
    "sort_order": 123,
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "project_milestone_outcomes": [
      {
        "id": "outcome123xyz",
        "label": "Ready for accounts",
        "default_comment": "<string>",
        "sort_order": 123,
        "target_project_milestone_id": "<string>"
      }
    ],
    "project_milestone_form_fields": [
      {
        "id": "field123xyz",
        "label": "Custodian",
        "required": true,
        "guid": "field-guid",
        "placeholder": "<string>",
        "sort_order": 123,
        "household_record_source": "<string>",
        "select_options": [
          "<string>"
        ]
      }
    ]
  },
  "project_template": {
    "id": "template123xyz",
    "title": "New Client Onboarding",
    "project_milestones": [
      {
        "id": "milestone123xyz",
        "title": "Initial Setup",
        "project_template_id": "template123xyz",
        "guid": "milestone-guid",
        "color": "<string>",
        "sort_order": 123,
        "created_at": "2023-11-07T05:31:56Z",
        "updated_at": "2023-11-07T05:31:56Z",
        "project_milestone_outcomes": [
          {
            "id": "outcome123xyz",
            "label": "Ready for accounts",
            "default_comment": "<string>",
            "sort_order": 123,
            "target_project_milestone_id": "<string>"
          }
        ],
        "project_milestone_form_fields": [
          {
            "id": "field123xyz",
            "label": "Custodian",
            "required": true,
            "guid": "field-guid",
            "placeholder": "<string>",
            "sort_order": 123,
            "household_record_source": "<string>",
            "select_options": [
              "<string>"
            ]
          }
        ]
      }
    ],
    "guid": "template-guid",
    "description": "<string>",
    "enable_kanban_view": true,
    "book_id": "<string>",
    "order_index": 123,
    "book_name": "<string>",
    "book_initials": "<string>",
    "attachments": [
      {
        "file_name": "onboarding.pdf",
        "file_type": "application/pdf",
        "file_size": 123456,
        "source": "uploaded",
        "signed_id": "signed-blob-id",
        "download_url": "<string>",
        "view_url": "<string>"
      }
    ],
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z"
  },
  "milestone_progress": 123,
  "overall_progress": 123,
  "milestone_updated_at": "2023-11-07T05:31:56Z",
  "completed_at": "2023-11-07T05:31:56Z",
  "project_template_id": "template123xyz",
  "project_milestone_id": "milestone123xyz",
  "assigned_to_id": "<string>",
  "created_by_id": "<string>",
  "household_id": "<string>",
  "projectable_id": "<string>",
  "description": {
    "html": "<string>",
    "markdown": "<string>",
    "nodes": null,
    "preferred_format": "<string>"
  },
  "comments_count": 123,
  "milestone_progresses": [
    {}
  ],
  "visited_project_milestone_ids": [
    "<string>"
  ],
  "attachments": [
    {
      "file_name": "onboarding.pdf",
      "file_type": "application/pdf",
      "file_size": 123456,
      "source": "uploaded",
      "signed_id": "signed-blob-id",
      "download_url": "<string>",
      "view_url": "<string>"
    }
  ],
  "household": {
    "id": "<string>",
    "name": "<string>"
  },
  "projectable": {
    "id": "abc123xyz",
    "name": "Smith Household",
    "person": {
      "id": "abc123xyz",
      "book_id": "book123xyz",
      "first_name": "John",
      "last_name": "Doe",
      "household_id": "xyz789abc",
      "contact_id": "cnt456def",
      "role_type": "client",
      "middle_name": "Robert",
      "salutation": "Mr.",
      "suffix": "Jr.",
      "maiden_name": "Smith",
      "gender": "male",
      "designations": "CPA, CFP",
      "household_role": "head_of_household",
      "preferred_name": "Johnny",
      "date_of_birth": "1985-06-15",
      "job_title": "Software Engineer",
      "ssn": "***-**-6789",
      "drivers_license_number": "******7890",
      "email_addresses": [
        {
          "email": "john.doe@example.com",
          "email_type": "personal",
          "is_primary": true
        }
      ],
      "phone_numbers": [
        {
          "phone_number": "+15555551234",
          "phone_type": "mobile",
          "is_primary": true,
          "extension": "1234"
        }
      ],
      "addresses": [
        {
          "address_type": "home",
          "is_primary": true,
          "line1": "123 Main St",
          "line2": "Apt 4B",
          "city": "New York",
          "state": "NY",
          "zip": "10001",
          "country_code": "US"
        }
      ],
      "employments": [
        {
          "business_name": "Acme Corp",
          "id": "emp123xyz",
          "person_id": "abc123xyz",
          "role": "Software Engineer",
          "start_date": "2023-01-15",
          "end_date": "2024-12-31",
          "actively_employed": true
        }
      ],
      "custom_fields": {
        "preferred_contact_method": "Email",
        "risk_tolerance": "Moderate"
      }
    }
  },
  "assigned_to": {
    "id": "abc123xyz",
    "email": "user@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "api_access": {
      "auth_type": "personal_access_token",
      "scope": "read_write"
    }
  },
  "created_by": {
    "id": "abc123xyz",
    "email": "user@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "api_access": {
      "auth_type": "personal_access_token",
      "scope": "read_write"
    }
  },
  "project_form_field_responses": [
    {
      "id": "response123xyz",
      "project_milestone_form_field_id": "field123xyz",
      "value": "<unknown>",
      "display_value": "<string>"
    }
  ],
  "created_at": "2023-11-07T05:31:56Z",
  "updated_at": "2023-11-07T05:31:56Z"
}
{
"error": "invalid_json",
"detail": "<string>"
}
{
"detail": "<string>"
}
{
"error": "record_not_found",
"detail": "<string>"
}

Authorizations

Authorization
string
header
required

OAuth 2.0 Bearer Token from Clerk authentication

Headers

Idempotency-Key
string

Unique key to ensure idempotent request handling.

Path Parameters

id
string
required

The project ID

Body

application/json
name
string

Project name

Example:

"Updated onboarding"

description
string

Project description as markdown

projectable_type
enum<string> | null

Related record type. Set to null with projectable_id null for ownerless projects.

Available options:
Household,
Contact,
Business
projectable_id
string | null

Related household, contact, or business ID. Set to null with projectable_type null for ownerless projects.

project_template_id
string

Project template ID

project_milestone_id
string

Current project milestone ID. Must belong to the final project template.

assigned_to_id
string

Assigned user ID

Response

project updated

id
string
required

The project ID

Example:

"project123xyz"

name
string
required

The project name

Example:

"Smith Family Onboarding"

status
enum<string>
required

Project status

Available options:
in_progress,
overdue,
completed,
cancelled
book_id
string
required

The book ID

Example:

"book123xyz"

project_milestone
object
required
project_template
object
required
milestone_progress
integer | null

Percent complete for the current milestone

overall_progress
integer | null

Percent complete for the whole project

milestone_updated_at
string<date-time> | null
completed_at
string<date-time> | null
project_template_id
string

The project template ID

Example:

"template123xyz"

project_milestone_id
string

The current project milestone ID

Example:

"milestone123xyz"

assigned_to_id
string | null

Assigned user ID

created_by_id
string | null

Creator user ID

household_id
string | null

Attached household ID for household projects

projectable_type
enum<string> | null

Related record model type, or null for ownerless projects

Available options:
Household,
Contact,
Business
projectable_id
string | null

Related record ID, or null for ownerless projects

description
object
comments_count
integer

Active comment count

milestone_progresses
object[]
visited_project_milestone_ids
string[]
attachments
object[]
household
object | null
projectable
object | null

The related household, contact, or business. Null for ownerless projects.

assigned_to
object | null
created_by
object | null
project_form_field_responses
object[]
created_at
string<date-time>
updated_at
string<date-time>