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.
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
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.
{ "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.