GEN Content Monitoring API
Monitor and discover social media content across multiple platforms.
Monitor and discover social media content across multiple platforms.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/gen-pro:gen-pro-content-monitoring-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Auto Content Engine Content Monitoring API
description: 'The GEN Auto Content Engine API takes a raw idea all the way to a published video — agent setup, idea research, vidsheet production, layer composition, render, and publish.
## The 5-step journey
Every operation belongs to one phase of a 5-step user journey. Each operation carries an `x-phase` extension you can filter on:
| Phase | Meaning |
|-------|---------|
| `setup` | Step 1 — Set Up Your Agent (identity, voice, personality, API keys, workspaces) |
| `ideas` | Step 2 — Generate Content Ideas (trending data, research, refinement, preferences) |
| `convert` | Step 3 — Convert Idea to Vidsheet (clone template or build custom engine) |
| `edit` | Step 4 — Edit & Generate (cells, layers, creation cards, trigger + poll) |
| `export` | Step 5 — Export & Publish (render, download, publish to social) |
Full journey-oriented docs: https://api.gen.pro
## Authentication
All endpoints require authentication via one of:
- **API Key** (recommended): Pass your API key in the `X-API-Key` header. Create keys on the agent''s API page in the GEN dashboard.
- **JWT**: Pass a Bearer JWT in the `Authorization: Bearer ` header.
## Base URLs
```
https://api.gen.pro/v1 — agent setup, vidsheets, generations, renders, publishing
https://agent.gen.pro/v1 — content ideas, research, conversations, chat
https://agent-core.gen.pro/v1 — agent core (brand profile, watchlists, scheduled tasks)
https://python.gen.pro — social publishing integration (connect, schedule, remove posts)
```
Each operation carries its own `servers` entry, so a generated client or a
hand-written call goes to the backend that serves the route.
## Credits
All `/v1/vidsheet/` endpoints require an active GEN credit balance.
If your organization has no usable credits, requests return `422` with error code `usable_gen_credit_required`.
Credits can be funded with x402 by calling `POST /v1/x402_credit_purchase`
with `workspace_id` plus `amount_usd` or `credits`. If `network` is omitted,
GEN returns every configured payment option in `payment_methods` and
`payment_required.accepts`; show the Sui, Solana, and Base options to the
user or calling agent and sign one selected accept entry. Workspace funding
wallets are backend settlement infrastructure; the user-facing payment
choices are the returned payment methods.'
version: 1.0.0
contact:
name: GEN Support
url: https://gen.pro
license:
name: Proprietary
servers:
- url: https://api.gen.pro/v1
description: Auto Content Engine API
- url: https://agent.gen.pro/v1
description: Agent Chat API
- url: https://agent-core.gen.pro/v1
description: Agent Core API (watchlists)
- url: https://python.gen.pro
description: Publishing integration API (social connect and scheduling)
security:
- apiKey: []
- bearerAuth: []
tags:
- name: Content Monitoring
description: Monitor and discover social media content across multiple platforms.
paths:
/user_jobs:
post:
operationId: createUserJob
x-mcp-tool: gen_task_action
x-mcp-branch: create_monitoring_job
x-phase:
- ideas
- export
summary: Create user job (monitoring or publishing)
description: 'Create a background job. Use `user_job_type` to select the job kind:
- **`train_social`** — scrape social media content into the agent''s knowledge base. Supports TikTok, Instagram, and YouTube. Send as multipart/form-data with `user_job[user_job_type]` and `user_job[data]` (JSON-stringified).
- **`publish_content`** — legacy single-platform TikTok publish. Send as JSON with top-level `user_job_type` and `data` fields. New integrations should use `POST /schedule/with-post`, which covers every platform, validates up front and returns the live `post_url`.'
tags:
- Content Monitoring
parameters:
- $ref: '#/components/parameters/AgentId'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- user_job[user_job_type]
- user_job[data]
properties:
user_job[user_job_type]:
type: string
enum:
- train_social
user_job[data]:
type: string
description: JSON-stringified object with platform (tiktok|instagram|youtube), type (username|hashtag|keyword), value, days (0|1|7|30|90|180), country, max_results (1-50), monitoring (default false), comment_monitoring.
example:
user_job[user_job_type]: train_social
user_job[data]: '{"platform":"instagram","type":"username","value":"@fashionbrand","days":30,"max_results":50,"monitoring":true}'
application/json:
schema:
type: object
required:
- user_job_type
- data
properties:
user_job_type:
type: string
enum:
- publish_content
data:
type: string
description: JSON-stringified object with platform, media_url, description, schedule_type, scheduled_time, media_type, title, thumbnail_url, timezone_offset. For multiple images use media_urls (array; X allows up to 4 per tweet). X (Twitter) also supports thread (array of {text, media_urls?} segments, posted as a chain) and reply_to_tweet_id (reply to an existing tweet); both are X-only and ignored by other platforms.
example:
user_job_type: publish_content
data: '{"platform":"tiktok","media_url":"https://cdn.example.com/video.mp4","description":"Factory price reveal #sourcing","schedule_type":"now","media_type":"VIDEO"}'
responses:
'201':
description: Job created
content:
application/json:
schema:
type: object
properties:
user_job_id:
type: integer
example:
user_job_id: 12345
'401':
$ref: '#/components/responses/Unauthorized'
'422':
description: Validation error, unsupported platform/type combination, or no active credit purchase.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/user_jobs/{id}:
get:
operationId: getUserJob
x-mcp-tool: gen_discover
x-mcp-branch: vidsheet.audio_matches
x-phase:
- ideas
- export
summary: Get user job status
description: Poll an async user job. Works for both `train_social` (content monitoring) and `publish_content` (social publishing) jobs. Returns current status, progress, and the final `result` on completion.
tags:
- Content Monitoring
parameters:
- name: id
in: path
required: true
schema:
type: integer
- $ref: '#/components/parameters/AgentId'
responses:
'200':
description: User job status
content:
application/json:
schema:
type: object
properties:
id:
type: integer
user_job_type:
type: string
status:
type: string
enum:
- pending
- processing
- completed
- failed
result:
type: object
description: Populated on `completed`. For `publish_content`, contains `post_id`.
failed_reason:
type: string
description: Populated on `failed`.
example:
id: 138860
user_job_type: publish_content
status: completed
result:
post_id: '7459234123456'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ApiValidationError'
put:
operationId: updateMonitoringJob
x-mcp-tool: gen_task_action
x-mcp-branch: update_monitoring_job
x-phase: ideas
summary: Update monitoring job
description: Update an existing `train_social` job. Only jobs with `pending` or `processing` status can be updated. Send fields as flat form params (not nested).
tags:
- Content Monitoring
parameters:
- name: id
in: path
required: true
schema:
type: integer
- $ref: '#/components/parameters/AgentId'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
platform:
type: string
enum:
- tiktok
- instagram
- youtube
type:
type: string
enum:
- username
- hashtag
- keyword
value:
type: string
days:
type: integer
enum:
- 0
- 1
- 7
- 30
- 90
- 180
country:
type: string
max_results:
type: integer
minimum: 1
maximum: 50
monitoring:
type: boolean
comment_monitoring:
type: boolean
responses:
'200':
description: Monitoring job updated
content:
application/json:
schema:
type: object
properties:
user_job_id:
type: integer
example:
user_job_id: 12345
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
description: Job status invalid or validation error.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
parameters:
AgentId:
name: agent_id
in: query
required: true
description: The agent ID. Find via `GET /v1/agents`.
schema:
type: string
responses:
NotFound:
description: Resource not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Not found
error_code: not_found
ApiValidationError:
description: Validation failed or the request could not be processed.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
Unauthorized:
description: Missing or invalid authentication.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Unauthorized
error_code: unauthorized
schemas:
ApiError:
type: object
required:
- code
properties:
code:
type: string
description: The stable machine-readable failure code.
message:
type: string
description: Human-readable failure detail.
errors:
type: array
description: Field-level validation failures.
items:
type: object
retryable:
type: boolean
description: Whether retrying can succeed without changing the request.
new_change_set_required:
type: boolean
description: Whether the caller must begin a new edit group.
funding_error_kind:
type: string
description: The credit or payment failure category.
Error:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable error message.
error_code:
type: string
description: Machine-readable error code.
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-API-Key
description: Personal Access Token (PAT). Create one in Settings > API Keys.
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: Bearer JWT issued by the GEN dashboard sign-in.