## TL;DR

Your Asana workspace is on the free tier and custom fields are a paid feature. The 400 with premium_only means the call itself is fine; the workspace cannot use the feature. Either upgrade the workspace or drop custom fields from the payload. Code-side, detect the error and degrade gracefully on free workspaces.

The call is correct. The plan is not.

## Verbatim query

```text
asana API 400: premium_only custom fields require a premium workspace
```

## Steps

1. Confirm the workspace tier
   Look up the workspace the API token belongs to and check its plan in Asana.
   Expected: You can state plainly whether the workspace is free or paid.

2. Decide: upgrade or redesign the payload
   If the integration needs custom fields, the workspace needs a paid plan. If not, move on to step 3.
   Expected: A clear decision recorded before touching code.

3. Remap custom fields to built-in fields or external storage
   Map each custom field to a built-in field like notes or tags, or store the data outside Asana and link to it.
   Expected: The payload no longer includes any custom field writes.

4. Re-run the task creation or update
   Send the redesigned payload and confirm it succeeds.
   Expected: 200 or 201 with no premium_only error.

5. Add a capability check to the generated client
   Catch premium_only and fall back to the built-in-field payload automatically, with a logged note that custom fields were skipped.
   Expected: The client works on free workspaces instead of crashing.

## Use this when

- Asana returns 400 premium_only on any request that writes custom fields.
- A generated client assumes premium features exist on the target workspace.
- The same code works on one workspace and fails on another.

## Not for this skill when

- The 400 is about something else entirely, like a bad assignee or invalid dates.
- The failure is a 401 or 403 authentication problem.
- Tasks fail to create for reasons unrelated to custom fields.

## Variant phrasings

### premium_only on custom field settings

Reading or writing custom field settings on a free workspace returns the same gate. Same fix: upgrade or stop touching custom fields.

### "Custom fields are available on paid plans"

The docs wording of the same restriction. If your client hits this message, this skill applies.

## Why it happens

Asana gates custom fields at the workspace tier, not at the API key. Generated clients are usually built and tested against a paid workspace, then deployed against a free one. The code never changes; the plan does. Nothing in the error says "your code is wrong," because it is not.

## Edge cases

- A workspace upgraded mid-project starts accepting custom fields; a client that cached the failure should retry rather than permanently degrade.
- Guest users may not see custom fields even on paid workspaces; that is a permissions shape, not this error.
- Project-level and workspace-level custom fields behave the same under the tier gate.
- Test against the tier you will deploy to. Sandbox on paid, production on free is a classic way to ship this bug.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_IqeJagtlXAlG3szIuSvahw
