platform/service: linkedin/profile.info, reddit/subreddit.posts, googlemaps/place.search. It is the unit of the API, with one endpoint, one input contract, one output shape.
Naming
Service names followentity.verb, lowercase, and are idiomatic to their platform: Reddit has subreddit.posts, Facebook has group.posts, YouTube has channel.videos, Instagram has reel.info. Where a name means the same thing everywhere it stays the same (profile.info on nine platforms). Where a platform has a real idiom, the name follows the platform, not an artificial cross-platform vocabulary.
Published names are frozen, so a service is never silently repurposed.
Input kind
Each service declares what it consumes:
There is no extract/search split any more: the input kind is a property of the service, published in the catalogue as
input_kind / input_field. Sending queries to a URL service returns a 400 that names the field it actually wants.
Input formats
Each service declares the exact shape(s) it accepts, with a concrete example:profile.info returns 400 invalid_input_format and is never charged.
Typed options
Services declare their own parameters, with types and allowed values:400 naming the valid options, and they are never silently dropped. The declared option surface is the same across a service’s offers, so a request stays valid when the router falls over. An offer that doesn’t implement an option ignores it.
Discovery
GET /v1/services: every callable service, with offers, prices, caps, accepted inputs and options.GET /v1/services/{platform}: one platform.GET /v1/services/{platform}/{service}: one service.GET /v1/openapi.json: OpenAPI 3.1, one path per service.- socialrouter.io/services: the browsable catalogue.
- Services by platform: the same catalogue written out as reference pages, one per platform.
- The MCP server exposes the same catalogue as a
list_servicestool.
Errors are written to be fixed
Every 4xx names the field, the expected shape, and the valid alternatives:Offers & routing
Who implements a service, and how the router picks.
Run a service
The endpoint reference.