For the complete documentation index, see llms.txt. This page is also available as Markdown.

Tasks & Projects

Get all tasks

get

Returns a paginated list of tasks for the organization.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Query parameters
cursorstringOptional

The cursor to use for pagination.

limitinteger · int64Optional

The number of tasks to fetch. Defaults to 100. Must be greater than 0 and less than 1000.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

get/tasks
GET /tasks HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": [
    {
      "account": {
        "external_ids": [
          {
            "external_id": "text",
            "label": "text"
          }
        ],
        "id": "text"
      },
      "assignee": {
        "contact": {
          "email": "text",
          "id": "text"
        },
        "user": {
          "email": "text",
          "id": "text"
        }
      },
      "body_html": "text",
      "created_at": "text",
      "custom_fields": {
        "priority": {
          "value": "high"
        }
      },
      "customer_portal_visible": true,
      "due_date": "text",
      "external_issues": [
        {
          "external_id": "text",
          "link": "text",
          "source": "text"
        }
      ],
      "id": "text",
      "linked_issues": [
        {
          "id": "text",
          "number": 1,
          "title": "text"
        }
      ],
      "milestone": {
        "id": "text"
      },
      "parent_task_id": "text",
      "project": {
        "id": "text"
      },
      "status": "text",
      "subtask_ids": [
        "text"
      ],
      "title": "text",
      "updated_at": "text"
    }
  ],
  "pagination": {
    "cursor": "text",
    "has_next_page": true
  },
  "request_id": "text"
}

Get a task by its ID

get

Returns a single task by ID.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to fetch.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

get/tasks/{id}
GET /tasks/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "assignee": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "custom_fields": {
      "priority": {
        "value": "high"
      }
    },
    "customer_portal_visible": true,
    "due_date": "text",
    "external_issues": [
      {
        "external_id": "text",
        "link": "text",
        "source": "text"
      }
    ],
    "id": "text",
    "linked_issues": [
      {
        "id": "text",
        "number": 1,
        "title": "text"
      }
    ],
    "milestone": {
      "id": "text"
    },
    "parent_task_id": "text",
    "project": {
      "id": "text"
    },
    "status": "text",
    "subtask_ids": [
      "text"
    ],
    "title": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Get comments for a task

get

Returns all comments for a task, ordered by creation time.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to fetch comments for.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

get/tasks/{id}/comments
GET /tasks/{id}/comments HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": [
    {
      "author": {
        "contact": {
          "email": "text",
          "id": "text"
        },
        "user": {
          "email": "text",
          "id": "text"
        }
      },
      "body_html": "text",
      "created_at": "text",
      "id": "text",
      "is_internal": true,
      "last_edited_at": "text",
      "task_id": "text",
      "updated_at": "text"
    }
  ],
  "request_id": "text"
}

Create a comment on a task

post

Creates a new comment on a task. The authenticated user is the author.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to add a comment to.

Body
body_htmlstringRequired

The body of the comment in HTML format.

is_internalbooleanOptional

Whether the comment is visible only to internal users.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

