Action API
POST/listFieldsAPI v2

List fields

4 min readProjectsView as Markdown

POST /listFields

Get all custom fields for a project

Base URL: https://www.taskade.com/api/v2

Authentication

Send a personal access token or an OAuth 2.0 access token as a bearer token. Create a personal access token at taskade.com/settings/api.

Http
Authorization: Bearer tskdp_your_token_here

Request body

application/json

Field Type Required Description
projectId string Yes The project ID to get fields for

Example request

Bash
curl -X POST "https://www.taskade.com/api/v2/listFields" \
  -H "Authorization: Bearer $TASKADE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"<projectId>"}'

Responses

200 — Default response

Field Type Required Description
ok boolean Yes —
items object[] Yes —
items[].id string Yes —
items[].data object Yes —
items[].data.type string Yes Allowed values: boolean, Note, Timestamp, TimestampAt, TimestampAuthor, Select, number, string, Password, Rating, Relationship, Assign, DateTime, DateRange, Event, NodeText, NodeCompleted, Media, TimeTracking, Unimplemented.
items[].data.fillerConfig object No —
items[].data.fillerConfig.type string Yes Allowed values: string.translate, string.summarize, string.extract, string.custom, Select.pick.
items[].data.fillerConfig.sourceRef object Depends Required when type is string.translate, string.summarize, string.extract, or Select.pick.
items[].data.fillerConfig.sourceRef.type string Yes Allowed values: field.
items[].data.fillerConfig.sourceRef.fieldPath string Yes —
items[].data.fillerConfig.targetLang string Depends Required when type is string.translate.
items[].data.fillerConfig.additionalInstructions string No —
items[].data.fillerConfig.entity object Depends Required when type is string.extract.
items[].data.fillerConfig.entity.type string Yes Allowed values: email_address, first_name, last_name, phone_number, domain_name, link, date, time, year, custom.
items[].data.fillerConfig.entity.instructions string Depends Required when type is custom.
items[].data.fillerConfig.instructions string Depends Required when type is string.custom.
items[].data.fillerConfig.permittedOptionIds string[] Depends Required when type is Select.pick.
items[].data.displayName string Depends Required when type is Select, number, string, Rating, Relationship, or TimeTracking.
items[].data.description string No —
items[].data.options object Depends Required when type is Select.
items[].data.defaultOption string No —
items[].data.render object Depends Required when type is number.
items[].data.render.type string Yes Allowed values: text.
items[].data.format object Depends Required when type is number.
items[].data.format.type string Yes Allowed values: decimal, currency, unit.
items[].data.format.config object Depends Required when type is currency or unit.
items[].data.format.config.type string Yes Allowed values: standard.
items[].data.format.config.code string Yes —
items[].data.constraints object No —
items[].data.constraints.unique object No —
items[].data.constraints.unique.type string Yes Allowed values: unique.
items[].data.title string No —
items[].data.hashAlgorithm string No Allowed values: bcrypt, argon2, scrypt, pbkdf2.
items[].data.minLength integer No —
items[].data.maxLength integer No —
items[].data.max integer No —
items[].data.icon string No Allowed values: star, heart.

A nested field marked Yes is required whenever its parent object is present.

Errors

Errors return an ok: false envelope. Rate limiting returns 429 with x-rate-limit-limit, x-rate-limit-remaining and x-rate-limit-reset headers. x-rate-limit-reset is the number of seconds until the window reopens. Retry-After is not sent, so schedule retries from x-rate-limit-reset; retrying sooner will fail again.

Json
{ "ok": false, "message": "Unauthorized", "code": "UNAUTHORIZED" }

Rate limits for this version: enforced per endpoint; ceilings are not published and can change without notice. A 429 response carries x-rate-limit-limit, x-rate-limit-remaining, and x-rate-limit-reset (seconds until the window reopens). Back off from those headers rather than hardcoding numbers. If you need sustained throughput, prefer batching (operations like /createTask accept arrays) over tightening polling loops. See Rate limits.