ReachSocial Jobs API
The Jobs API from ReachSocial — 2 operation(s) for jobs.
The Jobs API from ReachSocial — 2 operation(s) for jobs.
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/reachsocial-dev:reachsocial-dev-jobs-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: ReachSocial Jobs API
summary: Provider-neutral social data services for B2B clients and agents.
description: Provider-neutral social data for B2B applications and x402-capable agents. Discover executable services at `/v1/services` and the reviewed roadmap at `/v1/catalog`.
version: 0.3.1
contact:
email: artemhinz2@gmail.com
url: https://reachsocial.dev/contact
x-guidance: 'Read /v1/services and /status.json for current availability and payment metadata. Public execution needs no ReachSocial API key. Send JSON {input: {...}} and a random 32–255 character Idempotency-Key, saved before payment. Verify the actual x402 v2 challenge''s network, native USDC asset, receiver, resource, and price before signing. On a lost response, POST the same input and key to /v1/payments/recover/{service_id}; recovery never requires another payment. Never generate a new key to retry an uncertain payment.'
servers:
- url: https://reachsocial.dev
description: Public ReachSocial API
tags:
- name: Jobs
paths:
/v1/jobs/{job_id}:
get:
tags:
- Jobs
summary: Get Job
operationId: get_job_v1_jobs__job_id__get
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: X-Job-Token
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Job-Token
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Current durable job state.
content:
application/json:
schema:
$ref: '#/components/schemas/JobStatus'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearerAuth: []
- jobToken: []
/v1/jobs/{job_id}/credit:
post:
tags:
- Jobs
summary: Claim Job Credit
operationId: claim_job_credit_v1_jobs__job_id__credit_post
parameters:
- name: job_id
in: path
required: true
schema:
type: string
title: Job Id
- name: X-Job-Token
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: X-Job-Token
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
additionalProperties: true
title: Response Claim Job Credit V1 Jobs Job Id Credit Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- bearerAuth: []
- jobToken: []
components:
schemas:
ResponseMeta:
type: object
additionalProperties: false
required:
- schema_version
- normalization_version
- response_shape
- latency_ms
properties:
schema_version:
type: string
const: '1.0'
normalization_version:
type: string
const: v1
response_shape:
type: string
enum:
- profile
- item
- feed
- stories
latency_ms:
type: integer
minimum: 0
NormalizedResponse:
type: object
additionalProperties: false
required:
- request_id
- service
- status
- cached
- data
- meta
properties:
request_id:
type: string
service:
type: string
status:
type: string
const: success
cached:
type: boolean
data:
$ref: '#/components/schemas/NormalizedData'
meta:
$ref: '#/components/schemas/ResponseMeta'
Profile:
type: object
additionalProperties: false
required:
- platform
- canonical_url
- counts
- links
- fields
properties:
platform:
type: string
canonical_url:
type: string
format: uri
platform_id:
anyOf:
- type: string
- type: 'null'
handle:
anyOf:
- type: string
- type: 'null'
display_name:
anyOf:
- type: string
- type: 'null'
biography:
anyOf:
- type: string
- type: 'null'
avatar_url:
anyOf:
- type: string
- type: 'null'
verified:
anyOf:
- type: boolean
- type: 'null'
private:
anyOf:
- type: boolean
- type: 'null'
counts:
type: object
additionalProperties:
anyOf:
- type: integer
- type: 'null'
links:
type: array
items:
type: string
format: uri
fields:
type: object
additionalProperties: true
Author:
type: object
additionalProperties: false
properties:
platform_id:
anyOf:
- type: string
- type: 'null'
handle:
anyOf:
- type: string
- type: 'null'
display_name:
anyOf:
- type: string
- type: 'null'
avatar_url:
anyOf:
- type: string
- type: 'null'
verified:
anyOf:
- type: boolean
- type: 'null'
canonical_url:
anyOf:
- type: string
- type: 'null'
NormalizedData:
type: object
additionalProperties: false
properties:
profile:
anyOf:
- $ref: '#/components/schemas/Profile'
- type: 'null'
item:
anyOf:
- $ref: '#/components/schemas/ContentItem'
- type: 'null'
items:
type: array
items:
$ref: '#/components/schemas/ContentItem'
next_cursor:
anyOf:
- type: string
- type: 'null'
has_more:
type: boolean
Media:
type: object
additionalProperties: false
required:
- type
properties:
type:
type: string
enum:
- image
- video
- audio
url:
anyOf:
- type: string
- type: 'null'
preview_url:
anyOf:
- type: string
- type: 'null'
width:
anyOf:
- type: integer
- type: 'null'
height:
anyOf:
- type: integer
- type: 'null'
duration_seconds:
anyOf:
- type: integer
- type: 'null'
expires_at:
anyOf:
- type: string
- type: 'null'
JobStatus:
type: object
required:
- job_id
- service
- status
- created_at
- expires_at
properties:
job_id:
type: string
service:
type: string
status:
type: string
enum:
- queued
- running
- succeeded
- failed
- expired
created_at:
anyOf:
- type: string
- type: 'null'
expires_at:
type: string
result:
$ref: '#/components/schemas/NormalizedResponse'
error:
$ref: '#/components/schemas/ReachSocialError'
ContentItem:
type: object
additionalProperties: false
required:
- platform
- canonical_url
- platform_id
- media
- metrics
properties:
platform:
type: string
canonical_url:
type: string
format: uri
platform_id:
type: string
type:
anyOf:
- type: string
- type: 'null'
author:
anyOf:
- $ref: '#/components/schemas/Author'
- type: 'null'
text:
anyOf:
- type: string
- type: 'null'
published_at:
anyOf:
- type: string
- type: 'null'
expires_at:
anyOf:
- type: string
- type: 'null'
media:
type: array
items:
$ref: '#/components/schemas/Media'
metrics:
type: object
additionalProperties:
anyOf:
- type: integer
- type: 'null'
relationships:
type: object
additionalProperties: true
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ReachSocialError:
type: object
additionalProperties: false
required:
- code
- message
- retryable
properties:
code:
type: string
message:
type: string
retryable:
type: boolean
request_id:
anyOf:
- type: string
- type: 'null'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Private ReachSocial B2B API key.
x402Payment:
type: apiKey
in: header
name: PAYMENT-SIGNATURE
description: x402 v2 payment signature after the initial 402 challenge.
jobToken:
type: apiKey
in: header
name: X-Job-Token
description: Opaque token returned once for an anonymous asynchronous job.
adminToken:
type: apiKey
in: header
name: X-Admin-Token
description: Protected owner-operations token; never used by public agents.
x-reachsocial-services:
- id: news.person
status: private
execution: sync
response_shape: news
price_cents: null
input_schema: '#/components/schemas/NewsPersonInput'
- id: instagram.profile
status: available
execution: sync
response_shape: profile
price_cents: 5
input_schema: '#/components/schemas/InstagramProfileInput'
- id: instagram.post
status: available
execution: sync
response_shape: item
price_cents: 5
input_schema: '#/components/schemas/InstagramPostInput'
- id: instagram.feed
status: available
execution: sync
response_shape: feed
price_cents: 5
input_schema: '#/components/schemas/InstagramFeedInput'
- id: instagram.stories
status: paused
execution: async
response_shape: stories
price_cents: null
input_schema: '#/components/schemas/InstagramStoriesInput'
- id: instagram.highlight
status: available
execution: sync
response_shape: stories
price_cents: 5
input_schema: '#/components/schemas/InstagramHighlightInput'
- id: x.profile
status: available
execution: sync
response_shape: profile
price_cents: 5
input_schema: '#/components/schemas/XProfileInput'
- id: x.post
status: available
execution: sync
response_shape: item
price_cents: 5
input_schema: '#/components/schemas/XPostInput'
- id: x.feed
status: available
execution: sync
response_shape: feed
price_cents: 5
input_schema: '#/components/schemas/XFeedInput'
- id: tiktok.profile
status: available
execution: sync
response_shape: profile
price_cents: 5
input_schema: '#/components/schemas/TiktokProfileInput'
- id: tiktok.feed
status: available
execution: sync
response_shape: feed
price_cents: 5
input_schema: '#/components/schemas/TiktokFeedInput'
- id: tiktok.video
status: available
execution: sync
response_shape: item
price_cents: 5
input_schema: '#/components/schemas/TiktokVideoInput'
- id: linkedin.profile
status: paused
execution: async
response_shape: profile
price_cents: null
input_schema: '#/components/schemas/LinkedinProfileInput'
- id: youtube.channel
status: available
execution: sync
response_shape: profile
price_cents: 5
input_schema: '#/components/schemas/YoutubeChannelInput'
- id: youtube.feed
status: available
execution: sync
response_shape: feed
price_cents: 5
input_schema: '#/components/schemas/YoutubeFeedInput'
- id: youtube.video
status: available
execution: sync
response_shape: item
price_cents: 5
input_schema: '#/components/schemas/YoutubeVideoInput'
- id: facebook.profile
status: available
execution: sync
response_shape: profile
price_cents: 5
input_schema: '#/components/schemas/FacebookProfileInput'
- id: reddit.post
status: available
execution: sync
response_shape: item
price_cents: 5
input_schema: '#/components/schemas/RedditPostInput'