Authentication
Data Machine REST API supports two authentication methods for secure access.
Authentication Methods
This page describes authentication options, but it does not replace WordPress’s own authentication documentation.
1. Application Password (Recommended)
Best For: External integrations, non-browser applications, API clients
Setup:
- Navigate to WordPress Admin → Users → Your Profile
- Scroll to "Application Passwords" section
- Enter application name (e.g., "Data Machine API")
- Click "Add New Application Password"
- Copy the generated password (format:
xxxx xxxx xxxx xxxx)
Usage:
curl -u username:application_password
https://example.com/wp-json/datamachine/v1/pipelines
Python Example:
import requests
from requests.auth import HTTPBasicAuth
url = "https://example.com/wp-json/datamachine/v1/pipelines"
auth = HTTPBasicAuth("username", "xxxx xxxx xxxx xxxx")
response = requests.get(url, auth=auth)
JavaScript/Node.js Example:
const axios = require('axios');
const response = await axios.get(
'https://example.com/wp-json/datamachine/v1/pipelines',
{
auth: {
username: 'admin',
password: 'xxxx xxxx xxxx xxxx'
}
}
);
2. Cookie Authentication
Best For: WordPress admin interface, same-origin requests
Setup: Automatic for logged-in WordPress users
Usage:
// WordPress admin context
fetch('/wp-json/datamachine/v1/pipelines', {
credentials: 'same-origin',
headers: {
'X-WP-Nonce': wpApiSettings.nonce
}
})
Permission Model
manage_options Capability
Most endpoints require manage_options capability (Administrator/Editor roles):
- Execute, Pipelines, Flows, Jobs, Files
- Settings, Logs, Processed Items
- Handlers, Providers, Tools, Auth
Authenticated Users
Some endpoints require authentication only (any logged-in user):
/users/me– Current user preferences
Security Best Practices
- Use HTTPS: Always use HTTPS in production
- Rotate Passwords: Regularly rotate application passwords
- Limit Scope: Create application-specific passwords
- Monitor Access: Review application password usage in WordPress admin
- Revoke Unused: Delete application passwords for deactivated integrations
Testing Authentication
# Test WordPress REST API discovery endpoint
curl -u username:app_password
https://example.com/wp-json/
# Test Data Machine authentication
curl -u username:app_password
https://example.com/wp-json/datamachine/v1/pipelines
Authentication errors
403 Forbidden:
{
"code": "rest_forbidden",
"message": "You do not have permission to access this endpoint.",
"data": {"status": 403}
}
Solutions:
- Verify user has
manage_optionscapability - Check application password is correct
- Ensure WordPress user is active
- Confirm HTTPS is being used
Related Documentation
- Execute Endpoint – Workflow execution
- Auth Endpoints – OAuth account management
- Errors – Authentication error codes
- API Overview – Complete API documentation
Security Model: manage_options capability required for admin endpoints
Supported Methods: Application Password, Cookie Authentication
WordPress Version: 5.6+ (Application Passwords)