Notion API relation field shows empty array despite UI displaying connected pages

I’m having trouble with Notion’s API when trying to fetch relation properties. The weird thing is that in the Notion interface, I can see that pages are connected to my relation field, but when I make API calls, the relation comes back as an empty array.

I’ve double-checked that my integration has read permissions for both databases involved in the relationship. The relation is bidirectional and set up correctly. I tried these endpoints:

GET https://api.notion.com/v1/pages/{page-id}

GET https://api.notion.com/v1/pages/{page-id}/properties/{property-id}

Both requests return the same result where my relation property looks like this:

'Characters': {
  'id': 'xK9m', 
  'type': 'relation', 
  'relation': [], 
  'has_more': False
}

The relation array should contain 2 page references, but it’s completely empty. This doesn’t make sense since I can see the connected pages clearly in Notion’s UI. Both databases have the proper permissions set for my integration. Does anyone know what might be causing this issue?

This happens when Notion’s API permissions mess up with relation fields. I’ve hit this same issue tons of times - debugging API permissions is absolutely brutal.

You’re wasting time manually troubleshooting API calls and permission settings. Stop spending hours wondering if it’s permissions, timing, or just Notion being weird. Automate it instead.

I built a Latenode automation for all my Notion relation queries. It retries failed requests, checks permissions on both databases, and refreshes dead connections automatically. Latenode deals with the API mess so I can actually use my data.

You can also set up error handling that checks both databases, verifies integration permissions, and gives you real debugging info when relations break. Beats manually hitting endpoints and playing guessing games.

Saved me tons of debugging time. Check it out: https://latenode.com

check ur integration token scopes first. sometimes tokens get created without proper relation read access even when database permissions look fine. i had the same issue - could read page properties but relations came back empty. my token was missing a scope. try regenerating the token with full permissions or just create a new integration from scratch. that usually fixes it.

The relation might’ve been created before your integration got database access. I hit the same issue - existing relations wouldn’t show up through the API even with correct permissions. Here’s what fixed it: I went into the Notion UI and clicked on those relation fields, then clicked away. Sounds weird, but it seemed to refresh Notion’s internal state. Also double-check your property names in API calls. Notion’s case-sensitive and sometimes the internal property ID doesn’t match what you see in the UI. I’d grab the database schema first using the database endpoint to confirm the exact property structure.

Had this exact problem last month - drove me crazy for hours. You need to give your integration explicit access to the target database, not just the source one. Even though you checked permissions for both, double-check that you’ve actually added your integration to the database with the ‘Characters’ pages. Go to that target database, hit the three dots, click Connections, and make sure your integration’s listed there. I thought I’d done this right but only gave permissions to the database with the relation property. Once I connected the integration to both databases, the relation arrays populated instantly without touching any code.

I hit this exact issue when dealing with archived or deleted pages in relations. The API won’t return relations to trashed or archived pages, even though they still show up in the UI for a bit. Check if any of those connected pages got deleted or archived recently - Notion’s UI is slow to update relation fields sometimes. Also double-check your API version in the headers. I got stuck on an older version that had buggy relation handling. Use version 2022-06-28 or newer in your Notion-Version header. They changed how relations work between versions and older ones can return empty arrays.