interhuman-post-processing
SKILL.md
Interhuman Post-Processing Analysis
Wrapper for the Interhuman API upload endpoint that analyzes completed video files and returns social-intelligence signals.
When to Use
Use this skill when:
- Analyzing a pre-recorded video file (MP4, AVI, MOV, MKV, MPEG-TS, MPEG-2-TS, WebM)
- The video file is already complete (not a live stream)
- You need to get all detected signals for the entire video at once
Do NOT use this skill for:
- Live video streams (use
interhuman-streaminstead) - Real-time analysis of ongoing video feeds
Required Inputs
- API Access Token: Bearer token obtained from the
interhuman-authenticationskill (useinterhumanai.uploadscope) - Video File: Binary video file to analyze
- Size: 10 KB minimum, 32 MB maximum
- Formats: mp4, avi, mov, mkv, mpeg-ts, mpeg-2-ts, webm
Authentication
Before using this skill, you must obtain an access token using the interhuman-authentication skill with the interhumanai.upload scope. Use the returned access_token in the Authorization header as Bearer <access_token>.
API Call Instructions
Endpoint Details
- Base URL:
https://api.interhuman.ai - Endpoint:
/v0/upload/analyze - Method: POST
- Content-Type:
multipart/form-data - Authentication: Bearer token in
Authorizationheader
Request Format
Send the video file as multipart/form-data with a single field named file containing the binary video data.
Example: cURL
curl -X POST https://api.interhuman.ai/v0/upload/analyze \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@/path/to/video.mp4;type=video/mp4"
Example: Python
import requests
access_token = "YOUR_ACCESS_TOKEN"
video_path = "/path/to/video.mp4"
with open(video_path, "rb") as f:
files = {"file": (os.path.basename(video_path), f, "video/mp4")}
response = requests.post(
"https://api.interhuman.ai/v0/upload/analyze",
headers={"Authorization": f"Bearer {access_token}"},
files=files,
timeout=300,
)
# Return the raw JSON response
print(response.json())
Example: JavaScript/Node.js
import fs from "fs";
import FormData from "form-data";
import fetch from "node-fetch";
const formData = new FormData();
formData.append("file", fs.createReadStream("path/to/video.mp4"));
const response = await fetch("https://api.interhuman.ai/v0/upload/analyze", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ACCESS_TOKEN}`
},
body: formData
});
const json = await response.json();
console.log(json);
Response Format
The API returns a JSON object with a signals array. Each signal object contains:
- type (string): The detected social signal type. Possible values:
agreement,confidence,confusion,disagreement,disengagement,engagement,frustration,hesitation,interest,skepticism,stress,uncertainty - start (number): Start time of the signal in seconds relative to video start
- end (number): End time of the signal in seconds relative to video start
Example Response
{
"signals": [
{
"type": "agreement",
"start": 2.5,
"end": 8.2
},
{
"type": "uncertainty",
"start": 12.3,
"end": 19.1
}
]
}
Error Responses
On error, the API returns JSON with:
- detail (string): Error message
- status_code (integer): HTTP status code
- extra (object): Additional error information
Status Codes
200: Success400: Bad request (invalid file format or parameters)401: Unauthorized (missing or invalid token)403: Forbidden (token lacks required scope)413: Payload too large (file exceeds 32 MB)422: Unprocessable entity (file missing or invalid)500: Internal server error
Output Rules
CRITICAL: This skill is a strict wrapper. You MUST:
- Return the exact JSON response from the API without any modification
- Do NOT summarize, transform, or rename fields
- Do NOT extract or filter signals
- Do NOT add commentary or interpretation
- Preserve all fields exactly as received from the API
The response should be the raw JSON object returned by the API, passed through verbatim.
Weekly Installs
2
Repository
interhumanai/skillsGitHub Stars
1
First Seen
Feb 17, 2026
Security Audits
Installed on
opencode2
gemini-cli2
antigravity2
claude-code2
github-copilot2
codex2