rocket-net-api

Build integrations with Rocket.net's managed WordPress hosting platform API. This skill covers authentication, site management, domain configuration, backups, plugins/themes, CDN cache control, and all 200+ API endpoints.

jezweb/claude-skills112 installsMITSynced Aug 26

Works with

Claude CodeCursorCodex CLIGitHub CopilotGemini CLI

Agent Skills format with YAML frontmatter. Claude Code reads it as-is.

---
name: "rocket-net-api"
description: "Build integrations with Rocket.net's managed WordPress hosting platform API. This skill covers authentication, site management, domain configuration, backups, plugins/themes, CDN cache control, and all 200+ API endpoints."
license: "MIT"
---

# Rocket.net API Integration

Build integrations with Rocket.net's managed WordPress hosting platform API. This skill covers authentication, site management, domain configuration, backups, plugins/themes, CDN cache control, and all 200+ API endpoints.

## API Overview

**Base URL**: `https://api.rocket.net/v1`

**Authentication**: JWT token-based
- Obtain token via POST `/login` with email/password
- Token expires in 7 days
- Include in requests as `Authorization: Bearer <token>`

**Content Type**: JSON API
- Required header: `Content-Type: application/json`
- Recommended header: `Accept: application/json`

**Documentation**: https://rocketdotnet.readme.io/reference/introduction

## Authentication

### Get JWT Token

```typescript
const response = await fetch('https://api.rocket.net/v1/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    username: 'your-email@example.com',
    password: 'your-password'
  })
});

const { token } = await response.json();
// Use token in subsequent requests
```

### Authenticated Request Pattern

```typescript
async function rocketApiRequest(
  endpoint: string,
  options: RequestInit = {}
): Promise<any> {
  const response = await fetch(`https://api.rocket.net/v1${endpoint}`, {
    ...options,
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': `Bearer ${token}`,
      ...options.headers
    }
  });

  if (response.status === 401) {
    // Token expired, re-authenticate
    throw new Error('Token expired - request new token');
  }

  return response.json();
}
```

## API Endpoints by Category

### Sites Management

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites` | List all sites |
| POST | `/sites` | Create new site |
| GET | `/sites/{id}` | Get site details |
| PATCH | `/sites/{id}` | Update site properties |
| DELETE | `/sites/{id}` | Delete site |
| POST | `/sites/{id}/clone` | Clone a site (background task) |
| GET | `/sites/{id}/credentials` | Get site credentials |
| GET | `/sites/{id}/usage` | Get site usage statistics |
| POST | `/sites/{id}/lock` | Lock site (prevent modifications) |
| DELETE | `/sites/{id}/lock` | Unlock site |
| GET | `/sites/{id}/pma_login` | Get phpMyAdmin SSO link |
| GET | `/sites/{id}/settings` | Get site settings |
| PATCH | `/sites/{id}/settings` | Update site settings |
| GET | `/sites/locations` | List available site locations |

### Staging Sites

| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/sites/{id}/staging` | Create staging site |
| DELETE | `/sites/{id}/staging` | Delete staging site |
| POST | `/sites/{id}/staging/publish` | Publish staging to production |

### Site Templates

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/templates` | List site templates |
| POST | `/sites/templates` | Create site template |
| GET | `/sites/templates/{id}` | Get template details |
| DELETE | `/sites/templates/{id}` | Delete template |
| POST | `/sites/templates/{id}/sites` | Create site from template |

### Domains

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/domains` | List domain aliases |
| POST | `/sites/{id}/domains` | Add domain alias |
| DELETE | `/sites/{id}/domains/{domainId}` | Remove domain alias |
| GET | `/sites/{id}/maindomain` | Get main domain info |
| POST | `/sites/{id}/maindomain` | Set main domain |
| PUT | `/sites/{id}/maindomain` | Replace main domain |
| PATCH | `/sites/{id}/maindomain` | Update domain validation/SSL |
| GET | `/sites/{id}/maindomain/status` | Check domain status |
| GET | `/sites/{id}/maindomain/recheck` | Force validation recheck |
| GET | `/sites/{id}/domains/{domainId}/edge_settings` | Get edge settings |
| PATCH | `/sites/{id}/domains/{domainId}/edge_settings` | Update edge settings |

### CDN Cache

| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/sites/{id}/cache/purge` | Purge specific files |
| POST | `/sites/{id}/cache/purge_everything` | Purge all cache |

