{"name":"PaidHype API","version":"v1","description":"PaidHype is a bounty marketplace for posts on 𝕏. Brands publish bounties that pay a fixed rate per 1,000 verified views; creators claim a slot, post from their own account, and get paid after a hold once the views are verified against public numbers. Everything a brand publishes is readable here without a key.","docs":"https://github.com/GroupX-ai/PaidHype/blob/main/docs/API.md","openapi":"https://www.paidhype.com/api/v1/openapi","auth":{"header":"Authorization: Bearer <key> (or x-api-key: <key>)","required":false,"note":"The read endpoints under `public: true` need no key. A key raises the rate limit and unlocks the brand's own private views.","key_kinds":{"ph_user_…":"personal key — acts as the user everywhere (generate at /account/keys)","ph_live_<slug>_…":"workspace key — scoped to one brand workspace"}},"conventions":{"money":"Integer cents. Rates are decimal cents per 1,000 views (100 = $1.00/1k).","time":"ISO 8601, UTC.","ids":"Prefixed and opaque: wsp_, bty_, clm_, pst_, cre_, key_.","errors":"{\"error\": {\"code\": \"…\", \"message\": \"…\"}} with a meaningful HTTP status.","lists":"Public lists return {\"object\": \"list\", \"<resource>\": [...], \"page\": {limit, has_more, next_cursor}, \"generated_at\"}. Pass `page.next_cursor` back as `?cursor=` for the next page.","null_means":"`cap_cents: null` means the per-post payout is uncapped."},"rate_limits":{"anonymous":"60 requests/minute per IP","with_api_key":"600 requests/minute, from the first request the key successfully authenticates. The limiter runs before authentication, so a key it has not yet seen — and any key that is not real — is metered as anonymous.","headers":"RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset on every response; Retry-After on a 429. Reset and Retry-After account for the sliding window, so the value they give is the wait that actually frees budget.","over_limit":"429 with error code `rate_limited`"},"start_here":[{"question":"What bounties are live right now, and at what rates?","call":"GET https://www.paidhype.com/api/v1/bounties"},{"question":"Which brands are active?","call":"GET https://www.paidhype.com/api/v1/workspaces?has_open_bounties=true"},{"question":"What is happening on the platform?","call":"GET https://www.paidhype.com/api/v1/activity"},{"question":"How big is this thing?","call":"GET https://www.paidhype.com/api/v1/stats"}],"endpoints":[{"method":"GET","path":"/api/v1","public":true,"purpose":"This index"},{"method":"GET","path":"/api/v1/openapi","public":true,"purpose":"OpenAPI 3.1 description of the public read API"},{"method":"GET","path":"/api/v1/bounties","public":true,"purpose":"Open bounties across the platform. Filters: workspace, q, min_rate_per_1k_cents, max_view_floor, link_mode, verified_only, eligible_for_followers, has_slots, claimable, sort, limit, cursor"},{"method":"GET","path":"/api/v1/bounties/:id","public":true,"purpose":"One open bounty in full public detail"},{"method":"GET","path":"/api/v1/workspaces","public":true,"purpose":"Brand directory (brands that have published a bounty). Filters: q, has_open_bounties, limit, cursor"},{"method":"GET","path":"/api/v1/workspaces/:slug","public":true,"purpose":"Public brand profile + that brand's open bounties; the brand's own members/key get the full settings view on the same path"},{"method":"GET","path":"/api/v1/activity","public":true,"purpose":"Recent platform activity: bounty_opened, bounty_claimed, post_verified. Filters: workspace, type, limit, cursor"},{"method":"GET","path":"/api/v1/feed","public":true,"purpose":"Alias of /api/v1/activity"},{"method":"GET","path":"/api/v1/stats","public":true,"purpose":"Platform aggregates: verified views, paid out, open bounties, open slots, rates"},{"method":"GET","path":"/api/v1/me","purpose":"Who am I: auth kind, user, workspaces, creator profiles"},{"method":"GET","path":"/api/v1/keys","purpose":"List my personal API keys, with usage: request_count, first_used_at, last_used_at, rotation_count. Revoked keys included; ?include_revoked=false for live ones only"},{"method":"POST","path":"/api/v1/keys","purpose":"Create a personal key {name} — name is required (browser session only; key shown once)"},{"method":"POST","path":"/api/v1/keys/:id/rotate","purpose":"New secret for the same key: same id and name, usage counters reset, old secret dead (browser session only; key shown once)"},{"method":"DELETE","path":"/api/v1/keys/:id","purpose":"Retire a personal key (browser session only). Returns mode: 'revoked' if it ever authenticated a request, 'deleted' if it never did"},{"method":"POST","path":"/api/v1/workspaces","purpose":"Create a workspace (you become owner)"},{"method":"PATCH","path":"/api/v1/workspaces/:id","purpose":"Update settings: claims, rules, assets, tagline, domain, disclosure"},{"method":"POST","path":"/api/v1/workspaces/:id/api-key","purpose":"Issue/rotate the workspace key (shown once)"},{"method":"DELETE","path":"/api/v1/workspaces/:id/api-key","purpose":"Revoke the workspace key"},{"method":"GET","path":"/api/v1/workspaces/:id/members","purpose":"List members"},{"method":"POST","path":"/api/v1/workspaces/:id/members","purpose":"Add member by email {email, role} (owner)"},{"method":"PATCH","path":"/api/v1/workspaces/:id/members/:userId","purpose":"Change a member's role {role} (owner)"},{"method":"DELETE","path":"/api/v1/workspaces/:id/members/:userId","purpose":"Remove member (owner)"},{"method":"POST","path":"/api/v1/bounties","purpose":"Create bounty"},{"method":"PATCH","path":"/api/v1/bounties/:id","purpose":"Edit bounty (incl. status: open/paused/completed/archived)"},{"method":"GET","path":"/api/v1/bounties/:id/claims","purpose":"Claims on one bounty"},{"method":"POST","path":"/api/v1/bounties/:id/claims","purpose":"Claim for a creator {creator_id}"},{"method":"GET","path":"/api/v1/claims","purpose":"List claims across the workspace (?vet_status=pending_review = vet queue)"},{"method":"GET","path":"/api/v1/claims/:id","purpose":"Claim + post detail"},{"method":"POST","path":"/api/v1/claims/:id/vet","purpose":"Creator vet decision {action: approve|reject}"},{"method":"POST","path":"/api/v1/claims/:id/submit","purpose":"Submit tweet URL {tweet_url}"},{"method":"GET","path":"/api/v1/posts","purpose":"List posts (?compliance_status=pending = review queue)"},{"method":"POST","path":"/api/v1/posts/:id/review","purpose":"Post compliance decision {action: approve|reject}"},{"method":"GET","path":"/api/v1/posts/:id/metrics","purpose":"Snapshot time series"},{"method":"POST","path":"/api/v1/draft-check","purpose":"Advisory pre-post check {bounty_id, creator_id, text}"},{"method":"GET","path":"/api/v1/creators/:id","purpose":"Creator profile (visible once they claimed your bounty)"},{"method":"POST","path":"/api/v1/conversions","purpose":"Postback {ph_click|utm_content, event, amount?} — workspace key, or personal key with workspace_id"},{"method":"GET","path":"/api/v1/conversions","purpose":"List conversions for the workspace"},{"method":"GET","path":"/api/v1/payouts","purpose":"Ledger: admin all; workspace its own; creators theirs"},{"method":"POST","path":"/api/v1/payouts","purpose":"{action: request_cashout, creator_id}"},{"method":"POST","path":"/api/v1/payouts/:id/approve","purpose":"Approve cashout (admin)"},{"method":"GET","path":"/api/v1/reports/summary","purpose":"Workspace rollup: spend, views, clicks, conversions"},{"method":"GET","path":"/api/v1/reports/creators","purpose":"Per-creator funnel"},{"method":"GET","path":"/api/v1/reports/brand-growth","purpose":"Brand 𝕏-handle follower/engagement series"}]}