Notion API relation property showing empty array despite UI showing connected pages

I’m working with Notion’s API and running into a weird issue with relation properties. When I check my database in the Notion interface, I can see that there are pages connected through a relation property. But when I make API calls to get this same property, it comes back completely empty.

I’ve double checked that my app has read permissions for both databases involved in the relationship. The relation is bidirectional and everything looks correct in the UI.

I’ve tested with these endpoints:

  • GET https://api.notion.com/v1/pages/{page_id}
  • GET https://api.notion.com/v1/pages/{page_id}/properties/{property_id}

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

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

The relation array should contain 2 connected pages but it’s empty. This is confusing because the UI clearly shows the connections exist. Both databases have proper permissions set up for my integration. What could be causing this mismatch between the UI and API response?

sounds like maybe a caching issue? notion’s api can be slow with syncing changes, so maybe just wait a lil and check again. also, make sure your integration token can access those specific pages, not just the databases.

Check your integration version - this happens with older API versions that don’t handle relations properly. I hit the same bug on version 2021-05-13. The relation property showed empty arrays even though the connections were right there in the UI. Updating to version 2022-06-28 or later in your request headers fixed it instantly. Also check if the relation property was created with a different integration token. Sometimes the API won’t recognize relations from different auth contexts, even when your current integration has the right database permissions.

Had this exact issue last month - it’s a permissions problem at the page level, not database level. Your integration can access both databases, but individual pages inside them might not be shared with it. This happens when pages were created before you added the integration or by users who can’t share with integrations. Manually share one of the connected pages with your integration through the page’s share menu, then test your API call. If it works, you’ll need to share all relevant pages with your integration. Also check if the relation property was created after you added the integration - older properties sometimes need a refresh in the integration settings.