> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.projectmanager.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.projectmanager.com/_mcp/server.

# Create Npt

POST https://api.projectmanager.com/api/data/non-project-tasks
Content-Type: application/json

Creates a new Non-Project Task (NPT) for the current user. If you specify an assignee for this NPT, that user will be assigned to this task. 
If you do not specify an assignee, the NPT will be automatically assigned to you. 
 
A Non-Project Task (NPT) is an individual element of work that is outside of a project. 
Many people use NPTs to track personal work or general administrative work.  NPTs have nearly
all the same features as other tasks, but since they are not part of a project, they can
be tracked separately by individuals.

Reference: https://developer.projectmanager.com/api-reference/npt/create-npt

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Headers

- `x-integration-name` (string, optional) — The name of the calling system passed along as a header parameter

### Body (application/json)

This endpoint expects a NptCreateDto.

- `name` (string, required) — The common name of this Task.
- `description` (string, optional, nullable) — This field contains the task's "Note" or "Description", which is a description of the work to be done to complete the task. Within the ProjectManager application, you can use this field as follows: * When in the Board or List view, click on a task to open the task panel, then edit the "Description" field.
- `plannedStartDate` (string, optional, nullable) — The date when work on this Task is planned to begin. This value contains only the date in year-month-day format. For display, this date will always be shown as this same year-month-day regardless of time zone.
- `plannedFinishDate` (string, optional, nullable) — The date when work on this Task is expected to complete. This value contains only the date in year-month-day format. For display, this date will always be shown as this same year-month-day regardless of time zone.
- `assignees` (list of string, optional, nullable) — Specify a list of resources to assign to this NPT
- `statusId` (string, optional, nullable) — The unique identifier of the NptStatus for this Npt

## Response

### 200

Success

- `error` (AstroError, optional, nullable) — If the API call failed, this will contain information about the error that occurred.
- `success` (boolean, optional) — True if the API call succeeded; false otherwise.
- `hasError` (boolean, optional) — True if the API call failed.
- `statusCode` (enum, optional) — The HTTP code of the response.
  - Allowed values: `Continue`, `SwitchingProtocols`, `Processing`, `EarlyHints`, `OK`, `Created`, `Accepted`, `NonAuthoritativeInformation`, `NoContent`, `ResetContent`, `PartialContent`, `MultiStatus`, `AlreadyReported`, `IMUsed`, `MultipleChoices`, `MovedPermanently`, `Found`, `SeeOther`, `NotModified`, `UseProxy`, `Unused`, `TemporaryRedirect`, `PermanentRedirect`, `BadRequest`, `Unauthorized`, `PaymentRequired`, `Forbidden`, `NotFound`, `MethodNotAllowed`, `NotAcceptable`, `ProxyAuthenticationRequired`, `RequestTimeout`, `Conflict`, `Gone`, `LengthRequired`, `PreconditionFailed`, `RequestEntityTooLarge`, `RequestUriTooLong`, `UnsupportedMediaType`, `RequestedRangeNotSatisfiable`, `ExpectationFailed`, `MisdirectedRequest`, `UnprocessableEntity`, `Locked`, `FailedDependency`, `UpgradeRequired`, `PreconditionRequired`, `TooManyRequests`, `RequestHeaderFieldsTooLarge`, `UnavailableForLegalReasons`, `InternalServerError`, `NotImplemented`, `BadGateway`, `ServiceUnavailable`, `GatewayTimeout`, `HttpVersionNotSupported`, `VariantAlsoNegotiates`, `InsufficientStorage`, `LoopDetected`, `NotExtended`, `NetworkAuthenticationRequired`
- `data` (NptDto, optional) — A Npt is a task that does not belong to the project. It is only visible to the person who created it, and the users assigned to it. NPT's are a lightweight version of a project task.

## Errors

### 400 Bad Request Error

Bad Request

- `any`

## Types

### AstroError

Information about an error that occurred within the ProjectManager API.

- `technicalError` (string, optional, nullable) — A technical description of the error that occurred. Not suitable for display to end users.
- `additionalErrors` (list of string, optional, nullable) — If additional errors beyond the main error in `Message` occurred, they will be listed here as individual messages.
- `validationErrors` (map from string to list of string, optional, nullable) — This contains a dictionary of validation errors. The key is the name of the field
- `message` (string, optional, nullable) — A description of the error that occurred. If your application has a user interface, show this message to explain what went wrong.

### NptDto

A Npt is a task that does not belong to the project. It is only visible to the person who created it, and the users assigned to it. NPT's are a lightweight version of a project task.

