How to Grant User Access to Notion Pages Using REST API

I’m trying to figure out how to give specific users access to Notion pages through their API. I’ve been experimenting with different API calls but can’t seem to get it working properly.

I’ve attempted various approaches including different endpoints and request methods, but none have been successful so far. Has anyone managed to accomplish this?

function assignPagePermissions($email, $notionPageId)
{
    // API endpoint setup
    $apiUrl = 'https://api.notion.com/v1/pages/' . $notionPageId . '/access';
    $requestHeaders = [
        'Authorization: Bearer YOUR_API_KEY',
        'Content-Type: application/json',
        'Notion-Version: 2022-06-28'
    ];
    $payload = [
        'permission_level' => 'write',
        'email' => $email
    ];

    // Make the API call
    $curl = curl_init($apiUrl);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $requestHeaders);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PATCH');
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($payload));

    $result = curl_exec($curl);
    curl_close($curl);

    // Process response
    if ($result) {
        echo 'Permission granted to: ' . $email;
    } else {
        echo 'Permission assignment failed for: ' . $email;
    }
}

Yes, you’re encountering limitations because Notion’s API does not provide a method for managing user permissions programmatically. That specific endpoint isn’t available; I experienced similar challenges while developing a client dashboard last year. The API is primarily focused on content management rather than workspace administration. User access has to be granted manually through Notion’s interface. A practical alternative I’ve discovered is to create pages within a shared database where users already have access, and then utilize the API to customize the content for individual users. While you can’t adjust permissions via code, you can influence the displayed content.

yeah, super frustrating but notion locks permissions down hard. I’ve been using zapier to bridge notion and google workspace - when someone joins a specific google group, it triggers a workflow that creates pages in databases I’ve already shared. it’s not direct permission control, but works for most situations.

hey, just a heads up - the notion api doesn’t have an /access endpoint for this. user access needs manual sharing. try using their block/database api instead to handle content. also, setting up webhooks might help with automating the sharing process!

Unfortunately, you can’t do this with Notion’s API. That endpoint doesn’t exist - they deliberately keep permission management locked to their web interface for security. I hit the same wall building an automated workspace tool a few months back. Here’s what worked: I scrapped the whole approach and created a parent database with sharing settings already configured. Then I used the API to create child pages inside it. Anyone with access to the parent automatically gets access to new content. Not perfect, but it’s the only workaround that actually works with Notion’s limitations.

Notion’s API doesn’t support permission management. That /access endpoint you’re trying? It doesn’t exist.

Here’s what I do for clients who need automated sharing. I skip Notion’s limitations entirely and use Latenode.

I create a scenario that triggers when someone needs page access. Instead of hitting a fake endpoint, it shoots a Slack message or email to the workspace admin with the page link and user info. Takes 30 seconds to approve.

For bulk stuff, I connect Latenode to a Google Sheet where I track permissions. Add someone to the sheet, and it automatically creates the Notion page in a shared database and fires off notifications.

Don’t fight the API limitations - work around them with smart automation that handles the approval steps.

I’ve built this exact setup for three companies. Way cleaner than trying to hack Notion’s security model.