# `api.jobs.timeline.create_task` > `POST /job/{jobDisplayId}/timeline` — ACPortal **Python** ```python api.jobs.timeline.create_task(job_display_id: int, *, data: BaseTimelineTaskRequest | dict, create_email: bool | None = None) -> TimelineSaveResponse ``` **CLI** ```bash ab jobs timeline create_task [--data ...] [--create-email ...] ``` ``POST /job/{jobDisplayId}/timeline`` — create or update a task. Args: job_display_id: Job display ID. data: Task request model instance or dict with ``taskCode`` and task-code-specific fields. create_email: Send status notification email (query param). ## Query parameters — `TimelineCreateParams` | Field | Type | Required | Description | |---|---|---|---| | `createEmail` | `Optional[bool]` | no | Send status notification email | ## Response Returns `TimelineSaveResponse`. | Field | Type | Required | Description | |---|---|---|---| | `success` | `Optional[bool]` | no | Operation success flag | | `errorMessage` | `Optional[str]` | no | Error message if failed | | `taskExists` | `Optional[bool]` | no | Whether task already existed | | `task` | `Optional[TimelineTask]` | no | Created or updated task | | `emailLogId` | `Optional[int]` | no | Email log ID if email sent | | `jobSubManagementStatus` | `Optional[dict]` | no | Updated job sub-management status | --- [← Back to api.jobs](../jobs.md)