> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended**:
> ```bash
> npx @scalekit-inc/cli setup
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for 40+ agents.
> Features: full-stack-auth, agent-auth, mcp-auth, modular-sso, modular-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Directory sync

Sync users and groups via SCIM directories
<div class="sdk-client-page">

Use the `directory` client for SCIM directory sync—listing providers, users, and groups provisioned from an IdP.

Use this after SSO is in place when the customer provisions users via SCIM.

### listDirectories
<div class="sdk-method-section">
  
    
      

      Retrieves all SCIM directories configured for an organization.

      
        Organization ID.
      
      
        Directories for the org.
      

```typescript wrap showLineNumbers=false
const response = await scalekit.directory.listDirectories('org_123456');

console.log(`Found ${response.directories.length} directories`);
response.directories.forEach(dir => {
  console.log(`- ${dir.provider}: ${dir.enabled ? 'Active' : 'Inactive'}`);
  console.log(`  Users: ${dir.userCount}, Groups: ${dir.groupCount}`);
});
```

    
  
</div>

### getDirectory
<div class="sdk-method-section">
  
    
      

      Retrieves comprehensive details about a specific SCIM directory.

      
        Organization ID.
      
      
        The directory identifier to retrieve (format: "dir_...")
      
      
        The directory.
      

```typescript wrap showLineNumbers=false
const response = await scalekit.directory.getDirectory(
  'org_123456',
  'dir_abc123'
);

const dir = response.directory;
console.log('Provider:', dir.provider);
console.log('Status:', dir.enabled ? 'Active' : 'Inactive');
console.log('Users:', dir.userCount);
```

    
  
</div>

### getPrimaryDirectoryByOrganizationId
<div class="sdk-method-section">
  
    
      

      Retrieves the primary (first) directory for an organization.

      
        Organization ID.
      
      
        The first directory object for the organization
      

```typescript wrap showLineNumbers=false
const directory = await scalekit.directory.getPrimaryDirectoryByOrganizationId('org_123456');

console.log('Primary Directory:', directory.provider);
console.log('Users:', directory.userCount);
```

    
  
</div>

### listDirectoryUsers
<div class="sdk-method-section">
  
    
      

      Lists users synchronized from an identity provider via SCIM directory sync.

      
        The organization ID
      
      
        The directory ID
      
      
        Optional fields: `pageSize`, `pageToken`, `includeDetail`, `directoryGroupId`, `updatedAfter`.
      
      
        Directory users.
      

```typescript wrap showLineNumbers=false
// pageSize: Results per page (default 10, max 100)
// pageToken: Token for the next page
// includeDetail: include detail
// directoryGroupId: directory group id
// updatedAfter: Only resources updated after this time
const response = await scalekit.directory.listDirectoryUsers(
  'org_123456',
  'dir_abc123',
  { pageSize: 50 }
);

console.log(`Found ${response.totalSize} users`);
```

    
  
</div>

### listDirectoryGroups
<div class="sdk-method-section">
  
    
      

      Retrieves groups synchronized from an identity provider via SCIM directory sync.

      
        The organization ID (format: "org_...")
      
      
        The directory ID (format: "dir_...")
      
      
        Optional fields: `pageSize`, `pageToken`, `includeDetail`, `updatedAfter`.
      
      
        Directory groups.
      

```typescript wrap showLineNumbers=false
// pageSize: Results per page (default 10, max 100)
// pageToken: Token for the next page
// includeDetail: include detail
// updatedAfter: Only resources updated after this time
const response = await scalekit.directory.listDirectoryGroups(
  'org_123456',
  'dir_abc123',
  { pageSize: 30 }
);

console.log(`Found ${response.totalSize} groups`);
```

    
  
</div>

### enableDirectory
<div class="sdk-method-section">
  
    
      

      Enables SCIM directory synchronization for an organization.

      
        The organization ID (format: "org_...")
      
      
        The directory ID to enable (format: "dir_...")
      
      
        The updated resource.
      

```typescript wrap showLineNumbers=false
const response = await scalekit.directory.enableDirectory(
  'org_123456',
  'dir_abc123'
);

console.log('Directory enabled:', response.directory.enabled);
```

    
  
</div>

### disableDirectory
<div class="sdk-method-section">
  
    
      

      Disables SCIM directory synchronization for an organization.

      
        The organization ID (format: "org_...")
      
      
        The directory ID to disable (format: "dir_...")
      
      
        The updated resource.
      

```typescript wrap showLineNumbers=false
const response = await scalekit.directory.disableDirectory(
  'org_123456',
  'dir_abc123'
);

console.log('Directory disabled:', !response.directory.enabled);
```

    
  
</div>

</div>


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
