{"openapi":"3.1.0","info":{"title":"LinkHatch ordering API","version":"1.0.0","description":"Read LinkHatch's catalog and place orders for link building, digital PR and outreach. Ordering charges nothing: we email the owner a link to confirm the order, then a person replies by email with a site shortlist to approve or a quote. Monthly plans go to Stripe checkout after confirming.","contact":{"name":"Mariana, LinkHatch","email":"mariana@linkhatch.com","url":"https://linkhatch.com/agents"}},"servers":[{"url":"https://linkhatch.com"}],"paths":{"/api/catalog":{"get":{"operationId":"getCatalog","summary":"Services, link tiers, plans, PR prices and policies","responses":{"200":{"description":"Catalog","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/order":{"post":{"operationId":"placeOrder","summary":"Place an order or request a quote or free audit","description":"Confirm the details with your user first. We email the owner of `email` a link to confirm the order (202, status awaiting_confirmation); nothing is placed, charged or sent to anyone until they press Confirm. Quote order_ref in any follow-up email.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":200},"description":"Reuse on retries: the same key and email return the first answer and send no second email."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind","email"],"properties":{"kind":{"type":"string","enum":["audit","plan","links","pr","outreach","quote"]},"email":{"type":"string","format":"email","description":"The human owner's email; replies go here."},"site":{"type":"string","description":"Domain to build links to. Required for audit, plan and links."},"plan":{"type":"string","enum":["starter","growth","agency"]},"credits":{"type":"integer","minimum":10,"description":"Agency plan: credits a month."},"tier":{"type":"string","enum":["standard","plus","premium"]},"quantity":{"type":"integer","minimum":1,"maximum":500},"pr_item":{"type":"string","enum":["expert-quote","press-release","story-campaign"]},"competitors":{"type":"string"},"target_pages":{"type":"string"},"niche":{"type":"string"},"min_dr":{"type":"integer"},"budget_usd":{"type":"number"},"deadline":{"type":"string"},"notes":{"type":"string"},"name":{"type":"string"},"company":{"type":"string"},"agent_name":{"type":"string"},"on_behalf_of":{"type":"string"}}},"example":{"kind":"links","email":"seo@example.com","site":"example.com","tier":"plus","quantity":5,"niche":"edtech","agent_name":"Acme SEO agent"}}}},"responses":{"202":{"description":"Order waiting for the owner to confirm from the emailed link","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"order_ref":{"type":"string"},"status":{"type":"string","enum":["awaiting_confirmation","received"]},"estimate":{"type":"object","properties":{"totalUsd":{"type":["number","null"]},"interval":{"type":["string","null"]},"lines":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}}},"checkout_url":{"type":["string","null"]},"confirmation":{"type":"object","properties":{"sent_to":{"type":"string","description":"Masked address the link went to"},"expires_at":{"type":"string","format":"date-time"}}},"next_steps":{"type":"array","items":{"type":"string"}}}}}}},"413":{"description":"Order too long to confirm by email; shorten the free-text fields"},"422":{"description":"Invalid field; the error names it"},"429":{"description":"Too many orders for this address or from this caller; see Retry-After"},"503":{"description":"Intake unavailable; email the order instead"}}}}}}