Factuarea APIDevelopers

Tasks error codes

Every public API error code emitted by Tasks, with its HTTP status, its type and a page per code.

Error codes emitted by Tasks. Each code links to its own page with the cause and the action to take.

CodeTypeHTTPDescription
bulk_task_selection_too_largeinvalid_request_error422The bulk operation includes more tasks than a single batch allows (200 by default; the message states the current ceiling). It is not a request limit or a plan limit: it bounds what is processed at once.
column_has_tasksconflict_error409The column you are trying to delete still holds tasks and the request does not say where to move them. To avoid leaving tasks without a place on the board, the deletion is rejected and nothing was changed.
column_slug_in_useconflict_error409Another column of the same project already has an equivalent name. The comparison uses the identifier derived from the name, so two names that differ only in case or punctuation still collide.
column_slug_reservedinvalid_request_error422The column name translates into the identifier planned or archived, which are reserved for the statuses of tasks that sit outside the board. Such a column would be indistinguishable from those statuses.
invalid_custom_field_definitioninvalid_request_error422The custom field definition is not valid: name outside 1 to 60 characters, unknown type, required field without a default value, options on a type that does not accept them, type change after creation, removing an option that tasks use, or an incomplete reordering. error.param points at the exact item.
invalid_custom_field_valueinvalid_request_error422The value does not fit the custom field type —for example, text in a numeric field or an option that is not in the list— or the field does not belong to the task's project.
invalid_move_target_columninvalid_request_error422The column given to receive the tasks is not a valid target: it does not exist, belongs to another project or is the very column being deleted. The deletion was not performed.
invalid_task_keyinvalid_request_error422The task key is not shaped KEY-N —project key, hyphen and number, such as WEB-42— or the task number is not a positive integer.
invalid_task_referenceinvalid_request_error422A task referenced in the request body does not exist or belongs to another company; both cases answer the same. error.param names the field that held the reference.
invalid_task_scheduleinvalid_request_error422The task dates are not consistent: the start date is later than the due date, or one of them does not exist in the calendar (for example, 30 February).
invalid_task_statusinvalid_request_error422The task target is not valid: the status does not exist, the transition is not allowed, a column and a status are sent together, the column is not in the task's project, or a column is given for a planned or archived task. A task on the board always has a column and one outside it never does.
invalid_time_entry_periodinvalid_request_error422The time entry period is not valid: the end is before the start, it lasts more than 24 hours, the start is more than one day in the future, a date is invalid, the end of a closed entry is being removed, or the times of a still-running entry are being changed.
limit_exceededpayment_required_error402The company has reached its plan limit of invoices or annual documents; the message says which. In the v1 API it is emitted by time invoicing (POST /v1/projects/{project}/time-invoices), which checks it before creating anything: no draft invoice was generated and no hours were marked as invoiced.
linked_entity_not_foundnot_found_error404The entity to link does not exist, belongs to another company or belongs to a module the company has not subscribed to; all three cases answer the same. It happens when linking (POST /v1/tasks/{task}/entity-links) and also when creating a task with entity_link in POST /v1/tasks: in that case the task is NOT created.
project_archivedinvalid_request_error422The project is archived and accepts neither new tasks nor tasks being moved into it. Archiving freezes the project without deleting it.
project_column_not_foundnot_found_error404The column does not exist, belongs to another project or belongs to another company; all three cases answer the same. A column is only addressable inside the project that contains it.
project_has_no_columnsinvalid_request_error422The task is being placed on the board, but the project has no column to put it in. An active task always lives in a column.
project_key_in_useconflict_error409The short key is already used by another project of the company, or is still reserved as the former key of a project that changed it. The key names the tasks (WEB-42), so it cannot repeat within the company.
project_not_foundnot_found_error404There is no project with that identifier or key in the authenticated company. A project belonging to another company answers exactly the same, so the response never reveals whether it exists elsewhere.
required_custom_field_missinginvalid_request_error422A value is missing for a custom field that the project declares as required; the message names the field. A required field cannot be left empty.
task_already_in_projectinvalid_request_error422The task is being moved to the project it is already in, so there is no move to make.
task_assignee_not_memberinvalid_request_error422The user given as assignee is not a member of the company. A non-existent user, one from another company or one without membership all answer the same, so that other accounts are not revealed.
task_attachment_not_foundnot_found_error404The attachment does not exist, belongs to another task or belongs to another company; all three cases answer the same. A deleted attachment can no longer be read or downloaded.
task_attachment_rejectedinvalid_request_error422The file is not accepted as an attachment: it is empty, exceeds 10 MB, or its real type —detected from its content (magic bytes), not from the extension or the header— is not allowed. A surface other than description or comment is also rejected.
task_calendar_feed_not_foundnot_found_error404The calendar feed (iCal) does not exist, is revoked, belongs to another company or is another user's personal feed; all cases answer the same. Only the web application emits it when rotating or revoking feeds, not the v1 API.
task_column_capacity_exceededconflict_error409The board scope —the column, or the planned or archived status— has run out of the position range used to order its tasks. It is not a plan limit or a permission problem, but the technical ordering ceiling of that scope.
task_comment_not_editableinvalid_request_error422The comment cannot be edited: only its author can change it, and comments imported or brought in by an integration are immutable to preserve what the source said.
task_comment_not_foundnot_found_error404The comment does not exist, belongs to another task or belongs to another company; all three cases answer the same. A comment is only addressable under the task it was written on.
task_custom_field_not_foundnot_found_error404The custom field does not exist, belongs to another project or belongs to another company; all three cases answer the same. Each project defines its own fields.
task_description_too_largeinvalid_request_error422The description exceeds the maximum of 100,000 characters, counted on the submitted Markdown before it is sanitised. The ceiling does not depend on the plan: it protects the editor and storage.
task_entity_link_not_foundnot_found_error404The link between the task and a document, contact, product or employee does not exist, belongs to another task or belongs to another company; all three cases answer the same.
task_external_link_not_foundnot_found_error404The external link does not exist, belongs to another task or belongs to another company. A link maintained by an integration (a forge issue or pull request) also answers this way when it is managed as if it were a manual link.
task_label_name_in_useconflict_error409The company already has a label with that name; the comparison is case-insensitive. Labels are shared across all the company's projects.
task_label_not_foundnot_found_error404There is no label with that identifier in the authenticated company; a label of another company answers the same. Labels belong to the company, not to a specific project.
task_not_foundnot_found_error404There is no task with that identifier or key in the authenticated company. A task of another company —or, in the employee portal, one not assigned to the caller— answers exactly the same.
task_relation_cycleinvalid_request_error422The relation would close a cycle of subtasks or blockers: the target task already depends, directly or indirectly, on the source one, and neither could be completed first.
task_relation_existsconflict_error409These two tasks already have a relation of the same type, in either direction. Repeating it would add no information, so a second one is not created.
task_relation_not_foundnot_found_error404There is no relation with that identifier between tasks of the authenticated company; a relation of another company, or one already deleted, answers the same.
task_self_relationinvalid_request_error422The source and target tasks are the same, and a task cannot be related to itself.
task_time_entry_invoicedinvalid_request_error422The time entry is already included in an invoice. While it stays linked it cannot be edited or invoiced again, so that the invoice and the hours do not contradict each other.
task_time_entry_not_foundnot_found_error404The time entry does not exist, belongs to another task or belongs to another company; all three cases answer the same.
task_time_not_invoiceableinvalid_request_error422The requested hours cannot be invoiced and the message names the reason: the project has no billing client or that client no longer accepts invoices, there is no hourly rate or priced product, an entry is not billable, is running or belongs to another project, there are no billable entries, or the selection is ambiguous.
task_timer_already_runningconflict_error409You already have a running timer in this company. Each user can have at most one at a time per company, so that recorded time does not overlap between tasks.
task_timer_not_runninginvalid_request_error422A timer stop was requested, but you have no running timer in this company; it may already have been stopped from another session or device.
task_upload_link_expiredinvalid_request_error410The upload link no longer works. The subcode says why: expired, because the link timed out (it lives 30 minutes from creation), or consumed, because it was already used once and each link accepts a single submission.
task_upload_link_not_foundnot_found_error404The upload link is not valid: the token is malformed or matches no link, almost always because it was copied incompletely. An expired or already used link answers with task_upload_link_expired instead.

On this page

Need a hand?Contact support