- `id` (string, optional) — The unique identifier of the NPT
- `name` (string, optional) — The common name of this Task.
- `description` (string, optional, nullable) — This field contains the task's "Note" or "Description", which is a description of the work to be done to complete the task. Within the ProjectManager application, you can use this field as follows: * When in the Board or List view, click on a task to open the task panel, then edit the "Description" field.
- `plannedStartDate` (string, optional, nullable) — The date when work on this Task is planned to begin. This value contains only the date in year-month-day format. For display, this date will always be shown as this same year-month-day regardless of time zone.
- `plannedFinishDate` (string, optional, nullable) — The date when work on this Task is expected to complete. This value contains only the date in year-month-day format. For display, this date will always be shown as this same year-month-day regardless of time zone.
- `actualStartDate` (string, optional, nullable) — If set, this is the actual date when work began on the Task. This value contains only the date in year-month-day format. For display, this date will always be shown as this same year-month-day regardless of time zone. For reporting purposes, this date is calculated against the official time zone of the Workspace. For example: A Task has a planned completion date of July 5, 2023 in a Workspace that has a time zone of US Pacific Time (GMT-7 or GMT-8, depending on daylight savings time). This project is considered overdue on 12:01 AM July 6th 2023 in US Pacific time.
- `actualFinishDate` (string, optional, nullable) — If set, this is the actual date when work was completed on this Task. This value contains only the date in year-month-day format. For display, this date will always be shown as this same year-month-day regardless of time zone. For reporting purposes, this date is calculated against the official time zone of the Workspace. For example: A Task has a planned completion date of July 5, 2023 in a Workspace that has a time zone of US Pacific Time (GMT-7 or GMT-8, depending on daylight savings time). This project is considered overdue on 12:01 AM July 6th 2023 in US Pacific time.
- `actualEffort` (integer, optional, nullable) — The actual effort (in minutes) for this Task.
- `actualDuration` (integer, optional, nullable) — The actual duration (in minutes) for this Task.
- `actualCost` (double, optional, nullable) — The actual cost of this Task to date, if known.
- `plannedCost` (double, optional, nullable) — The planned cost for this Task. Cannot be negative.
- `plannedDuration` (integer, optional, nullable) — The planned duration (in minutes) for this Task.
- `plannedEffort` (integer, optional, nullable) — The planned effort (in minutes) for this Task.
- `priorityId` (integer, optional, nullable) — Return the priority of a task
- `percentComplete` (integer, optional) — The numerical percentage, from 0-100, representing the percentage completion for this Task. Any numbers below zero or above 100 will be clamped to the minimum or maximum value. This value can be edited manually in the Gantt chart view of the application, or can be selected on the Task Detail page within the Kanban board.
- `status` (NptStatusDto, optional) — The status assigned to this Npt
- `assignees` (list of NptAssigneeDto, optional) — The list of resources assigned to this Npt
- `shortId` (string, optional, nullable) — A short ID that can be used to refer to this Task. This short ID is guaranteed to be unique within your Workspace.
- `tags` (list of TaskTagDto, optional, nullable) — The TaskTags that apply to this Task.
- `todos` (list of TaskTodoDto, optional, nullable) — A list of TaskTodo items, which are sub-tasks within this Task.
- `createDate` (string, optional) — Timestamp when the NPT was created
- `owner` (TaskOwnerDto, optional, nullable) — The owner of this Task.
- `ownerId` (string, optional, nullable) — The ownerId of this Task.

### NptStatusDto

A TaskStatus is a named status level used by your business to determine how to measure the progress of Tasks. You can define your own named status levels that are appropriate for your business and determine which status levels are considered done.

- `id` (string, optional) — The unique identifier of this TaskStatus.
- `name` (string, optional) — The name of this TaskStatus.
- `order` (integer, optional) — A numerical value that can be used to sort TaskStatus values according to the needs of your business.
- `isDone` (boolean, optional) — True if a Task in this TaskStatus is considered done.

### NptAssigneeDto

A NptAssignee is a Resource to whom a Npt is assigned. A single Npt can be assigned to multiple NptAssignee.

- `id` (string, optional) — The unique identifier of this Resource
- `initials` (string, optional) — A shortened set of initials to use when representing this NptAssignee visually in small areas. The initials may be used in small icons or other overlays.
- `name` (string, optional, nullable) — The name of this NptAssignee
- `description` (string, optional, nullable) — A more complete description of the NptAssignee.
- `isActive` (boolean, optional) — True if this NptAssignee is currently active with the Project.
- `colorName` (string, optional, nullable) — Collaboration Color for this resource. eg. teal, cyan, lightblue, blurple, purple, pink, orange, gray
- `firstName` (string, optional, nullable) — The first or given name of this NptAssignee. For personnel NptAssignees only.
- `lastName` (string, optional, nullable) — The last or family name of this NptAssignee. For personnel NptAssignees only.
- `shortName` (string, optional, nullable) — A shortened version of the name of this NptAssignee. This is used in areas where the Initials are too short but the full name is too long.
- `avatarUrl` (string, optional, nullable) — A link to an Avatar for this NptAssignee. Avatars are small images or representations that can be used to visually identify this NptAssignee at a glance.
- `email` (string, optional, nullable) — The email address for the resource. It can be empty if the resource does not have a login.

### TaskTagDto

A TaskTag is a connection between a Task and a Tag. Each Task can have zero, one or many TaskTags associated with it. TaskTags can be assigned and removed from the Task to help you classify your Tasks and prioritize work.

