# ReachSocial > Provider-neutral public social data for applications and agents. ReachSocial returns normalized metadata and source media URLs; it does not download or retain media bytes. Official site: https://reachsocial.dev ## Machine entry points - Executable service catalog: https://reachsocial.dev/v1/services - Reviewed service roadmap: https://reachsocial.dev/v1/catalog - OpenAPI: https://reachsocial.dev/openapi.json - Agent operating guide: https://reachsocial.dev/agent.md - API catalog: https://reachsocial.dev/.well-known/api-catalog - Status: https://reachsocial.dev/status.json - MCP server card: https://reachsocial.dev/.well-known/mcp.json (returns 503 while MCP is disabled) ## Available services - `instagram.profile` — sync; $0.05; POST `/v1/services/instagram.profile/execute`; inputs: url; returns `profile`. - `instagram.post` — sync; $0.05; POST `/v1/services/instagram.post/execute`; inputs: url; returns `item`. - `linkedin.profile` — async; $0.10; POST `/v1/services/linkedin.profile/jobs`; inputs: url; returns `profile`. ## Authentication and payment - B2B clients send `Authorization: Bearer ` and a stable `Idempotency-Key`. - Anonymous public calls receive an x402 v2 `402 Payment Required` challenge on Base Sepolia. Sign the exact requirement and retry once with `PAYMENT-SIGNATURE`. - Never submit a wallet private key, provider token, or B2B API key as service input. ## Execution rule Choose the smallest available service matching the URL. Use `/execute` for synchronous services and `/jobs` for asynchronous services. For a job, retain its job token when present and poll the returned status URL until `succeeded`, `failed`, or `expired`; never recreate a pending paid job. ## Contract Successful results use schema `1.0` and normalization `v1`. Missing provider fields are null or empty; ReachSocial does not invent them and never exposes raw provider payloads or provider names.