Hello, I'm encountering an issue with my callin.io workflow when trying to retrieve data from my Airtable base. I'm unsure why this is happening, as the workflow is successfully creating new records. I've ensured all available permissions are granted. The table is currently empty, but I've also tested it with existing data. The error message I'm receiving for data retrieval is:
Forbidden - perhaps check your credentials? Invalid permissions, or the requested model was not found. Check that both your user and your token have the required permissions, and that the model names and/or ids are correct.
json
{
"errorMessage": "Forbidden - perhaps check your credentials?",
"errorDescription": "Invalid permissions, or the requested model was not found. Check that both your user and your token have the required permissions, and that the model names and/or ids are correct.",
"errorDetails": {
"rawErrorMessage": [
"403 - {"error":{"type":"INVALID_PERMISSIONS_OR_MODEL_NOT_FOUND","message":"Invalid permissions, or the requested model was not found. Check that both your user and your token have the required permissions, and that the model names and/or ids are correct."}}"
],
"httpCode": "403"
},
"n8nDetails": {
"nodeName": "Get LinkedIn Comp. URL",
"nodeType": "n8n-nodes-base.airtable",
"nodeVersion": 2.1,
"resource": "record",
"operation": "get",
"itemIndex": 0,
"time": "12/03/2025, 12:31:16",
"n8nVersion": "1.81.4 (Cloud)",
"binaryDataMode": "filesystem",
"stackTrace": [
"NodeApiError: Forbidden - perhaps check your credentials?",
" at ExecuteContext.requestWithAuthentication (/usr/local/lib/node_modules/n8n/node_modules/n8n-core/dist/execution-engine/node-execution-context/utils/request-helper-functions.js:991:19)",
" at processTicksAndRejections (node:internal/process/task_queues:95:5)",
" at ExecuteContext.requestWithAuthentication (/usr/local/lib/node_modules/n8n/node_modules/n8n-core/dist/execution-engine/node-execution-context/utils/request-helper-functions.js:1147:20)",
" at ExecuteContext.apiRequest (/usr/local/lib/node_modules/n8n/node_modules/n8n-nodes-base/dist/nodes/Airtable/v2/transport/index.js:27:12)",
" at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/n8n-nodes-base/dist/nodes/Airtable/v2/actions/record/get.operation.js:53:34)",
" at ExecuteContext.router (/usr/local/lib/node_modules/n8n/node_modules/n8n-nodes-base/dist/nodes/Airtable/v2/actions/router.js:58:30)",
" at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/n8n-nodes-base/dist/nodes/Airtable/v2/AirtableV2.node.js:21:16)",
" at WorkflowExecute.runNode (/usr/local/lib/node_modules/n8n/node_modules/n8n-core/dist/execution-engine/workflow-execute.js:660:19)",
" at /usr/local/lib/node_modules/n8n/node_modules/n8n-core/dist/execution-engine/workflow-execute.js:891:51",
" at /usr/local/lib/node_modules/n8n/node_modules/n8n-core/dist/execution-engine/workflow-execute.js:1224:20"
]
}
}
Information on your callin.io setup
- callin.io version: callin.io@1.81.4
- Database (default: SQLite): SQLite
- callin.io EXECUTIONS_PROCESS setting (default: own, main): own, main
- Running callin.io via (Docker, npm, callin.io cloud, desktop app): callin.io cloud
- Operating system: MacOS
Hello,
Welcome to the community!
Have you reviewed the permission scopes for your Airtable Personal Access Token?
https://airtable.com/create/tokens
As per the callin.io docs, the suggested scopes are:
data.records:read
data.records:write
schema.bases:read
A 403 error typically indicates a permission problem with the token you're utilizing for the integration.
Hello Ventsislav,
yes, as I mentioned, I've granted all scopes and full access.
Hi, could you please copy and paste your entire workflow into the field that appears when you click the ‘</>’ button on the forums?
Could we see (remove/blur PIIs) your authentication setup page?
Apologies, but I'm not quite sure how to copy a complete workflow as code.
Could you specify which authentication setup page you're referring to?
You can simply use Ctrl+A, Ctrl+C (or Cmd+A, Cmd+C) to copy the entire configuration. Unless they are hardcoded, it will automatically remove any private credentials.
For Airtable, please ensure you blur or remove half of any visible keys on the credentials page. Is that where the issue is occurring?
Could you try fetching a different record?
Attempt a more straightforward request, such as retrieving a Base rather than a specific record.
If this succeeds, the record ID is likely incorrect.
If this response resolves your query, please consider marking it as the solution.
Could you clarify where I'd typically find the correct record ID? That might be the issue. I obtained the workflow by downloading the JSON file from another user.
- Navigate to your Airtable homepage.
- Locate and open your desired base.
- Click the + symbol next to the table you want to modify.
- Choose the Formula field type and input
RECORD_ID()
. - Select Create field.
If my response resolves your query, please consider marking it as a solution.
Were you able to successfully retrieve the correct ID and execute that node?
If so, to get a record ID, you would need to search for it using the "Search record" node.
You will need to configure your search filters:
.
If my response resolves your query, please consider marking it as a solution.
No, unfortunately I'm still encountering the same permission error, even though I've entered the record ID I created in Airtable into the callin.io Airtable node.
Do you have any other suggestions?
I recreated a new Access Token in Airtable to be certain and re-entered it into the Airtable node, but that doesn't seem to be the issue.
That's quite unusual.
Could you attempt to create a custom HTTP Request for that specific API function?
Ask ChatGPT to provide you with the HTTP request details:
- method
- URL
- Header
- Body
Then, input these values into an HTTP Request node.
Are other requests using the Airtable nodes functioning correctly? For instance, can you retrieve multiple records from a base?
I believe the implementation in callin.io is incorrect.
This is because:
- It mandates retrieving records by ID (a GET Request only offers the option to find records by “Record ID”).
- However, record IDs in Airtable are generated; they function as surrogate keys. As a database designer, you wouldn't know these IDs unless you had already found the record and inspected that specific column.
The callin.io Airtable integration ought to permit looking up a record by any primary key (PK) field.
Airtable refers to these as "Primary Field," not Primary Key.
Currently, this functionality is not available (unless you utilize the HTTP GET Node instead of the Airtable node, which defeats the purpose of having a dedicated Airtable Node in callin.io).
Therefore, my suggested implementation would be to allow users to select the field by which they want to retrieve records after they've chosen the table. This selection wouldn't even be limited to PK fields.
The current method, which only allows searching by a record ID that is unknown, appears to be of limited use.