- `id` (string, optional) — The unique identifier of this TaskTag.
- `name` (string, optional) — The common name of this TaskTag.
- `color` (string, optional) — The color that will be used to represent this Tag visually. This color is automatically chosen by the application when a user creates a Tag. You can choose specify any color that can be represented using HTML RGB syntax such as `#0088FF`, in the format `RRGGBB`. You may not use names for colors.

### TaskTodoDto

A TaskTodo is a sub-task that represents a unit of work on the Task. You can use TaskTodo to represent individual items for a larger piece of work.

- `id` (string, optional) — The unique identifier of this TaskTodo.
- `text` (string, optional) — The full description of this TaskTodo.
- `complete` (boolean, optional) — True if this TaskTodo is complete.
- `createDate` (string, optional) — The timestamp in UTC when this object was created.
- `modifyDate` (string, optional) — The timestamp in UTC when this object was last modified.

### TaskOwnerDto

A Resource represents a person, material, or tool that is used within your Projects. When you attach a Resources to more than one Task, the software will schedule the usage of your Resource so that it is not allocated to more than one Task at the same time. The users in your Workspace are also considered Resources. To invite a new User to your Workspace, create a new Resource for that user.

- `id` (string, optional) — The unique identifier of this Resource.
- `initials` (string, optional) — The resource initials.
- `name` (string, optional, nullable) — Display name for this Resource.
- `shortName` (string, optional, nullable) — Short display name for this Resource.
- `firstName` (string, optional, nullable) — The first name of the person Resource. Applies to personnel Resources only.
- `lastName` (string, optional, nullable) — The last name of the person Resource. Applies to personnel Resources only.
- `email` (string, optional, nullable) — If this Resource is a person who can log on to ProjectManager.com, this value should be the email address of the person. If this Resource is not a person, but you wish to receive email alerts for usage of this Resource, you can also add an email address here and notifications will be sent when this Resource is used. Otherwise this value should be `null`.
- `isActive` (boolean, optional) — True if this Resource is currently active and valid. If this value is false, this Resource is considered to be deactivated and not available for further use. For personnel Resources, setting this value to False will make this user unable to access this Workspace.
- `color` (string, optional, nullable) — Read only Hex code of the ColorName
- `avatarUrl` (string, optional, nullable) — The resources avatar url, if any.

## Examples

**Request**

```json
{
  "name": "string"
}
```

**Response**

```json
{
  "error": {
    "technicalError": "string",
    "additionalErrors": [
      "string"
    ],
    "validationErrors": {},
    "message": "string"
  },
  "success": true,
  "hasError": true,
  "statusCode": "Continue",
  "data": {
    "id": "string",
    "name": "string",
    "description": "string",
    "plannedStartDate": "2023-01-15",
    "plannedFinishDate": "2023-01-15",
    "actualStartDate": "2023-01-15",
    "actualFinishDate": "2023-01-15",
    "actualEffort": 1,
    "actualDuration": 1,
    "actualCost": 1.1,
    "plannedCost": 1.1,
    "plannedDuration": 1,
    "plannedEffort": 1,
    "priorityId": 1,
    "percentComplete": 1,
    "status": {
      "id": "string",
      "name": "string",
      "order": 1,
      "isDone": true
    },
    "assignees": [
      {
        "id": "string",
        "initials": "string",
        "name": "string",
        "description": "string",
        "isActive": true,
        "colorName": "string",
        "firstName": "string",
        "lastName": "string",
        "shortName": "string",
        "avatarUrl": "string",
        "email": "string"
      }
    ],
    "shortId": "string",
    "tags": [
      {
        "id": "string",
        "name": "string",
        "color": "string"
      }
    ],
    "todos": [
      {
        "id": "string",
        "text": "string",
        "complete": true,
        "createDate": "2024-01-15T09:30:00Z",
        "modifyDate": "2024-01-15T09:30:00Z"
      }
    ],
    "createDate": "2024-01-15T09:30:00Z",
    "owner": {
      "id": "string",
      "initials": "string",
      "name": "string",
      "shortName": "string",
      "firstName": "string",
      "lastName": "string",
      "email": "string",
      "isActive": true,
      "color": "string",
      "avatarUrl": "string"
    },
    "ownerId": "string"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.projectmanager.com/api/data/non-project-tasks"

payload = { "name": "string" }
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript
const url = 'https://api.projectmanager.com/api/data/non-project-tasks';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"name":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

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

func main() {

	url := "https://api.projectmanager.com/api/data/non-project-tasks"

	payload := strings.NewReader("{\n  \"name\": \"string\"\n}")

	req, _ := http.NewRequest("POST", 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(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.projectmanager.com/api/data/non-project-tasks")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"string\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.projectmanager.com/api/data/non-project-tasks")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"string\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.projectmanager.com/api/data/non-project-tasks', [
  'body' => '{
  "name": "string"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.projectmanager.com/api/data/non-project-tasks");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"string\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = ["name": "string"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.projectmanager.com/api/data/non-project-tasks")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```