Skip to main content
This page is part of an AI coding agent skill and is written for agents, not humans. For the human-readable Base44 docs, see the developer documentation.

Connectors Module

OAuth token management for external services.
  • base44.asServiceRole.connectors — App-scoped OAuth tokens (backend/service role only). All users share the same connected account.

Contents


Service Role Connectors (base44.asServiceRole.connectors)

App-scoped OAuth tokens. The app builder connects the account once; all users share it. Backend/service role only.

Methods

MethodSignatureDescription
getConnection(integrationType)Promise<ConnectorConnectionResponse>Get access token and optional connection config
getAccessToken(integrationType)Promise<string>⚠️ Deprecated — use getConnection() instead

Examples

// Backend function only
Deno.serve(async (req) => {
  const base44 = createClientFromRequest(req);

  // Recommended: use getConnection() for token + optional config
  const { accessToken, connectionConfig } = await base44.asServiceRole.connectors.getConnection("slack");

  const response = await fetch("https://slack.com/api/chat.postMessage", {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${accessToken}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({ channel: "#general", text: "Hello from Base44!" })
  });

  return Response.json(await response.json());
});
// Using connectionConfig (for services that need extra params, e.g. a subdomain)
const { accessToken, connectionConfig } = await base44.asServiceRole.connectors.getConnection("myservice");
const subdomain = connectionConfig?.subdomain;
const response = await fetch(`https://${subdomain}.example.com/api/v1/data`, {
  headers: { "Authorization": `Bearer ${accessToken}` }
});
// Google Calendar example
const { accessToken } = await base44.asServiceRole.connectors.getConnection("googlecalendar");

const events = await fetch(
  "https://www.googleapis.com/calendar/v3/calendars/primary/events?" +
  new URLSearchParams({ maxResults: "10", orderBy: "startTime", singleEvents: "true", timeMin: new Date().toISOString() }),
  { headers: { "Authorization": `Bearer ${accessToken}` } }
).then(r => r.json());

Available Services

ServiceType identifier
Airtableairtable
Boxbox
ClickUpclickup
Discorddiscord
Dropboxdropbox
GitHubgithub
Gmailgmail
Google Analyticsgoogle_analytics
Google BigQuerygooglebigquery
Google Calendargooglecalendar
Google Classroomgoogle_classroom
Google Docsgoogledocs
Google Drivegoogledrive
Google Search Consolegoogle_search_console
Google Sheetsgooglesheets
Google Slidesgoogleslides
HubSpothubspot
Linearlinear
LinkedInlinkedin
Microsoft Teamsmicrosoft_teams
Microsoft OneDriveone_drive
Notionnotion
Outlookoutlook
Salesforcesalesforce
SharePointshare_point
Slack Userslack
Slack Botslackbot
Splitwisesplitwise
TikToktiktok
Typeformtypeform
Wixwix
Wrikewrike
Run npx base44 connectors list-available from the CLI to see all available types.

Setup Requirements

  1. Builder plan or higher
  2. Backend functions enabled (for service role connectors)
  3. Connector configured in Base44 dashboard (OAuth flow completed)

Important Notes

  • Service role connectors: One account per connector per app — all users share the same connected account
  • You handle the API calls: Base44 provides the token; you make the actual API requests
  • Token refresh: Base44 handles token refresh automatically

Type Definitions

/**
 * The type of external integration/connector (for service role connectors).
 * Examples: 'googlecalendar', 'slack', 'github', 'notion', etc.
 */
type ConnectorIntegrationType = string;

/** Connection details returned by getConnection(). */
interface ConnectorConnectionResponse {
  /** The OAuth access token for the external service. */
  accessToken: string;
  /** Key-value configuration for the connection, or null if not needed. */
  connectionConfig: Record<string, string> | null;
}

/** Service role connectors module (app-scoped OAuth). Backend only. */
interface ConnectorsModule {
  /**
   * Retrieves the OAuth access token and optional connection config.
   * @param integrationType - e.g., 'googlecalendar', 'slack', 'github'.
   */
  getConnection(integrationType: ConnectorIntegrationType): Promise<ConnectorConnectionResponse>;

  /**
   * @deprecated Use getConnection() instead.
   * Retrieves only the OAuth access token string.
   */
  getAccessToken(integrationType: ConnectorIntegrationType): Promise<string>;
}