Facticity.AI Complete Integration
A comprehensive skill for interacting with the Facticity.AI API. Supports fact-checking claims, extracting claims from text/video, transcribing links, checking link reliability using MediaBias data, checking API credits, and monitoring async task status.
API Base URL
Base URL: https://api.facticity.ai
All API endpoints use this base URL. References to {BASE_URL}.
Behavior
First, check if FACTICITY_API_KEY is set and not empty. If it is missing or empty, return this onboarding message:
⚠️ API Key Not Configured
To use this skill, you need to set up your Facticity.AI API key:
1. Visit https://app.facticity.ai/api to get your API key
2. Set the key as an environment variable:
export FACTICITY_API_KEY=your_api_key_here
Or add it to your OpenClaw config (~/.openclaw/openclaw.json):
{
"skills": {
"entries": {
"facticity-ai": {
"enabled": true,
"apiKey": "your_api_key_here"
}
}
}
}
3. Restart OpenClaw after configuration
Get your API key at: https://app.facticity.ai/api
If the API key is present, determine the operation based on the command and proceed:
1. Fact-Check (/fact-check)
When the command starts with /fact-check or the input is a claim to fact-check:
Endpoint: POST {BASE_URL}/fact-check
Headers:
X-API-KEY: ${FACTICITY_API_KEY}Content-Type: application/json
Body:
{
"query": "<raw command input (remove /fact-check prefix if present)>",
"timeout": 60,
"mode": "sync"
}
Return the JSON response verbatim. The response includes:
Classification: "True" or "False"overall_assessment: Detailed assessment textevidence: Array of evidence sourcessources: Detailed source assessmentsbias: Bias metrics (if available)task_id: Task ID for async tracking
Usage:
/fact-check "Vaccines contain microchips"
/fact-check "The unemployment rate dropped in 2023"
Async Mode: For long-running fact-checks, set mode: "async" in the request body. The API will return a task_id that can be checked with /check-task-status.
2. Extract Claims (/extract-claim)
When the command starts with /extract-claim or the input is a URL or text to extract claims from:
Endpoint: POST {BASE_URL}/extract-claim
Headers:
X-API-KEY: ${FACTICITY_API_KEY}Content-Type: application/json
Body:
{
"input": "<raw command input (remove /extract-claim prefix if present)>",
"content_type": "text",
"timestamp": false,
"audio_transcript_enabled": false,
"language_code": "en"
}
Note: For video URLs (YouTube, TikTok, Instagram), the API will auto-detect and transcribe. If you need transcription explicitly enabled, set audio_transcript_enabled: true in the request body.
Return the JSON response verbatim.
Usage:
/extract-claim "The Earth is flat and NASA is lying about it"
/extract-claim https://youtube.com/watch?v=abc123
/extract-claim https://tiktok.com/@user/video/123
/extract-claim https://instagram.com/p/abc123
Supported Content Types:
- Text: Direct text input
- Video URLs: YouTube, TikTok, Instagram (auto-transcribes)
- Language: Set
language_codefor non-English content (default: "en")
Response Format:
status: "ok" on successtranscript: Transcribed content (for video URLs)title: Video/article title (if available)description: Content description (if available)claims: Array of extracted claim stringsoverall_assessment: Summary of extraction
3. Get Credits (/get-credits)
When the command is /get-credits or user wants to check API credits:
Endpoint: GET {BASE_URL}/get-credits
Headers:
X-API-KEY: ${FACTICITY_API_KEY}
No request body required.
Return the JSON response verbatim. The response includes:
email: User email associated with the API keyapi_key: The API key (masked)credits_left: Number of credits remainingduration_seconds: Duration period (typically 3600 seconds)
Usage:
/get-credits
Response Format:
{
"email": "user@example.com",
"api_key": "your_api_key_here",
"credits_left": 1482,
"duration_seconds": 3600
}
4. Check Task Status (/check-task-status)
When the command starts with /check-task-status or the input is a task ID:
Endpoint: GET {BASE_URL}/check-task-status?task_id=<task_id>
Headers:
X-API-KEY: ${FACTICITY_API_KEY}
The raw command input should be the task_id from a previous async fact-check request (remove /check-task-status prefix if present).
Query Parameter:
task_id: The unique ID of the task to check (from the raw command input)
Return the JSON response verbatim.
Usage:
/check-task-status 1234567890abcdef
Or with the task_id from a previous async fact-check:
/fact-check "Long claim..." --mode async
# Returns task_id: abc123
/check-task-status abc123
Response Format:
For completed tasks:
{
"status": "Completed",
"input_query": "Original Input query",
"classification": "False",
"overall_assessment": "This claim is inaccurate.",
"evidence_sources": ["Source 1", "Source 2"],
"disambiguation": "Clarifies the context...",
"detailed_source_reports": ["Detailed source report 1", "Detailed source report 2"],
"task_id": "1234567...",
"bias_quality_metrics": [
{
"source": "https://www.politico.com",
"bias": -5.238666666666666,
"quality": 46.45
}
]
}
For in-progress tasks, returns current status and progress information.
5. Transcribe Link (/transcribe-link)
When the command starts with /transcribe-link or the input is a URL to transcribe:
Endpoint: POST {BASE_URL}/transcribe-link
Headers:
X-API-KEY: ${FACTICITY_API_KEY}Content-Type: application/json
Body:
{
"url": "<raw command input (remove /transcribe-link prefix if present)>"
}
The raw command input should be the URL to transcribe (remove /transcribe-link prefix if present).
Return the JSON response verbatim.
Usage:
/transcribe-link https://youtube.com/watch?v=abc123
/transcribe-link https://tiktok.com/@user/video/123
/transcribe-link https://instagram.com/p/abc123
Response Format:
status: "ok" on successtranscript: Transcribed content from the linktitle: Video/article title (if available)description: Content description (if available)duration: Duration of the content (if available)
6. Check Link Reliability (/link-reliability/check)
When the command starts with /link-reliability/check or /check-link-reliability or the input is a URL to check for source reliability:
Endpoint: POST {BASE_URL}/link-reliability/check
Headers:
X-API-KEY: ${FACTICITY_API_KEY}Content-Type: application/json
Body:
{
"url": "<raw command input (remove /link-reliability/check or /check-link-reliability prefix if present)>"
}
The raw command input should be the URL to check (remove /link-reliability/check or /check-link-reliability prefix if present).
Return the JSON response verbatim. The response includes:
url: The processed URLbias: Bias score (-42 to +42)quality: Quality score (0 to 64)bias_label: Human-readable bias categoryquality_label: Human-readable quality categoryfound: Whether the URL was found in MediaBias database
Usage:
/link-reliability/check https://www.example.com/article
/check-link-reliability https://www.bbc.com/news
/link-reliability/check https://www.politico.com/story
Response Format:
{
"url": "https://www.example.com/article",
"bias": -5.24,
"quality": 46.45,
"bias_label": "Left-Center Bias",
"quality_label": "High Quality",
"found": true
}
Note: If the URL is not found in the MediaBias database, found will be false and bias/quality scores may be null or default values.
Command Routing
Determine which operation to perform based on the command prefix:
/fact-checkor input looks like a claim → Fact-Check endpoint/extract-claimor input is a URL → Extract Claims endpoint/get-credits→ Get Credits endpoint/check-task-statusor input is a task ID → Check Task Status endpoint/transcribe-linkor input is a URL → Transcribe Link endpoint/link-reliability/checkor/check-link-reliabilityor input is a URL → Check Link Reliability endpoint
API Token Usage
- Fact-Check: Each request consumes 1 API token
- Extract Claims: Consumes 1 API token per 1 million characters processed
- Get Credits: Free, does not consume tokens
- Check Task Status: Free, does not consume tokens
- Transcribe Link: Consumes 1 API token per transcription request
- Check Link Reliability: Consumes 1 API token per request
Monitor usage with /get-credits.
Configuration
Set FACTICITY_API_KEY in your OpenClaw config under skills.entries.facticity-ai.apiKey or as an environment variable.
Example config:
{
"skills": {
"entries": {
"facticity-ai": {
"enabled": true,
"apiKey": "YOUR_API_KEY_HERE"
}
}
}
}
Or set as environment variable:
export FACTICITY_API_KEY=your_api_key_here