### Plugins

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/plugins` | List installed plugins |
| POST | `/sites/{id}/plugins` | Install plugins |
| PATCH | `/sites/{id}/plugins` | Activate/deactivate plugins |
| PUT | `/sites/{id}/plugins` | Update plugins |
| DELETE | `/sites/{id}/plugins` | Delete plugins |
| GET | `/sites/{id}/plugins/search` | Search available plugins |
| GET | `/sites/{id}/featured_plugins` | List featured plugins |

### Themes

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/themes` | List installed themes |
| POST | `/sites/{id}/themes` | Install themes |
| PATCH | `/sites/{id}/themes` | Activate theme |
| PUT | `/sites/{id}/themes` | Update themes |
| DELETE | `/sites/{id}/themes` | Delete themes |
| GET | `/sites/{id}/themes/search` | Search available themes |

### Backups

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/backup` | List backups |
| POST | `/sites/{id}/backup` | Create backup |
| GET | `/sites/{id}/backup/{backupId}` | Download backup |
| DELETE | `/sites/{id}/backup/{backupId}` | Delete backup |
| POST | `/sites/{id}/backup/{backupId}/restore` | Restore backup |
| GET | `/sites/{id}/backup/automated` | List automated backups |
| POST | `/sites/{id}/backup/automated/{restoreId}/restore` | Restore automated backup |

### Cloud Backups

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/cloud_backups` | List cloud backups |
| POST | `/sites/{id}/cloud_backups` | Create cloud backup |
| GET | `/sites/{id}/cloud_backups/{backupId}` | Get cloud backup |
| DELETE | `/sites/{id}/cloud_backups/{backupId}` | Delete cloud backup |
| GET | `/sites/{id}/cloud_backups/{backupId}/download` | Get download link |
| POST | `/sites/{id}/cloud_backups/{backupId}/restore` | Restore cloud backup |

### Files

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/file_manager/files` | List files |
| POST | `/sites/{id}/files` | Upload file |
| PUT | `/sites/{id}/files` | Save file contents |
| DELETE | `/sites/{id}/files` | Delete file |
| GET | `/sites/{id}/files/view` | View file contents |
| GET | `/sites/{id}/files/download` | Download file |
| POST | `/sites/{id}/files/folder` | Create folder |
| POST | `/sites/{id}/files/extract` | Extract archive |
| POST | `/sites/{id}/files/compress` | Compress files |
| PATCH | `/sites/{id}/files/chmod` | Change permissions |

### FTP Accounts

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/ftp_accounts` | List FTP accounts |
| POST | `/sites/{id}/ftp_accounts` | Create FTP account |
| PATCH | `/sites/{id}/ftp_accounts` | Update FTP account |
| DELETE | `/sites/{id}/ftp_accounts` | Delete FTP account |

### SSH Keys

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/ssh_keys` | List SSH keys |
| POST | `/sites/{id}/ssh_keys` | Import SSH key |
| DELETE | `/sites/{id}/ssh_keys` | Delete SSH key |
| POST | `/sites/{id}/ssh_keys/authorize` | Activate SSH key |
| POST | `/sites/{id}/ssh_keys/deauthorize` | Deactivate SSH key |
| GET | `/sites/{id}/ssh_keys/{name}` | View SSH key info |

### WordPress

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/wp_login` | Get WordPress SSO link |
| GET | `/sites/{id}/wp_status` | Get WordPress status |
| POST | `/sites/{id}/wpcli` | Execute WP-CLI command |

