captionhub

Connectors

Configure the Microsoft Sharepoint Connector

Set up a Microsoft Entra ID app registration and connect CaptionHub to your SharePoint site for video import and caption publishing.

CaptionHub connects to SharePoint using a Microsoft Entra ID app registration in your organisation's tenant. This gives CaptionHub its own identity in your tenant so your admin controls exactly what it can access, and access can be revoked at any time. Setup takes about 10 minutes and must be done by someone with Entra ID admin rights (to create the app and grant consent).

You'll finish with four values to paste into CaptionHub:

CaptionHub field
Where it comes from
Tenant ID
App registration β†’ Overview
Client ID
App registration β†’ Overview
Client Secret
App registration β†’ Certificates & secrets
Site URL
Your SharePoint site's address

Step 1 β€” Create the app registration

  1. Go to the Microsoft Entra admin center and sign in as an administrator.
  1. Navigate to Entra ID β†’ Applications β†’ App registrations and click New registration.
  1. Fill in:
      • Name: CaptionHub SharePoint Connector (any name works; this is what you'll see in audit logs)
      • Supported account types: Accounts in this organizational directory only (Single tenant)
      • Redirect URI: leave empty β€” CaptionHub connects server-to-server and never signs in a user
  1. Click Register.

Step 2 β€” Copy the Tenant ID and Client ID

On the app's Overview page, copy these two values (both look like xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx):

  • Directory (tenant) ID β†’ CaptionHub's Tenant ID field
  • Application (client) ID β†’ CaptionHub's Client ID field

Step 3 β€” Create a client secret

  1. In the app registration, go to Certificates & secrets β†’ Client secrets β†’ New client secret.
  1. Give it a description (e.g. CaptionHub) and choose an expiry. We recommend 24 months (the maximum).
  1. Click Add, then immediately copy the Value column β€” not the "Secret ID" column.
⚠️ The secret value is shown only once. If you navigate away without copying it, delete it and create a new one.
⚠️ Client secrets expire. When this one expires, the CaptionHub connection will stop working until you create a new secret and update it in CaptionHub. Put a reminder in your calendar a couple of weeks before the expiry date.

Step 4 β€” Grant SharePoint permissions

CaptionHub needs to read videos from your site and write caption files back to it. There are two ways to grant this β€” we recommend Option A.

Option A (recommended): access to one specific site only β€” Sites.Selected

This limits CaptionHub to a single SharePoint site of your choosing. It's a two-part step: add the permission, then grant it for the specific site.

Part 1 β€” add the permission to the app:

  1. In the app registration, go to API permissions β†’ Add a permission β†’ Microsoft Graph β†’ Application permissions.
  1. Search for and select Sites.Selected, then click Add permissions.
  1. Click Grant admin consent for [your organisation] and confirm. The Status column should show a green tick.

Part 2 β€” grant the app access to your site. Sites.Selected gives access to nothing by default; a SharePoint or Global admin now grants this specific app write access to the specific site. The easiest way is Graph Explorer (sign in as the admin):

First-time Graph Explorer setup: Graph Explorer needs your permission to manage site permissions on your behalf, and will otherwise respond with 403 Forbidden β€” Access denied. Open the Modify permissions tab (next to Request Body), find Sites.FullControl.All, and click Consent, approving the prompt that appears. You must be signed in as a Global Administrator or SharePoint Administrator β€” without one of those roles the requests below will be refused even after consenting.
  • Find your site's ID. Run a request in the Graph Explorer command bar, adjusting the hostname and site name to match your Site URL. For instance, for https://contoso.sharepoint.com/sites/Marketing , you’d use:
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/Marketing

Copy the id value from the response (it looks like contoso.sharepoint.com,xxxxxxxx-...,yyyyyyyy-...).

  • Grant the permission (replace the site ID in the URL, and the id/displayName with your app's Client ID and name from Step 2). Put this in the bar:
POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions
Content-Type: application/json

And this in the Request Body:

{
  "roles": ["write"],
  "grantedToIdentities": [
    {
      "application": {
        "id": "YOUR-CLIENT-ID",
        "displayName": "CaptionHub SharePoint Connector"
      }
    }
  ]
}

You should get a 201 Created response.

If your team prefers PowerShell, the equivalent is PnP PowerShell's Grant-PnPAzureADAppSitePermission -AppId "YOUR-CLIENT-ID" -DisplayName "CaptionHub SharePoint Connector" -Site "https://contoso.sharepoint.com/sites/Marketing" -Permissions Write

Why "write"? CaptionHub publishes finished caption files (e.g. myvideo_en.vtt) into the same folder as the source video. Read-only access would allow import but publishing would fail.

Option B (simpler, broader): access to all sites β€” Sites.ReadWrite.All

If site-scoped setup is more ceremony than you need:

  1. API permissions β†’ Add a permission β†’ Microsoft Graph β†’ Application permissions.
  1. Select Sites.ReadWrite.All, click Add permissions.
  1. Click Grant admin consent and confirm.

Be aware this lets the app read and write every SharePoint site in your tenant, which many security teams won't accept β€” hence our recommendation of Option A.

Step 5 β€” Connect CaptionHub

  1. In CaptionHub, go to Settings β†’ Connectors β†’ Microsoft SharePoint.
  1. Enter:
      • Tenant ID and Client ID from Step 2
      • Client Secret from Step 3
      • Site URL β€” the full address of the site, e.g. https://contoso.sharepoint.com/sites/Marketing. Don't include anything after the site name β€” no /Shared Documents or folder names.
      • Folder Path (optional) β€” a folder inside the site's default Documents library to scope imports to. Leave blank to browse the whole library.
      • Subtitle Format β€” the caption file format CaptionHub will publish back (VTT by default).
  1. Toggle the connector on and Save. The status indicator will confirm the connection.
Folder Path is relative to the inside of the Documents library β€” don't include the library name. For a folder called Videos in the Documents library, enter just Videos (not Documents/Videos). In particular, don't copy Shared Documents from your browser's address bar β€” that's the internal URL name of the Documents library itself, not part of the folder path. For deeper folders, separate with slashes, e.g. Videos/Incoming.

Notes and troubleshooting

  • The connector uses the site's default document library (usually called "Documents"). Videos in other libraries on the same site won't appear. The Folder Path is relative to that library's root.
  • Connection fails immediately after setup: admin consent and Sites.Selected grants can take a few minutes to propagate. Wait five minutes and save again.
  • Connection fails with previously working credentials: your client secret has probably expired β€” create a new one (Step 3) and update it in CaptionHub.
  • Import works but publishing captions fails: the site grant was probably created with "roles": ["read"] β€” re-run Part 2 of Option A with ["write"].
  • To revoke CaptionHub's access at any time: delete the app registration in Entra, or just delete its client secrets.
Did this answer your question?
😞
😐
🀩