Bug: Cannot create project-scoped Data Tables via Public API

Describe the problem/error/question

Creating data tables via the Public API ignores the projectId parameter and always creates the data table in Personal.
Data tables are purely project scoped, so there is no solution right now of creating data tables via API, breaking any automated production pipelines.

What is the error message (if any)?

No error messages, just a successful response that the data table is created in Personal projectId.

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

{
  "name": "Test Table",
  "columns": [
    {"name": "test_col", "type": "string"}
  ],
  "projectId": "ss9BIoHbHFHdweXS"
}

Sample output when creating data table to projectId ss9BIoHbHFHdweXS, it defaults back to Personal projectId 9lWqhstD7pl2mnMP

{
“updatedAt”: “2026-04-28T04:35:17.339Z”,
“createdAt”: “2026-04-28T04:35:17.339Z”,
“id”: “muNe4g4O6vERcOug”,
“name”: “Test Table”,
“projectId”: “9lWqhstD7pl2mnMP”,
“columns”: [
{
“updatedAt”: “2026-04-28T04:35:17.341Z”,
“createdAt”: “2026-04-28T04:35:17.341Z”,
“id”: “iyMCDMB1FsHUlpZE”,
“dataTableId”: “muNe4g4O6vERcOug”,
“name”: “test_col”,
“type”: “string”,
“index”: 0
}
]
}

Information on your n8n setup

Issue persists in both Cloud and Self-Hosted Enterprise.

  • n8n version: 2.15.1
  • Database (default: SQLite): default for cloud, RDS for self-hosted
  • n8n EXECUTIONS_PROCESS setting (default: own, main): default for cloud, workers for self-hosted
  • Running n8n via (Docker, npm, n8n cloud, desktop app): n8n cloud, eks for self-hosted
  • Operating system: macOS

Hey @selbainu,
welcome to the community,

based on what you shared, you’re probably not doing anything wrong.

If POST /api/v1/data-tables returns 200 OK but always sets projectId to your Personal project even when you pass a valid projectId, that’s a backend/API behavior. not a request-format issue.

The only thing is to double-check everythiing:

  • Make sure the projectId you’re sending is the actual project id (not a table/workflow id) and that the API key user is a member of that project (at least Viewer/Editor).
  • Try a “fresh minimal” request (just name + columns + projectId) like you already did, if it still lands in Personal, it confirms it’s not your payload.

let me know if it still failed or worked


curl https://my-personal-workflows.app.n8n.cloud/api/v1/data-tables \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'X-N8N-API-KEY: my-token-here' \
  --data '{
  "name": "customers",
  "projectId": "ss9BIoHbHFHdweXS",
  "columns": [
    {
      "name": "email",
      "type": "string"
    },
    {
      "name": "status",
      "type": "string"
    },
    {
      "name": "age",
      "type": "number"
    }
  ]
}'

Hi @Mayank1024 ! Confirming that I have the right projectId passed in the parameter. The API key has sufficient access and project is shared access to all members of the workspace just to be sure.

For the request, I’m testing it now using postman. Are we able set user in the request headers? I attached the above sample request in the Public API specs. I only saw X-N8N-API-KEY and currently have no way of setting the owner of the API key or user calling the request in the request headers.

Attaching here PRs that included creation of credentials and workflows inside projects via public API:

I have yet to find the PR for Data Table inside projects via Public API, even though the docs already have it.

Hi, the PR to support projectId for data tables was released with 2.18.0. Please let me know if the issue persists after an upgrade.

Our docs generally talk about the latest stable release - this is of course not ideal, sorry for the trouble.