### Reporting

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/reporting/sites/{id}/cdn_requests` | CDN requests report |
| GET | `/reporting/sites/{id}/cdn_cache_status` | Cache status report |
| GET | `/reporting/sites/{id}/cdn_cache_content` | Cache content report |
| GET | `/reporting/sites/{id}/visitors` | Visitors report |
| GET | `/reporting/sites/{id}/waf_eventlist` | WAF events list |
| GET | `/reporting/sites/{id}/waf_events_source` | WAF events by source |
| GET | `/reporting/sites/{id}/waf_firewall_events` | Firewall events |
| GET | `/reporting/sites/{id}/bandwidth_usage` | Bandwidth usage |
| GET | `/reporting/sites/{id}/bandwidth_top_usage` | Top bandwidth usage |
| GET | `/sites/{id}/access_logs` | Access logs |

### Account Management

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/account/me` | Get user information |
| PATCH | `/account/me` | Update account settings |
| GET | `/account/usage` | Get account usage stats |
| POST | `/account/password` | Change password |
| GET | `/account/tasks` | List account tasks |
| GET | `/account/hosting_plan` | Get current plan |
| PUT | `/account/hosting_plan` | Change hosting plan |
| POST | `/account/billing_sso` | Get billing SSO cookie |

### Account Users

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/users` | List account users |
| POST | `/users` | Create account user |
| GET | `/users/{userId}` | Get user details |
| PATCH | `/users/{userId}` | Update user |
| DELETE | `/users/{userId}` | Remove user |
| POST | `/users/{userId}/reinvite` | Resend invite |

### Site Users

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/users` | List site users |
| POST | `/sites/{id}/users` | Invite site user |
| DELETE | `/sites/{id}/users/{userId}` | Remove site user |
| POST | `/sites/{id}/users/{userId}/reinvite` | Resend invite |

### Billing

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/billing/addresses` | List billing addresses |
| POST | `/billing/addresses` | Create billing address |
| GET | `/billing/addresses/{addressId}` | Get billing address |
| PATCH | `/billing/addresses/{addressId}` | Update billing address |
| DELETE | `/billing/addresses/{addressId}` | Delete billing address |
| GET | `/billing/invoices` | List invoices |
| GET | `/billing/invoices/{invoiceId}` | Get invoice |
| GET | `/billing/invoices/{invoiceId}/pdf` | Download invoice PDF |
| POST | `/billing/invoices/{invoiceId}/credit_card_payment` | Pay with card |
| GET | `/billing/payment_methods` | List payment methods |
| POST | `/billing/payment_methods` | Add payment method |
| DELETE | `/billing/payment_methods/{methodId}` | Delete payment method |
| GET | `/billing/products` | List available products |

### Additional Features

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/sites/{id}/password_protection` | Get password protection status |
| POST | `/sites/{id}/password_protection` | Enable password protection |
| DELETE | `/sites/{id}/password_protection` | Disable password protection |
| GET | `/sites/{id}/shopshield` | List ShopShield URIs |
| POST | `/sites/{id}/shopshield` | Enable ShopShield |
| DELETE | `/sites/{id}/shopshield/{id}` | Disable ShopShield |
| GET | `/account/visitors` | Account visitor stats |
| GET | `/account/bandwidth` | Account bandwidth stats |

## Common Patterns

### List All Sites

```typescript
const sites = await rocketApiRequest('/sites');
console.log(sites);
// Returns array of site objects with id, domain, status, etc.
```

### Create a New Site

```typescript
const newSite = await rocketApiRequest('/sites', {
  method: 'POST',
  body: JSON.stringify({
    name: 'my-new-site',
    location: 'us-east-1',
    // Additional options as needed
  })
});
```

### Purge CDN Cache

```typescript
// Purge specific URLs
await rocketApiRequest(`/sites/${siteId}/cache/purge`, {
  method: 'POST',
  body: JSON.stringify({
    files: [
      'https://example.com/style.css',
      'https://example.com/script.js'
    ]
  })
});

// Purge everything
await rocketApiRequest(`/sites/${siteId}/cache/purge_everything`, {
  method: 'POST'
});
```

### Create and Restore Backup

```typescript
// Create backup
const backup = await rocketApiRequest(`/sites/${siteId}/backup`, {
  method: 'POST'
});

// List backups
const backups = await rocketApiRequest(`/sites/${siteId}/backup`);

// Restore backup (background task)
await rocketApiRequest(`/sites/${siteId}/backup/${backupId}/restore`, {
  method: 'POST'
});
```

### Manage Plugins

