{"openapi":"3.1.0","info":{"title":"Online PR API","description":"Online PR \u2014 the global platform for PR agencies, press release distribution, and media placements. Search agencies, browse publications, order press release distribution, request quotes, and submit press releases. All endpoints are public \u2014 no authentication required.","version":"2.0.0","contact":{"name":"Online PR","url":"https:\/\/online.pr"}},"servers":[{"url":"https:\/\/online.pr\/api\/mcp"}],"paths":{"\/agencies":{"get":{"operationId":"searchAgencies","summary":"Search PR agencies worldwide","description":"Search the Online PR directory of PR agencies and newswires. Filter by city, country, industry, service type, or keyword. Returns rated, verified agencies.","parameters":[{"name":"q","in":"query","description":"Free-text search (name, description, keywords)","schema":{"type":"string"}},{"name":"city","in":"query","description":"Filter by city (e.g. New York, London, Dubai)","schema":{"type":"string"}},{"name":"country","in":"query","description":"Filter by country (e.g. United States, United Kingdom)","schema":{"type":"string"}},{"name":"industry","in":"query","description":"Filter by industry (e.g. Technology, Healthcare)","schema":{"type":"string"}},{"name":"service","in":"query","description":"Filter by service (e.g. Media Relations, Digital PR)","schema":{"type":"string"}},{"name":"type","in":"query","description":"agency or newswire","schema":{"type":"string","enum":["agency","newswire"]}},{"name":"limit","in":"query","description":"Max results (default 10, max 25)","schema":{"type":"integer","default":10,"maximum":25}}],"responses":{"200":{"description":"List of agencies matching criteria"}}}},"\/agencies\/{slug}":{"get":{"operationId":"getAgencyDetails","summary":"Get agency profile details","description":"Get detailed information about a PR agency including services, pricing, ratings, and contact details.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Agency details"}}}},"\/publications":{"get":{"operationId":"searchPublications","summary":"Search media outlets for PR placements","description":"Find publications for press release placements, sponsored articles, and guest posts. Filter by category, domain authority, and price.","parameters":[{"name":"q","in":"query","description":"Search by name or category","schema":{"type":"string"}},{"name":"category","in":"query","description":"Filter by category (e.g. Technology, Business)","schema":{"type":"string"}},{"name":"min_da","in":"query","description":"Minimum domain authority (1-100)","schema":{"type":"integer"}},{"name":"max_price","in":"query","description":"Maximum price in USD","schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Max results (default 10, max 25)","schema":{"type":"integer","default":10,"maximum":25}}],"responses":{"200":{"description":"List of publications"}}}},"\/publications\/{slug}":{"get":{"operationId":"getPublicationDetails","summary":"Get publication details","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Publication details with pricing"}}}},"\/pr-packages":{"get":{"operationId":"browsePrPackages","summary":"Browse press release distribution packages","description":"Browse pre-packaged press release distribution services from newswires. Distribute your press release to hundreds of media outlets.","parameters":[{"name":"q","in":"query","description":"Search by name or description","schema":{"type":"string"}},{"name":"max_price","in":"query","description":"Maximum price in USD","schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Max results (default 10, max 25)","schema":{"type":"integer","default":10,"maximum":25}}],"responses":{"200":{"description":"List of PR packages"}}}},"\/pr-packages\/{slug}":{"get":{"operationId":"getPrPackageDetails","summary":"Get PR package details","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Package details with features and pricing"}}}},"\/rankings":{"get":{"operationId":"getAgencyRankings","summary":"Get top-ranked PR agencies","description":"Rankings based on verified client reviews and ratings. Filter by country or industry.","parameters":[{"name":"country","in":"query","schema":{"type":"string"}},{"name":"industry","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":20,"maximum":50}}],"responses":{"200":{"description":"Ranked list of agencies"}}}},"\/quote-request":{"post":{"operationId":"submitQuoteRequest","summary":"Request a quote from a PR agency","description":"Submit a quote request to a PR agency. No authentication required.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["agency_slug","client_name","client_email","message"],"properties":{"agency_slug":{"type":"string"},"client_name":{"type":"string"},"client_email":{"type":"string","format":"email"},"message":{"type":"string"}}}}}},"responses":{"200":{"description":"Quote request submitted"}}}},"\/register-lead":{"post":{"operationId":"registerLead","summary":"Capture client as a lead instantly (guest, no registration)","description":"Call this as soon as user provides name and email. Saves lead for CRM and follow-up. No user account created \u2014 pure guest checkout. Returns lead_id for tracking.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string","description":"Full name"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"company_name":{"type":"string"},"company_website":{"type":"string"},"media_contact":{"type":"string"},"country":{"type":"string"},"city":{"type":"string"},"interest":{"type":"string","description":"What the user is interested in (e.g. \"article on The UBJ\")"},"source":{"type":"string","default":"ai_chatgpt"}}}}}},"responses":{"200":{"description":"Lead captured with returning user detection"}}}},"\/orders\/by-email":{"post":{"operationId":"ordersByEmail","summary":"Check all orders for a given email address","description":"Lets users ask \"What is my order status?\" by providing their email. Returns all their orders with status, product, and price.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","description":"Client email address to look up orders"}}}}}},"responses":{"200":{"description":"List of orders for the given email"}}}},"\/checkout\/publication":{"post":{"operationId":"checkoutPublication","summary":"Save all details and create payment link for a publication placement","description":"Collects ALL client and article details upfront, saves to order (lead capture), then creates Stripe payment link. Collect everything BEFORE calling this.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["publication_slug","client_name","client_email","title","content"],"properties":{"publication_slug":{"type":"string"},"client_name":{"type":"string"},"client_email":{"type":"string","format":"email"},"title":{"type":"string","description":"Article headline"},"content":{"type":"string","description":"Full article body"},"company_name":{"type":"string"},"contact_phone":{"type":"string"},"media_contact":{"type":"string","description":"Media contact name and title"},"company_website":{"type":"string","description":"Company website URL"},"country":{"type":"string"},"city":{"type":"string"},"client_brief":{"type":"string"}}}}}},"responses":{"200":{"description":"Payment URL, order token, and image upload URL"}}}},"\/checkout\/pr-package":{"post":{"operationId":"checkoutPrPackage","summary":"Save all details and create payment link for a PR distribution package","description":"Collects ALL client and press release details upfront, saves to order (lead capture), then creates Stripe payment link. Collect everything BEFORE calling this.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["package_slug","client_name","client_email","title","content"],"properties":{"package_slug":{"type":"string"},"client_name":{"type":"string"},"client_email":{"type":"string","format":"email"},"title":{"type":"string","description":"Press release headline"},"content":{"type":"string","description":"Full press release body"},"company_name":{"type":"string"},"contact_phone":{"type":"string"},"media_contact":{"type":"string","description":"Media contact name and title"},"company_website":{"type":"string","description":"Company website URL"},"country":{"type":"string"},"city":{"type":"string"},"client_brief":{"type":"string"}}}}}},"responses":{"200":{"description":"Payment URL, order token, and image upload URL"}}}},"\/order\/{token}\/status":{"get":{"operationId":"getOrderStatus","summary":"Check order payment status","description":"Check if an order has been paid using the secure order token.","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Order status details"}}}},"\/order\/{token}\/image-upload-url":{"get":{"operationId":"getImageUploadUrl","summary":"Get image upload link for an order","description":"Returns a URL where the user can upload a featured image for their article or press release. Share this link with the user \u2014 they click it, drag-and-drop their image, and return to chat.","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Upload URL, current image status, and instructions"}}}},"\/order\/preview-content":{"post":{"operationId":"previewOrderContent","summary":"Preview order content before final submission","description":"Returns a summary of the article\/press release for user confirmation before submitting. Show the preview to the user and ask them to confirm before calling submitOrderContent.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["order_token","title","content"],"properties":{"order_token":{"type":"string"},"title":{"type":"string","description":"Article or press release headline"},"content":{"type":"string","description":"Full article or press release body"},"company_name":{"type":"string"},"contact_email":{"type":"string","format":"email"},"contact_phone":{"type":"string"},"media_contact":{"type":"string","description":"Media contact name and title"},"company_website":{"type":"string","description":"Company website URL"},"country":{"type":"string"},"city":{"type":"string"}}}}}},"responses":{"200":{"description":"Content preview with submission summary for user confirmation"}}}},"\/order\/submit-content":{"post":{"operationId":"submitOrderContent","summary":"Submit article\/press release content for a paid order","description":"After payment is confirmed, submit the article or press release content to fulfill the order.","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["order_token","title","content"],"properties":{"order_token":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"company_name":{"type":"string"},"contact_email":{"type":"string","format":"email"},"contact_phone":{"type":"string"}}}}}},"responses":{"200":{"description":"Content submitted successfully"}}}},"\/newsroom\/submit":{"post":{"operationId":"submitPressRelease","summary":"Submit a press release to the newsroom","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["name","email","company_name","title","excerpt","content"],"properties":{"name":{"type":"string"},"email":{"type":"string","format":"email"},"company_name":{"type":"string"},"title":{"type":"string"},"excerpt":{"type":"string"},"content":{"type":"string"},"media_contact":{"type":"string"},"phone":{"type":"string"},"country":{"type":"string"},"city":{"type":"string"},"company_website":{"type":"string","description":"Company website URL"}}}}}},"responses":{"200":{"description":"Press release submitted"}}}},"\/shorten-link":{"post":{"operationId":"shortenLink","x-openai-isConsequential":false,"summary":"Create a branded short link (online.pr\/go\/slug) for any URL with click analytics and UTM tracking","requestBody":{"required":true,"content":{"application\/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"The destination URL to shorten"},"slug":{"type":"string","description":"Custom slug (e.g. \"series-b\"). Auto-generated if omitted."},"title":{"type":"string","description":"Title for the link"},"utm_source":{"type":"string","description":"UTM source (e.g. \"twitter\")"},"utm_medium":{"type":"string","description":"UTM medium (e.g. \"social\")"},"utm_campaign":{"type":"string","description":"UTM campaign (e.g. \"launch-2026\")"}}}}}},"responses":{"200":{"description":"Short link created with short_url, slug, and analytics_url"}}}},"\/link\/{slug}\/stats":{"get":{"operationId":"getLinkStats","summary":"Get click statistics for an online.pr short link","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"The short link slug"}],"responses":{"200":{"description":"Link statistics including total_clicks, unique_clicks, and status"}}}}},"security":[]}