post/tasks/{id}/comments
POST /tasks/{id}/comments HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "body_html": "text",
  "is_internal": true
}
{
  "data": {
    "author": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "id": "text",
    "is_internal": true,
    "last_edited_at": "text",
    "task_id": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Update a comment on a task

patch

Updates an existing comment. Only the original author can update their comment.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task.

comment_idstringRequired

The ID of the comment to update.

Body
body_htmlstringRequired

The updated body of the comment in HTML format.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

patch/tasks/{id}/comments/{comment_id}
PATCH /tasks/{id}/comments/{comment_id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 20

{
  "body_html": "text"
}
{
  "data": {
    "author": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "id": "text",
    "is_internal": true,
    "last_edited_at": "text",
    "task_id": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Delete a comment on a task

delete

Deletes an existing comment. Only the original author can delete their comment.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task.

comment_idstringRequired

The ID of the comment to delete.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

delete/tasks/{id}/comments/{comment_id}
DELETE /tasks/{id}/comments/{comment_id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "request_id": "text"
}

Search for tasks by a given filter

post

Filterable fields and their allowed operators:

Field
Allowed operators

account_id

equals, in, not_in, is_set

project_id

equals, in, not_in, is_set, is_unset

status

equals, in, not_in

assignee_id

equals, in, not_in, is_set

milestone_id

equals, in, not_in, is_set

created_at

time_is_after, time_is_before, time_range

due_date

time_is_after, time_is_before, time_range, is_set

updated_at

time_is_after, time_is_before, time_range

Timestamp values use RFC3339 format. Valid status values are not_started, in_progress, and completed. For custom fields, pass the field slug as field.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Body
cursorstringOptional

The cursor to use for pagination.

limitinteger · int64Optional

The number of tasks to fetch. Defaults to 100. Must be greater than 0 and less than 1000.

Responses
200Success
application/json
request_idstringOptional
post/tasks/search
POST /tasks/search HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 173

{
  "cursor": "text",
  "filter": {
    "field": "text",
    "operator": "equals",
    "subfilters": [
      {
        "field": "state",
        "operator": "equals",
        "value": "new"
      }
    ],
    "value": "text",
    "values": [
      "text"
    ]
  },
  "limit": 1
}
{
  "data": [
    {
      "account": {
        "external_ids": [
          {
            "external_id": "text",
            "label": "text"
          }
        ],
        "id": "text"
      },
      "assignee": {
        "contact": {
          "email": "text",
          "id": "text"
        },
        "user": {
          "email": "text",
          "id": "text"
        }
      },
      "body_html": "text",
      "created_at": "text",
      "custom_fields": {
        "priority": {
          "value": "high"
        }
      },
      "customer_portal_visible": true,
      "due_date": "text",
      "external_issues": [
        {
          "external_id": "text",
          "link": "text",
          "source": "text"
        }
      ],
      "id": "text",
      "linked_issues": [
        {
          "id": "text",
          "number": 1,
          "title": "text"
        }
      ],
      "milestone": {
        "id": "text"
      },
      "parent_task_id": "text",
      "project": {
        "id": "text"
      },
      "status": "text",
      "subtask_ids": [
        "text"
      ],
      "title": "text",
      "updated_at": "text"
    }
  ],
  "pagination": {
    "cursor": "text",
    "has_next_page": true
  },
  "request_id": "text"
}

Create a task

post

Creates a new task with a title and optional metadata.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Body
account_idstringOptional

Account ID for this task

assignee_idstringOptional

Assignee ID for this task

body_htmlstringOptional

Body HTML for this task

customer_portal_visiblebooleanOptional

Customer portal visible for this task

Default: false
due_datestringOptional

Due date for this task, in RFC 3339 format

milestone_idstringOptional

Milestone ID for this task

parent_task_idstringOptional

Parent task ID, to create this task as a subtask

project_idstringOptional

Project ID for this task

statusstringOptional
titlestringRequired

Title for this task

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

post/tasks
POST /tasks HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 275

{
  "account_id": "text",
  "assignee_id": "text",
  "body_html": "text",
  "custom_fields": [
    {
      "slug": "text",
      "value": "text",
      "values": [
        "text"
      ]
    }
  ],
  "customer_portal_visible": false,
  "due_date": "text",
  "milestone_id": "text",
  "parent_task_id": "text",
  "project_id": "text",
  "status": "text",
  "title": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "assignee": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "custom_fields": {
      "priority": {
        "value": "high"
      }
    },
    "customer_portal_visible": true,
    "due_date": "text",
    "external_issues": [
      {
        "external_id": "text",
        "link": "text",
        "source": "text"
      }
    ],
    "id": "text",
    "linked_issues": [
      {
        "id": "text",
        "number": 1,
        "title": "text"
      }
    ],
    "milestone": {
      "id": "text"
    },
    "parent_task_id": "text",
    "project": {
      "id": "text"
    },
    "status": "text",
    "subtask_ids": [
      "text"
    ],
    "title": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Update a task

patch

Updates an existing task. Only provided fields are modified.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to update.

Body
assignee_idstringOptional

Assignee ID for this task

body_htmlstringOptional

Body HTML for this task

customer_portal_visiblebooleanOptional

Customer portal visible for this task

due_datestringOptional

Due date for this task, in RFC 3339 format

milestone_idstringOptional

Milestone ID for this task

project_idstringOptional

Project ID for this task

statusstringOptional
titlestringOptional

Title for this task

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

patch/tasks/{id}
PATCH /tasks/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 230

{
  "assignee_id": "text",
  "body_html": "text",
  "custom_fields": [
    {
      "slug": "text",
      "value": "text",
      "values": [
        "text"
      ]
    }
  ],
  "customer_portal_visible": true,
  "due_date": "text",
  "milestone_id": "text",
  "project_id": "text",
  "status": "text",
  "title": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "assignee": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "custom_fields": {
      "priority": {
        "value": "high"
      }
    },
    "customer_portal_visible": true,
    "due_date": "text",
    "external_issues": [
      {
        "external_id": "text",
        "link": "text",
        "source": "text"
      }
    ],
    "id": "text",
    "linked_issues": [
      {
        "id": "text",
        "number": 1,
        "title": "text"
      }
    ],
    "milestone": {
      "id": "text"
    },
    "parent_task_id": "text",
    "project": {
      "id": "text"
    },
    "status": "text",
    "subtask_ids": [
      "text"
    ],
    "title": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Delete an existing task

delete

Permanently deletes a task by ID.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to delete.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

delete/tasks/{id}
DELETE /tasks/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "request_id": "text"
}

Link or unlink an external issue to/from a task

post

By default, links the external issue. To unlink it, set the operation field to "unlink". Repeating the same link request is a successful no-op.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to link an external issue to.

Body
external_issue_idstringRequired

The ID or human-readable key of the external issue in the source system.

operationstringOptional

Operation to perform. Use "link" to link the issue (default) or "unlink" to unlink it.

sourcestringRequired

The source system of the external issue (e.g., "linear", "asana", "jira", "github", "shortcut").

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

post/tasks/{id}/external-issues
POST /tasks/{id}/external-issues HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 63

{
  "external_issue_id": "text",
  "operation": "text",
  "source": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "assignee": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "custom_fields": {
      "priority": {
        "value": "high"
      }
    },
    "customer_portal_visible": true,
    "due_date": "text",
    "external_issues": [
      {
        "external_id": "text",
        "link": "text",
        "source": "text"
      }
    ],
    "id": "text",
    "linked_issues": [
      {
        "id": "text",
        "number": 1,
        "title": "text"
      }
    ],
    "milestone": {
      "id": "text"
    },
    "parent_task_id": "text",
    "project": {
      "id": "text"
    },
    "status": "text",
    "subtask_ids": [
      "text"
    ],
    "title": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Link or unlink a Pylon issue to/from a task

post

Links the issue to the task by default. To unlink it, set the operation field to "unlink".

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the task to link a Pylon issue to.

Body
issue_idstringRequired

The ID of the Pylon issue.

operationstringOptional

Operation to perform. Use "link" to link the issue (default) or "unlink" to unlink it.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

post/tasks/{id}/issues
POST /tasks/{id}/issues HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "issue_id": "text",
  "operation": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "assignee": {
      "contact": {
        "email": "text",
        "id": "text"
      },
      "user": {
        "email": "text",
        "id": "text"
      }
    },
    "body_html": "text",
    "created_at": "text",
    "custom_fields": {
      "priority": {
        "value": "high"
      }
    },
    "customer_portal_visible": true,
    "due_date": "text",
    "external_issues": [
      {
        "external_id": "text",
        "link": "text",
        "source": "text"
      }
    ],
    "id": "text",
    "linked_issues": [
      {
        "id": "text",
        "number": 1,
        "title": "text"
      }
    ],
    "milestone": {
      "id": "text"
    },
    "parent_task_id": "text",
    "project": {
      "id": "text"
    },
    "status": "text",
    "subtask_ids": [
      "text"
    ],
    "title": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Get a project by its ID

get

Returns a single project by ID.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the project to fetch.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

get/projects/{id}
GET /projects/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "archived_at": "text",
    "created_at": "text",
    "custom_fields": {
      "health": {
        "value": "on_track"
      }
    },
    "customer_portal_visible": true,
    "description_html": "text",
    "end_date": "text",
    "id": "text",
    "is_archived": true,
    "name": "text",
    "owner_id": "text",
    "project_template": {
      "id": "text"
    },
    "start_date": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Search for projects by a given filter

post

Filterable fields and their allowed operators:

Field
Allowed operators

account_id

equals, in, not_in, is_set

status

equals, in, not_in

owner_id

equals, in, not_in, is_set, is_unset

is_archived

equals

created_at

time_is_after, time_is_before, time_range

updated_at

time_is_after, time_is_before, time_range

Timestamp values use RFC3339 format. Valid status values are not_started, in_progress, and completed. For custom fields, pass the field slug as field.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Body
cursorstringOptional

The cursor to use for pagination.

limitinteger · int64Optional

The number of projects to fetch. Defaults to 100. Must be greater than 0 and less than 1000.

Responses
200Success
application/json
request_idstringOptional
post/projects/search
POST /projects/search HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 173

{
  "cursor": "text",
  "filter": {
    "field": "text",
    "operator": "equals",
    "subfilters": [
      {
        "field": "state",
        "operator": "equals",
        "value": "new"
      }
    ],
    "value": "text",
    "values": [
      "text"
    ]
  },
  "limit": 1
}
{
  "data": [
    {
      "account": {
        "external_ids": [
          {
            "external_id": "text",
            "label": "text"
          }
        ],
        "id": "text"
      },
      "archived_at": "text",
      "created_at": "text",
      "custom_fields": {
        "health": {
          "value": "on_track"
        }
      },
      "customer_portal_visible": true,
      "description_html": "text",
      "end_date": "text",
      "id": "text",
      "is_archived": true,
      "name": "text",
      "owner_id": "text",
      "project_template": {
        "id": "text"
      },
      "start_date": "text",
      "updated_at": "text"
    }
  ],
  "pagination": {
    "cursor": "text",
    "has_next_page": true
  },
  "request_id": "text"
}

Update a project

patch

Updates an existing project. Only provided fields are modified.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the project to update.

Body
customer_portal_visiblebooleanOptional

Customer portal visible for this project

description_htmlstringOptional

Description HTML for this project

end_datestringOptional

End date for this project, in RFC 3339 format

is_archivedbooleanOptional

Whether the project is archived

namestringOptional

Name for this project

owner_idstringOptional

Owner ID for this project

start_datestringOptional

Start date for this project, in RFC 3339 format

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

patch/projects/{id}
PATCH /projects/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 214

{
  "custom_fields": [
    {
      "slug": "text",
      "value": "text",
      "values": [
        "text"
      ]
    }
  ],
  "customer_portal_visible": true,
  "description_html": "text",
  "end_date": "text",
  "is_archived": true,
  "name": "text",
  "owner_id": "text",
  "start_date": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "archived_at": "text",
    "created_at": "text",
    "custom_fields": {
      "health": {
        "value": "on_track"
      }
    },
    "customer_portal_visible": true,
    "description_html": "text",
    "end_date": "text",
    "id": "text",
    "is_archived": true,
    "name": "text",
    "owner_id": "text",
    "project_template": {
      "id": "text"
    },
    "start_date": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Delete an existing project

delete

Permanently deletes a project by ID.

Rate limit: 20 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the project to delete.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

delete/projects/{id}
DELETE /projects/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "request_id": "text"
}

Create a project

post

Creates a new project for an account. Provide a name or project_template_id. A template supplies defaults; non-empty name and description_html values and supplied customer_portal_visible and owner_id values override them. Supplying either start_date or end_date replaces both template dates.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Body
account_idstringRequired

Account ID for this project

customer_portal_visiblebooleanOptional

Customer portal visible for this project

Default: false
description_htmlstringOptional

Description HTML for this project

end_datestringOptional

End date for this project, in RFC 3339 format

namestringOptional

Name for this project. Required unless project_template_id is provided. When both are provided, this name overrides the template's name.

owner_idstringOptional

Owner ID for this project

project_template_idstringOptional

Project template ID for this project. When provided, it supplies defaults; non-empty name and description_html values and supplied customer_portal_visible and owner_id values override them. Supplying either start_date or end_date replaces both template dates.

start_datestringOptional

Start date for this project, in RFC 3339 format

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

post/projects
POST /projects HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 178

{
  "account_id": "text",
  "customer_portal_visible": false,
  "description_html": "text",
  "end_date": "text",
  "name": "text",
  "owner_id": "text",
  "project_template_id": "text",
  "start_date": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "archived_at": "text",
    "created_at": "text",
    "custom_fields": {
      "health": {
        "value": "on_track"
      }
    },
    "customer_portal_visible": true,
    "description_html": "text",
    "end_date": "text",
    "id": "text",
    "is_archived": true,
    "name": "text",
    "owner_id": "text",
    "project_template": {
      "id": "text"
    },
    "start_date": "text",
    "updated_at": "text"
  },
  "request_id": "text"
}

Get a milestone by its ID

get

Returns a single milestone by ID.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the milestone to fetch.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

get/milestones/{id}
GET /milestones/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "created_at": "text",
    "due_date": "text",
    "id": "text",
    "name": "text",
    "project": {
      "id": "text"
    },
    "updated_at": "text"
  },
  "request_id": "text"
}

Update a milestone

patch

Updates an existing milestone. Only provided fields are modified.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the milestone to update.

Body
due_datestringOptional

Due date for this milestone, in RFC 3339 format

namestringOptional

Name for this milestone

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

patch/milestones/{id}
PATCH /milestones/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 33

{
  "due_date": "text",
  "name": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "created_at": "text",
    "due_date": "text",
    "id": "text",
    "name": "text",
    "project": {
      "id": "text"
    },
    "updated_at": "text"
  },
  "request_id": "text"
}

Create a milestone

post

Creates a new milestone within a project.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Body
account_idstringOptional

Account ID for this project

due_datestringOptional

Due date for this milestone, in RFC 3339 format

namestringRequired

Name for this milestone

project_idstringRequired

Project ID for this milestone

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

post/milestones
POST /milestones HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 73

{
  "account_id": "text",
  "due_date": "text",
  "name": "text",
  "project_id": "text"
}
{
  "data": {
    "account": {
      "external_ids": [
        {
          "external_id": "text",
          "label": "text"
        }
      ],
      "id": "text"
    },
    "created_at": "text",
    "due_date": "text",
    "id": "text",
    "name": "text",
    "project": {
      "id": "text"
    },
    "updated_at": "text"
  },
  "request_id": "text"
}

Delete a milestone

delete

Permanently deletes a milestone by ID.

Rate limit: 60 requests per minute

Authorizations
AuthorizationstringRequired

Authorization: Bearer

Path parameters
idstringRequired

The ID of the milestone to delete.

Responses
200Success
application/json
request_idstringOptional

The request ID for tracking.

delete/milestones/{id}
DELETE /milestones/{id} HTTP/1.1
Host: api.usepylon.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "request_id": "text"
}

Last updated

Was this helpful?