```typescript
// List installed plugins
const plugins = await rocketApiRequest(`/sites/${siteId}/plugins`);

// Install plugin
await rocketApiRequest(`/sites/${siteId}/plugins`, {
  method: 'POST',
  body: JSON.stringify({
    plugins: ['wordfence', 'yoast-seo']
  })
});

// Update all plugins
await rocketApiRequest(`/sites/${siteId}/plugins`, {
  method: 'PUT',
  body: JSON.stringify({
    plugins: ['all']
  })
});

// Activate/deactivate plugin
await rocketApiRequest(`/sites/${siteId}/plugins`, {
  method: 'PATCH',
  body: JSON.stringify({
    plugins: ['wordfence'],
    action: 'activate' // or 'deactivate'
  })
});
```

### Execute WP-CLI Commands

```typescript
const result = await rocketApiRequest(`/sites/${siteId}/wpcli`, {
  method: 'POST',
  body: JSON.stringify({
    command: 'user list --format=json'
  })
});
```

### WordPress SSO Login

```typescript
// Get SSO link for WordPress admin
const { url } = await rocketApiRequest(`/sites/${siteId}/wp_login`);
// Redirect user to url for auto-login
```

## TypeScript Types

```typescript
interface RocketSite {
  id: number;
  name: string;
  domain: string;
  status: 'active' | 'suspended' | 'pending';
  location: string;
  created_at: string;
  updated_at: string;
}

interface RocketBackup {
  id: number;
  site_id: number;
  type: 'manual' | 'automated' | 'cloud';
  status: 'pending' | 'completed' | 'failed';
  size: number;
  created_at: string;
}

interface RocketPlugin {
  name: string;
  slug: string;
  version: string;
  status: 'active' | 'inactive';
  update_available: boolean;
}

interface RocketDomain {
  id: number;
  domain: string;
  is_main: boolean;
  ssl_status: 'pending' | 'active' | 'failed';
  validation_method: 'dns' | 'http';
}

interface RocketAuthResponse {
  token: string;
  expires_at: string;
}
```

## Error Handling

```typescript
interface RocketApiError {
  error: string;
  message: string;
  status: number;
}

async function handleRocketRequest(endpoint: string, options?: RequestInit) {
  try {
    const response = await rocketApiRequest(endpoint, options);
    return { data: response, error: null };
  } catch (error) {
    if (error.status === 401) {
      // Re-authenticate and retry
      await refreshToken();
      return handleRocketRequest(endpoint, options);
    }
    if (error.status === 404) {
      return { data: null, error: 'Resource not found' };
    }
    if (error.status === 429) {
      // Rate limited - wait and retry
      await sleep(1000);
      return handleRocketRequest(endpoint, options);
    }
    return { data: null, error: error.message };
  }
}
```

## Background Tasks

Many operations (clone, backup restore, staging publish) run as background tasks. Monitor task status:

```typescript
// Start a background task
const { task_id } = await rocketApiRequest(`/sites/${siteId}/clone`, {
  method: 'POST',
  body: JSON.stringify({ name: 'cloned-site' })
});

// Check task status
const tasks = await rocketApiRequest(`/sites/${siteId}/tasks`);
const task = tasks.find(t => t.id === task_id);
console.log(task.status); // 'pending', 'running', 'completed', 'failed'

// Cancel task if needed
await rocketApiRequest(`/sites/${siteId}/tasks/${task_id}/cancel`, {
  method: 'POST'
});
```

## Rate Limits

The API has rate limits. Implement exponential backoff:

```typescript
async function withRetry<T>(
  fn: () => Promise<T>,
  maxRetries = 3,
  delay = 1000
): Promise<T> {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status === 429 && i < maxRetries - 1) {
        await new Promise(resolve => setTimeout(resolve, delay * Math.pow(2, i)));
        continue;
      }
      throw error;
    }
  }
  throw new Error('Max retries exceeded');
}
```

## References

- [Rocket.net API Documentation](https://rocketdotnet.readme.io/reference/introduction)
- [Rocket.net Control Panel](https://control.rocket.net)
- [Rocket.net WordPress Hosting](https://rocket.net)

More General & Other skills

← All General & Other skills

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY