API Documentation
Build custom integrations with the BlackOps Center REST API. Access your content library, voice profiles, and AI generation features programmatically.
Authentication
The API uses token-based authentication for extension endpoints. Include your API token in the Authorization header of each request.
Base URL
Content Library API
/ext/content-librarySave content to your Content Library. Supports articles, tweets, links, and blog posts.
Request Body
{
"url": "https://example.com/article",
"title": "Article Title",
"content_type": "article",
"excerpt": "Brief description...",
"author": "Author Name",
"tags": ["tag1", "tag2"],
"notes": "Personal notes about this content"
}Response
{
"success": true,
"id": "uuid-of-saved-content",
"message": "Content saved successfully"
}/ext/content-libraryRetrieve saved content from your library with optional filtering.
Query Parameters
| content_type | Filter by type: article, tweet, link, blog_post |
| tag | Filter by tag |
| search | Full-text search query |
| limit | Number of results (default: 50) |
OpenClaw Integration
The BlackOps Center skill for OpenClaw lets you manage your content through natural language conversations or CLI commands. Create posts, publish drafts, and manage multiple sites without touching the web interface.
View Skill on GitHub āInstallation
Configure with your API token from the Browser Extension settings page.
Natural Language Usage
CLI Commands
# List all sites blackops-center list-sites # Create a draft post blackops-center create-post \ --title "Post Title" \ --content "$(cat post.md)" \ --tags "ai,automation" # Create on specific site blackops-center create-post \ --domain "blog.vitalwall.com" \ --title "Site-Specific Post" \ --content "..." # Publish a draft blackops-center update-post <id> --status published # List draft posts blackops-center list-posts --status draft # Get your AI-analyzed voice profile blackops-center get-voice --domain benenewton.com
Preview & Published URLs (v1.1.0+)
The skill automatically outputs shareable URLs when creating or publishing posts:
$ blackops-center create-post --title "Test" --content "..." ā Post created: draft Preview: https://blackopscenter.com/preview/test?token=abc123 $ blackops-center update-post abc123 --status published ā Post published Live URL: https://blackopscenter.com/test
jq while still seeing helpful status messages.Twitter API
/ext/twitter/compose-tweetGenerate a tweet using your voice profile. Returns AI-generated content matching your style.
Request Body
{
"topic": "Content topic or idea",
"context": "Additional context or requirements",
"tone": "optional tone override"
}/ext/twitter/generate-replyGenerate a contextual reply to a tweet. Uses your voice profile and considers the original tweet's content.
Request Body
{
"tweet_text": "Text of the tweet to reply to",
"tweet_author": "Author's username",
"intent": "agree, challenge, add_value, ask_question"
}Voice Profile API
BlackOps Center analyzes your published blog posts to extract your authentic writing voice ā tone scores, style features, expertise areas, and common patterns. This isn't a marketing persona you configure ā it's a data-driven fingerprint of how you actually write.
/ext/sites/{siteId}/voiceRetrieve the AI-analyzed voice profile for a site. Returns tone scores, style features, expertise areas, common writing patterns, and a ready-to-use prompt for AI content generation. Uses API token authentication.
Path Parameters
| siteId | UUID of the site (get from /ext/sites) |
Response
{
"voice_profile": {
"tone_scores": {
"casual": 0.5,
"friendly": 0.62,
"humorous": 0.23,
"technical": 0.76,
"analytical": 0.69,
"professional": 0.72,
"authoritative": 0.68,
"conversational": 0.61
},
"style_features": [
"technical_density",
"personal_anecdotes",
"avg_sentence_length",
"code_examples_usage",
"paragraph_structure"
],
"expertise_areas": [
"software development",
"AI integration",
"DevOps",
"frontend architecture"
],
"common_patterns": [
"What if",
"Here's how",
"The problem was",
"Sound familiar?"
],
"compiled_prompt": "Writing style: technical, professional...",
"sample_size": 10
},
"examples": [],
"analysis_count": 10
}Voice Profile Fields
Error Handling
The API returns standard HTTP status codes and JSON error responses:
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource doesn't exist |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Server Error - Something went wrong |
Rate Limits
API requests are rate limited to ensure fair usage:
- ā¢Extension API: 100 requests per minute
- ā¢Content Generation: 10 requests per minute
- ā¢Bulk Operations: 5 requests per minute
Rate limit headers are included in all responses: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Example: Save Content from Node.js
const response = await fetch('https://blackopscenter.com/api/ext/content-library', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.com/great-article',
title: 'Great Article Title',
content_type: 'article',
tags: ['inspiration', 'content-ideas']
})
});
const result = await response.json();
console.log(result);