{"openapi":"3.0.3","info":{"title":"BeReach API","description":"BeReach | Agentic lead generation and outreach API","version":"2.4.0","contact":{"name":"BeReach Support","email":"alexandre@berea.ch","url":"https://berea.ch/api"},"license":{"name":"AGPL-3.0 license","url":"https://github.com/berea-ch/bereach/blob/main/LICENSE.md"}},"servers":[{"url":"https://api.bereach.ai","description":"Production API"},{"url":"https://api-staging.bereach.ai","description":"Staging API"}],"tags":[{"name":"public","description":"Cookieless public data: read public profiles, posts, companies, and jobs anonymously through the proxy, with no connected account and no session rate budget spent"},{"name":"search","description":"Search LinkedIn for posts, people, companies, and jobs. Includes parameter resolution (typeahead) for converting text to LinkedIn IDs."},{"name":"salesNav","description":"Search LinkedIn Sales Navigator for leads (people) and accounts (companies). Requires an active Sales Navigator subscription."},{"name":"profile","description":"Endpoints for the authenticated user's own LinkedIn profile"},{"name":"scrapers","description":"Endpoints for scraping LinkedIn interactions (likes, comments, posts)"},{"name":"actions","description":"Endpoints for performing LinkedIn actions (visit, connect, message, like, reply, publish)"},{"name":"chat","description":"Endpoints for LinkedIn inbox: list conversations, search, read messages"},{"name":"companyPages","description":"Endpoints for managing LinkedIn company pages: list, permissions, posts, and actions"},{"name":"campaigns","description":"Endpoints for managing campaigns and workflow filtering"},{"name":"contacts","description":"Endpoints for managing contacts and lifecycle stages without requiring a campaign"},{"name":"scheduledMessages","description":"Endpoints for creating, scheduling, and managing draft DMs"},{"name":"context","description":"Endpoints for managing user-defined context entries (who you are, what you sell, ICP, Messaging Playbook). The type is a closed set and each type takes one scope shape."},{"name":"tasks","description":"Endpoints for listing, cancelling, and monitoring async campaign tasks and workflow chains"},{"name":"settings","description":"Endpoints for DM polling and connection polling configuration"},{"name":"workspace","description":"Endpoints for managing workspace accounts, invitations, and plan upgrades"}],"paths":{"/collect/linkedin/engagers":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"collectEngagers","x-speakeasy-name-override":"collectEngagers","summary":"Collect people on a post","description":"One verb for people on a post. One page per call, likes then comments, paced. With a connected account, skips the public preview and starts a collect run that saves visitable reactors and full commenters as contacts, returning a run id. People land in the list as each page finishes. Another page exists when moreAvailable is true; call again with more true only if the user asked or tapped Load more. Each page uses the connected account's action budget. People who need extra lookup we don't do yet are skipped and counted as hiddenSkipped. Without a connected account, returns a public preview of top commenters only (reactor identities are not public). Preview people are not saved. Connecting does not auto-start a run; call this again after connecting.","tags":["scrapers"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"postUrls":["https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789/"]},"schema":{"type":"object","properties":{"postUrls":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string"},"description":"LinkedIn feed/update or /posts/ URLs only. Not Pulse, Sales Navigator, company pages, or lnkd.in short links."},"more":{"description":"Next page of the same posts. Set only when the user asked for more people or tapped Load more. Each page uses the connected account's action budget. If likes plus comments is 500 or more, wait for them to ask again.","type":"boolean"},"untilCount":{"description":"Target list size they named (100+ means 100), at most 500. Only when they named a target size. One call; the run pages itself. Unasked drain is still one page.","type":"integer","minimum":1,"maximum":500},"surface":{"description":"Which engagement to read: only the people who reacted, only the people who commented, or both. Defaults to both. Ask for one when the request names one, so the result is not padded with the other kind of engagement.","type":"string","enum":["likes","comments","both"]},"campaignSlug":{"description":"Optional list to pin saved contacts onto. Ignored on the public preview path.","type":"string"}},"required":["postUrls"]}}}},"responses":{"200":{"description":"Collect-run id, or a public commenter preview when no account is connected","content":{"application/json":{"example":{"success":true,"coverage":"preview","needs_linkedin":true,"people":[{"name":"A commenter","profileUrl":"https://www.linkedin.com/in/example","publicIdentifier":"example","commentText":"Useful thread.","type":"comment"}],"count":1,"hiddenSkipped":0,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"runId":{"description":"Present when a connected account started a collect run. People are saved as contacts as the run proceeds, and they appear in the list rather than in the reply. A run id means the connected account was used: never explain this result as needing a connection.","type":"string"},"status":{"description":"Where the run is. While it is running the list is the count, so do not state one. Once it is completed the saved number is final.","type":"string"},"coverage":{"description":"Present when no account is connected. Top visible commenters only; reactor identities are not public.","type":"string","enum":["preview"]},"needs_linkedin":{"type":"boolean"},"people":{"type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"},"imageUrl":{"nullable":true,"type":"string"},"commentText":{"nullable":true,"type":"string"},"type":{"type":"string","enum":["like","comment"]}},"required":["name","profileUrl"],"additionalProperties":false}},"postText":{"nullable":true,"type":"string"},"totals":{"description":"The post's own engagement badges, summed across the posts read. A sum, so it can never answer how many came from one post: `perPost` answers that. Absent while `count` is above 0 means the badge could not be read, never that nobody engaged. Both zero or absent WITH count 0 is the only shape that means no visible engagement on this page.","type":"object","properties":{"likes":{"nullable":true,"type":"number"},"comments":{"nullable":true,"type":"number"}},"additionalProperties":false},"count":{"description":"People saved by this call. The number to narrate. Zero is only an empty post when `unreadable` is 0; above 0 those people were not shown rather than absent.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hiddenSkipped":{"description":"People skipped because they need extra lookup we don't do yet. Not saved. Omit or 0 when none.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unreadable":{"description":"Posts whose asked-for engagement could not be read. DISTINCT posts, not a sum of the two counters below: a post that lost both its lists is one post. Above 0 means the answer is incomplete, and those posts must never be reported as having no engagement.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"likesUnavailable":{"description":"Posts where the reaction list could not be read. On a run that read both surfaces those posts contributed commenters only; on a run scoped with `surface` they contributed nobody. Say so when above 0; it does not mean nobody reacted.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsUnavailable":{"description":"Posts where the comment list could not be read. The comment half of the field above, and the same rule: it does not mean nobody commented.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"perPost":{"description":"People SAVED per post, keyed by post id, split into likes and comments. Someone who engaged with several of the posts is counted once, under the first post they were saved from, so these are saved counts and not that post's engagement count: say saved, never say the post had only this many engagers. They add up to count. totals is a sum across posts, not a per-post figure.","type":"object","additionalProperties":{"type":"object","properties":{"likes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comments":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["likes","comments"],"additionalProperties":false}},"hasMore":{"type":"boolean"},"moreAvailable":{"description":"True when another page of people exists. Do not fetch it unless the user asked or tapped Load more.","type":"boolean"},"remainder":{"description":"When more pages exist: this page only — do not say fully collected, all pages, or no more remain.","type":"string"},"commentersTruncated":{"description":"Preview only: posts whose page showed more commenters than the public view exposes. Above 0 means the people listed are the top slice, never everyone who engaged; the full thread needs a connected account.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"description":"A caveat about this result in words ready to relay, when one applies.","type":"string"},"_displayLinkedInConnect":{"description":"Chat-only connect card marker on the public preview path. autoRetry false means connecting does not start a collect run.","type":"object","properties":{"reason":{"type":"string"},"autoRetry":{"type":"boolean"}},"required":["reason"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/collect/linkedin/posts":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"]},"operationId":"collectPosts","x-speakeasy-name-override":"collectPosts","summary":"Collect posts of a profile","description":"Starts a collect run for recent posts of a LinkedIn profile or company page through the connected account. One page per call, paced. Returns a run id. Requires a connected account; there is no public preview. When moreAvailable is true, call again with more true only if the user asked or tapped Load more. Each page uses the connected account's action budget.","tags":["scrapers"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profileUrl":"https://www.linkedin.com/in/username"},"schema":{"type":"object","properties":{"profileUrl":{"type":"string","description":"LinkedIn profile or company page URL, vanity name, or URN. Company URLs use the organization feed; personal URLs use the profile activity feed."},"more":{"description":"Next page of the same profile. Set only when the user asked for more posts or tapped Load more. Each page uses the connected account's action budget.","type":"boolean"}},"required":["profileUrl"]}}}},"responses":{"200":{"description":"Collect-run id for profile posts","content":{"application/json":{"example":{"success":true,"runId":"a1b2c3d4e5f6a1b2c3d4e5f6","status":"running","posts":[],"count":0,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"runId":{"type":"string","description":"Collect-run id. Posts arrive on the run record; this response may include the first pages already collected."},"status":{"type":"string"},"totals":{"type":"object","properties":{"posts":{"nullable":true,"type":"number"}},"additionalProperties":false},"posts":{"type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"type":{"type":"string","enum":["activity","ugcPost","share"],"description":"LinkedIn post type: 'ugcPost' = standard post, 'share' = native share/repost, 'activity' = legacy format."},"isRepost":{"description":"True when the post is a repost/reshare of another post. Absent for original posts.","type":"boolean"},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"authorName":{"description":"Display name of the post's author.","type":"string"},"authorProfileUrl":{"description":"Author's profile URL.","type":"string"},"authorPublicIdentifier":{"description":"Author's vanity slug, when they have one.","nullable":true,"type":"string"},"authorProfileUrn":{"description":"Author's profile URN.","nullable":true,"type":"string"},"authorHeadline":{"description":"Author's headline as shown on the post.","type":"string"},"authorImageUrl":{"description":"Author's avatar URL.","type":"string"},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unreadable":{"description":"Pages of this profile's posts that LinkedIn would not serve. Above 0 means an empty or short list is unread rather than a profile that does not post, and must not be reported as one.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"postsUnavailable":{"description":"The same count, named for the surface it belongs to.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"moreAvailable":{"description":"True when another page of posts exists. Do not fetch it unless the user asked or tapped Load more.","type":"boolean"},"hasMore":{"type":"boolean"},"remainder":{"description":"When more pages exist: this page only — do not say fully collected, all pages, or no more remain.","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","runId","status","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/employees":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"searchEmployees","x-speakeasy-name-override":"employees","summary":"Search people at a company","description":"People currently associated with a company on LinkedIn. Pass a company URL, vanity slug, or name. Implemented via the cookie people-search path with `currentCompany` (HTML pages of ~10, accumulated to `count`). Optional `keywords` narrows within that company. Same result shape as search people.","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"company":"https://www.linkedin.com/company/stripe/","count":10},"schema":{"type":"object","properties":{"company":{"type":"string","minLength":1,"description":"The company, as its LinkedIn page URL, its vanity slug, or its display name. A URL or slug is exact; a display name is matched to a company page, and a name that matches none is refused rather than searched without the filter."},"keywords":{"description":"Optional keywords to narrow people at that company (title, name, skills).","type":"string"},"start":{"description":"Pagination offset into the accumulated employee list (default 0).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"How many people to return in total (default 10, max 50).","type":"integer","minimum":1,"maximum":50}},"required":["company"]}}}},"responses":{"200":{"description":"People at the company","content":{"application/json":{"example":{"success":true,"company":"stripe","items":[{"type":"PEOPLE","name":"Jane Smith","profileUrl":"https://www.linkedin.com/in/janesmith","headline":"Senior Product Manager at Google","location":"San Francisco Bay Area","profilePicture":null,"networkDistance":"DISTANCE_2","currentPositions":[{"company":"Google","role":"Senior Product Manager"}],"publicIdentifier":"janesmith","profileUrn":"urn:li:fsd_profile:ACoAAB1234567890"}],"paging":{"start":0,"count":10,"total":0},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"company":{"type":"string","description":"Resolved company key used for the search (slug or name as passed after parse)."},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PEOPLE"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"networkDistance":{"nullable":true,"description":"LinkedIn network distance: DISTANCE_1=connected, DISTANCE_2=2nd degree, DISTANCE_3=3rd degree, OUT_OF_NETWORK=not connected.","type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK"]},"currentPositions":{"type":"array","items":{"type":"object","properties":{"company":{"nullable":true,"type":"string"},"role":{"nullable":true,"type":"string"}},"required":["company","role"],"additionalProperties":false},"description":"Current work positions for this profile."},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...) when available","type":"string"},"publicIdentifier":{"nullable":true,"description":"Vanity slug from profile URL (e.g. john-doe) when not URN-based","type":"string"},"nameMatch":{"description":"True when the search ranker matched the literal name (vs headline/skills). When picking between two same-named people, the one with nameMatch=true is the one the user typed.","nullable":true,"type":"boolean"},"badgeText":{"description":"Profile badge surfaced by LinkedIn (Top Voice / Premium / Verified / Influencer). Indicates investment in the platform and is a useful qualifier weight.","nullable":true,"type":"string"},"ringStatus":{"description":"Profile ring status visualised on LinkedIn (OPEN_TO_WORK, HIRING, OPEN_FOR_BUSINESS, etc.). Open intent signal — directly relevant for recruiters, vendors, and sales.","nullable":true,"type":"string"},"summary":{"description":"Additional profile snippet returned by the search ranker, distinct from headline. Sometimes contains mutual-connection context or topic affinity (e.g. 'Writes about B2B sales').","nullable":true,"type":"string"},"actorInsights":{"description":"LinkedIn-curated context strings — typical entries: 'X mutual connections', 'Follows {company}', 'Worked at {company}'. Use these directly in personalised outreach openers.","type":"array","items":{"type":"string"}},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data: fields a session would fill may be empty, and the name may be derived from the profile URL.","type":"string","enum":["public"]}},"required":["type","name","profileUrl","headline","location","profilePicture","networkDistance","currentPositions","profileUrn","publicIdentifier"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","company","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/posts":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"post"},"operationId":"searchPosts","x-speakeasy-name-override":"posts","summary":"Search LinkedIn Posts","description":"# Search LinkedIn Posts\n\nSearch LinkedIn's content index for posts matching your keywords and filters. Returns structured post data including full text, engagement metrics, author info, and URLs.\n\n## Required parameters\n- **keywords** (string, required): The search terms to match against post content. Examples: `\"AI automation\"`, `\"remote work trends\"`, `\"SaaS growth strategies\"`.\n\n## Keyword syntax (Boolean operators)\nKeywords support LinkedIn Boolean search syntax:\n- **Exact phrase**: `\"outreach automation\"` — matches only that exact phrase\n- **AND**: `AI AND marketing` — both terms required (spaces default to AND)\n- **OR**: `\"growth hacking\" OR \"growth marketing\"` — either term\n- **NOT**: `outreach NOT webinar` — exclude unwanted terms\n- **Parentheses**: `(AI OR ML) AND \"case study\"` — group logic\n\nOperators must be **UPPERCASE**. Precedence: Quotes > Parentheses > NOT > AND > OR.\n\n## Available filters\n| Filter | Type | Description |\n|--------|------|-------------|\n| `sortBy` | `\"relevance\"` \\| `\"date\"` | Sort by relevance (default) or most recent first |\n| `authorJobTitle` | string[] | The author's job title, free text. The strongest filter here: two different titles return sets of authors that do not overlap, so asking twice reaches twice as many people |\n| `postedBy` | string[] | Restrict to your own network: `first` or `following`. Far fewer results by nature |\n| `contentType` | `\"images\"` \\| `\"videos\"` \\| `\"documents\"` | Filter by media type |\n| `authorIndustry` | string[] | Author's industry IDs (resolve via `/search/linkedin/parameters` with type=`INDUSTRY`) |\n| `authorCompany` | string[] | Author's company IDs (resolve via `/search/linkedin/parameters` with type=`COMPANY`) |\n| `datePosted` | `\"past-24h\"` \\| `\"past-week\"` \\| `\"past-month\"` | Filter by recency window. On a high-volume query the newest posts are shared across windows, so the first page can look unchanged while the narrower window holds fewer results |\n\n## Response fields (per item)\n| Field | Type | Description |\n|-------|------|-------------|\n| `postUrl` | string | Direct URL to the LinkedIn post |\n| `text` | string | Full post text content |\n| `date` | number | Publication timestamp (ms since epoch) |\n| `likesCount` | number | Total reactions |\n| `commentsCount` | number | Total comments |\n| `sharesCount` | number | Total shares/reposts |\n| `author.name` | string | Author's display name |\n| `author.profileUrl` | string | Author's LinkedIn profile URL |\n| `author.headline` | string | Author's headline |\n| `author.isCompany` | boolean | Whether the author is a company page |\n| `isRepost` | boolean | Whether this is a repost of another post |\n\n## Pagination\n- Default page size: 10, max: 50\n- Use `start` + `count` to paginate: `start=0, count=10` → page 1, `start=10, count=10` → page 2\n- Check `hasMore` in the response to know if more pages exist\n- `paging.total` gives the estimated total number of results\n\n## Example workflows\n1. **Content research**: Search for trending topics → analyze top posts → extract engagement patterns\n2. **Lead generation**: Search for posts about problems your product solves → extract author profiles\n3. **Competitive intelligence**: Search for competitor mentions → track sentiment and engagement\n\n## Credits\n","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"keywords":"AI automation","sortBy":"date","authorJobTitle":["head of engineering"],"count":10,"start":0},"schema":{"type":"object","properties":{"keywords":{"type":"string","description":"Search keywords (required). Searches across post text content. Supports LinkedIn Boolean syntax: use double quotes for exact phrases (e.g. \"AI automation\"), AND to require both terms, OR for alternatives (e.g. \"growth hacking\" OR \"growth marketing\"), NOT to exclude (e.g. outreach NOT webinar), and parentheses to group (e.g. (AI OR ML) AND \"case study\"). Operators must be UPPERCASE. Without quotes, multi-word queries are treated as AND by default which may return broad results."},"url":{"description":"A LinkedIn search URL. The category and every filter the vertical can actually apply are read from it; a facet it carries that this search cannot apply is reported back as a URL_FACET warning rather than applied, so a result set carrying those is WIDER than the URL asked for. Explicit params override anything read from the URL.","type":"string"},"sortBy":{"description":"Sort order. 'relevance' (default) or 'date' (most recent first). Natural forms ('newest','recent') are normalized server-side.","type":"string"},"datePosted":{"description":"Filter posts by recency window: 'past-24h' < 'past-week' < 'past-month'. Natural forms ('last week','this month','24 hours') are normalized server-side. On a high-volume query the newest posts are shared across windows, so the first page of results can look identical while the narrower window genuinely holds fewer; judge it by how deep the results go rather than by the top of the list.","type":"string"},"contentType":{"description":"Filter by media type: 'images' (photos), 'videos', 'documents' (carousel/PDF). Natural forms ('video','photo','pdf') are normalized server-side.","type":"string"},"authorIndustry":{"description":"Filter by the post author's industry. Pass human labels (e.g. ['Software Development']) — server resolves to LinkedIn industry IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"authorCompany":{"description":"Filter by the post author's company. Pass company names (e.g. ['Google','Stripe']) — server resolves to LinkedIn company IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"authorJobTitle":{"description":"Filter by the post author's job title, as free text. The strongest filter on post search by a wide margin: two different titles return sets of authors that do not overlap at all, so it is also the best way to reach more people by asking twice. Needs no id, unlike the industry and company filters.","type":"array","items":{"type":"string"}},"postedBy":{"description":"Restrict to posts from your own network: 'first' for first-degree connections, 'following' for people you follow. Returns far fewer results than an open search by nature, since it is bounded by who you know rather than by everything LinkedIn has indexed.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset (default 0). Use multiples of `count` to page through results. Example: start=0 for page 1, start=10 for page 2 (with count=10).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"How many posts to return (default 20, max 50). One SDUI pager call can return up to fifty (measured).","type":"integer","minimum":1,"maximum":50}},"required":["keywords"]}}}},"responses":{"200":{"description":"List of LinkedIn posts matching the search criteria","content":{"application/json":{"example":{"success":true,"category":"posts","items":[{"type":"POST","postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:1234567890","text":"Just shipped our new AI automation pipeline...","date":1731547200000,"likesCount":142,"commentsCount":23,"sharesCount":8,"postUrn":"urn:li:activity:1234567890","postId":"1234567890","author":{"name":"Sarah Chen","profileUrl":"https://www.linkedin.com/in/sarahchen","headline":"VP Engineering at TechCo","profilePicture":null,"isCompany":false,"publicIdentifier":"sarahchen","profileUrn":"urn:li:fsd_profile:ACoAAC9876543210"},"isRepost":false}],"paging":{"start":0,"count":10,"total":500},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["posts"]},"items":{"type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"},"type":{"type":"string","enum":["POST"]},"author":{"type":"object","properties":{"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"isCompany":{"type":"boolean"},"publicIdentifier":{"nullable":true,"description":"Vanity slug when not URN-based","type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN when available","type":"string"}},"required":["name","profileUrl","headline","profilePicture","isCompany","publicIdentifier","profileUrn"],"additionalProperties":false},"isRepost":{"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type","author","isRepost"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/people":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"searchPeople","x-speakeasy-name-override":"people","summary":"Search LinkedIn People","description":"# Search LinkedIn People\n\nFind professionals on LinkedIn by name, title, company, location, industry, and more. Returns structured profile data including name, headline, current positions, connection degree, profile picture, **plus 2026-06-03 enrichments**: `nameMatch` (true when the result matched on literal name — strong personhood signal), `badgeText` (Top Voice / Premium / Verified / Influencer — qualifier weight), `ringStatus` (OPEN_TO_WORK / HIRING — open intent signals you can directly target), `summary` (additional snippet beyond headline), `actorInsights` (LinkedIn-curated context like 'X mutual connections', 'Follows {company}' — use directly in personalised outreach openers).\n\n## Parameters\n- **keywords** (optional): Search terms matched against name, headline, company, skills, and bio\n- You can search by filters alone (no keywords) — e.g. find all 2nd-degree connections in Paris\n\n## Keyword syntax (Boolean operators)\nKeywords support LinkedIn Boolean search syntax:\n- **Exact phrase**: `\"product manager\"` — matches only that exact title\n- **AND**: `engineer AND startup` — both terms required (spaces default to AND)\n- **OR**: `CEO OR founder OR CTO` — any of the terms\n- **NOT**: `manager NOT assistant` — exclude unwanted terms\n- **Parentheses**: `(CEO OR CTO) AND SaaS` — group logic\n\nOperators must be **UPPERCASE**. Precedence: Quotes > Parentheses > NOT > AND > OR.\n\n## Available filters\nPass HUMAN LABELS for location / industry / currentCompany / pastCompany / school — the server resolves them to LinkedIn IDs via typeahead. Numeric IDs pass through unchanged if you already have them.\n\n| Filter | Type | Description |\n|--------|------|-------------|\n| `connectionDegree` | `[\"F\"\\|\"S\"\\|\"O\"]` | Connection level: F=1st, S=2nd, O=3rd+ |\n| `firstName` | string | Exact first name match |\n| `lastName` | string | Exact last name match |\n| `title` | string | Current job title (supports `\\|` OR syntax: `\"CEO\\|CTO\"`) |\n| `connectionOf` | string | Profile URN — find their connections |\n| `followersOf` | string[] | Profile URNs — find a creator's followers |\n| `openToVolunteering` | boolean | Only people open to volunteering |\n| `serviceCategories` | string[] | Service-Marketplace category names |\n| `profileLanguage` | string[] | ISO 639-1 codes: `[\"en\",\"fr\"]` |\n| `location` | string[] | Geo labels (e.g. `[\"Paris\",\"France\"]`) — resolved server-side |\n| `industry` | string[] | Industry labels (e.g. `[\"Software Development\"]`) — resolved server-side |\n| `currentCompany` | string[] | Company labels (e.g. `[\"Stripe\",\"Datadog\"]`) — resolved server-side |\n| `pastCompany` | string[] | Company labels — resolved server-side |\n| `school` | string[] | School/university labels — resolved server-side |\n\n## Response fields (per item)\n| Field | Type | Description |\n|-------|------|-------------|\n| `name` | string | Full display name |\n| `profileUrl` | string | LinkedIn profile URL |\n| `headline` | string\\|null | Professional headline |\n| `location` | string\\|null | Geographic location |\n| `profilePicture` | string\\|null | Profile photo URL |\n| `networkDistance` | string\\|null | `DISTANCE_1`, `DISTANCE_2`, `DISTANCE_3`, or `OUT_OF_NETWORK` |\n| `currentPositions` | array | Current job positions with `company` and `role` |\n\n## Pagination\n- Default page size: 10, max: 50\n- Use `start` + `count` to paginate. Check `hasMore` for more pages.\n- Paginate via `start` + `count`; check `hasMore` for more pages.\n\n## Example workflows\n1. **Prospect list building**: Search by title + location + industry → build a targeted outreach list\n2. **Recruiting**: Search by title + company + school → find people who match\n3. **Network mapping**: Search `connectionOf` + filters → explore someone's network\n\n## Workflow — pass labels directly\n```\nPOST /search/linkedin/people {\n  keywords: 'product manager',\n  location: ['San Francisco'],\n  currentCompany: ['Google']\n}\n→ server resolves labels → matching people\n```\nOnly call `/search/linkedin/parameters` when you need to EXPLORE available values (\"what are the canonical industry buckets?\"), never as a prerequisite to a search.\n\n## Credits\n","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"keywords":"product manager","connectionDegree":["S"],"location":["103644278"],"currentCompany":["1441"],"count":10,"start":0},"schema":{"type":"object","properties":{"keywords":{"description":"Search keywords. Matches against name, headline, company, skills, and bio. Optional — you can search by filters alone (e.g. all 2nd-degree connections in Paris). Supports LinkedIn Boolean syntax: use double quotes for exact phrases (e.g. \"product manager\"), AND to require both terms, OR for alternatives (e.g. CEO OR founder OR CTO), NOT to exclude (e.g. manager NOT assistant), and parentheses to group (e.g. (CEO OR CTO) AND SaaS). Operators must be UPPERCASE.","type":"string"},"url":{"description":"A LinkedIn search URL. The category and every filter the vertical can actually apply are read from it; a facet it carries that this search cannot apply is reported back as a URL_FACET warning rather than applied, so a result set carrying those is WIDER than the URL asked for. Explicit params override anything read from the URL.","type":"string"},"maxSearches":{"description":"Spend up to this many LinkedIn searches on one ask, cutting it along independent angles so the result reaches people a single search cannot. One search returns about ten people; the angles do not overlap much, so the total grows close to linearly with what you spend. Leave it out to run exactly one search.","type":"integer","minimum":1,"maximum":30},"connectionDegree":{"description":"Filter by connection degree. 'F' = 1st degree (your direct connections), 'S' = 2nd degree (connections of connections), 'O' = 3rd+ degree and out of network. Accepts multiple values, e.g. ['F','S'] for 1st and 2nd degree.","type":"array","items":{"type":"string","enum":["F","S","O"]}},"firstName":{"description":"Filter by first name. Exact match (case-insensitive).","type":"string"},"lastName":{"description":"Filter by last name. Exact match (case-insensitive).","type":"string"},"title":{"description":"Filter by current job title. Matches against the person's current position title. Supports LinkedIn Boolean OR: 'CEO OR CTO OR Founder'. Pipe separators are auto-converted: 'CEO|CTO|Founder' becomes 'CEO OR CTO OR Founder'. Use double quotes for exact multi-word titles: '\"Head of Marketing\" OR \"VP Sales\"'.","type":"string"},"connectionOf":{"description":"Find connections of a specific person. Pass the person's LinkedIn profile URN (e.g. 'urn:li:fsd_profile:ACoAABZ0Qo4B...'). Returns people who are connected to this person.","type":"string"},"profileLanguage":{"description":"Filter by LinkedIn profile language. Array of ISO 639-1 codes (e.g. ['en','fr']); the server resolves any code.","type":"array","items":{"type":"string"}},"school":{"description":"Filter by school/university. Pass human names (e.g. ['Harvard','Stanford']) — server resolves to LinkedIn IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"location":{"description":"Filter by geographic location. Pass human names (e.g. ['Paris','France']) — server resolves to LinkedIn geo IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"industry":{"description":"Filter by industry. Pass human names (e.g. ['Software Development','Marketing']) — server resolves to LinkedIn industry IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"currentCompany":{"description":"Filter by current employer. Pass company names (e.g. ['Stripe','Datadog']) — server resolves to LinkedIn company IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"pastCompany":{"description":"Filter by past employer. Pass company names — server resolves to LinkedIn company IDs via typeahead. Numeric IDs pass through if you already have them. Finds people who previously worked at these companies.","type":"array","items":{"type":"string"}},"followersOf":{"description":"Find people who follow a specific creator/thought-leader. Array of LinkedIn profile URNs (e.g. 'urn:li:fsd_profile:ACoAAB...'). A warm-discovery vector: the audience of an influential voice in your space. Get URNs from a prior search_people / visit_profile result.","type":"array","items":{"type":"string"}},"openToVolunteering":{"description":"When true, only return people who marked themselves open to volunteering.","type":"boolean"},"serviceCategories":{"description":"Filter by LinkedIn Service-Marketplace category — for finding freelancers/consultants. Pass category NAMES (e.g. ['Digital Marketing','Web Development','Management Consulting']) — resolved to IDs server-side.","type":"array","items":{"type":"string"}},"verifiedOnly":{"description":"Only people whose identity LinkedIn has verified. Reaches a different set rather than a smaller one: measured, it kept about half the unfiltered results and replaced the rest.","type":"boolean"},"schoolFreetext":{"description":"School as free text, matched on the name rather than an id. Use this when you know what the school is called but not its LinkedIn id; use `school` when you have the id.","type":"string"},"companyHQ":{"description":"Location of the company HEADQUARTERS (geo labels or ids), which is a different question from where the person is. A rep in Paris at a Berlin-headquartered firm matches one and not the other. Labels resolve via typeahead.","type":"array","items":{"type":"string"}},"companySize":{"description":"Company size on the PEOPLE search (employer headcount). Pass a human employee range and it is converted for you: A=1, B=2-10, C=11-50, D=51-200, E=201-500, F=501-1000, G=1001-5000, H=5001-10000, I=10001+.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset into the accumulated result list (default 0). LinkedIn serves about ten people per HTML page; use multiples of that page size to skip whole pages.","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"How many people to return in total (default 10, max 50). LinkedIn's HTML search page is fixed at about ten results; the server pages with ?page=N until this total is reached.","type":"integer","minimum":1,"maximum":50}}}}}},"responses":{"200":{"description":"List of LinkedIn people matching the search criteria","content":{"application/json":{"example":{"success":true,"category":"people","items":[{"type":"PEOPLE","name":"Jane Smith","profileUrl":"https://www.linkedin.com/in/janesmith","headline":"Senior Product Manager at Google","location":"San Francisco Bay Area","profilePicture":null,"networkDistance":"DISTANCE_2","currentPositions":[{"company":"Google","role":"Senior Product Manager"}],"publicIdentifier":"janesmith","profileUrn":"urn:li:fsd_profile:ACoAAB1234567890"}],"paging":{"start":0,"count":10,"total":1000},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["people"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PEOPLE"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"networkDistance":{"nullable":true,"description":"LinkedIn network distance: DISTANCE_1=connected, DISTANCE_2=2nd degree, DISTANCE_3=3rd degree, OUT_OF_NETWORK=not connected.","type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK"]},"currentPositions":{"type":"array","items":{"type":"object","properties":{"company":{"nullable":true,"type":"string"},"role":{"nullable":true,"type":"string"}},"required":["company","role"],"additionalProperties":false},"description":"Current work positions for this profile."},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...) when available","type":"string"},"publicIdentifier":{"nullable":true,"description":"Vanity slug from profile URL (e.g. john-doe) when not URN-based","type":"string"},"nameMatch":{"description":"True when the search ranker matched the literal name (vs headline/skills). When picking between two same-named people, the one with nameMatch=true is the one the user typed.","nullable":true,"type":"boolean"},"badgeText":{"description":"Profile badge surfaced by LinkedIn (Top Voice / Premium / Verified / Influencer). Indicates investment in the platform and is a useful qualifier weight.","nullable":true,"type":"string"},"ringStatus":{"description":"Profile ring status visualised on LinkedIn (OPEN_TO_WORK, HIRING, OPEN_FOR_BUSINESS, etc.). Open intent signal — directly relevant for recruiters, vendors, and sales.","nullable":true,"type":"string"},"summary":{"description":"Additional profile snippet returned by the search ranker, distinct from headline. Sometimes contains mutual-connection context or topic affinity (e.g. 'Writes about B2B sales').","nullable":true,"type":"string"},"actorInsights":{"description":"LinkedIn-curated context strings — typical entries: 'X mutual connections', 'Follows {company}', 'Worked at {company}'. Use these directly in personalised outreach openers.","type":"array","items":{"type":"string"}},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data: fields a session would fill may be empty, and the name may be derived from the profile URL.","type":"string","enum":["public"]}},"required":["type","name","profileUrl","headline","location","profilePicture","networkDistance","currentPositions","profileUrn","publicIdentifier"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/companies":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"searchCompanies","x-speakeasy-name-override":"companies","summary":"Search LinkedIn Companies","description":"# Search LinkedIn Companies\n\nFind companies on LinkedIn by name, industry, location, and employee count. Returns structured company data: name, profileUrl, summary, industry, location, followersCount, logoUrl. To read a single result in more depth, pass its profileUrl to **publicCompany**, which adds the full description, follower and employee counts, the website, and recent posts. Detailed firmographics (headquarter address, founding year, specialities, verification status, call to action) are not available from either surface, so do not promise them.\n\n## Parameters\n- **keywords** (optional): Search terms matched against company name, description, and specialties\n\n## Keyword syntax (Boolean operators)\nKeywords support LinkedIn Boolean search syntax:\n- **Exact phrase**: `\"artificial intelligence\"` — matches only that exact phrase\n- **AND**: `fintech AND payments` — both terms required (spaces default to AND)\n- **OR**: `SaaS OR \"cloud computing\"` — either term\n- **NOT**: `consulting NOT staffing` — exclude unwanted terms\n- **Parentheses**: `(AI OR ML) AND healthcare` — group logic\n\nOperators must be **UPPERCASE**. Precedence: Quotes > Parentheses > NOT > AND > OR.\n\n## Available filters\nPass HUMAN LABELS for location / industry — the server resolves them to LinkedIn IDs via typeahead. Numeric IDs pass through unchanged if you already have them.\n\n| Filter | Type | Description |\n|--------|------|-------------|\n| `location` | string[] | HQ geo labels (e.g. `[\"Paris\",\"France\"]`) — resolved server-side |\n| `industry` | string[] | Industry labels (e.g. `[\"Software Development\"]`) — resolved server-side |\n| `companySize` | string[] | Employee count codes (see below) |\n\n### Company size codes\n| Code | Employees |\n|------|-----------|\n| `A` | 1 |\n| `B` | 2-10 |\n| `C` | 11-50 |\n| `D` | 51-200 |\n| `E` | 201-500 |\n| `F` | 501-1,000 |\n| `G` | 1,001-5,000 |\n| `H` | 5,001-10,000 |\n| `I` | 10,001+ |\n\n## Response fields (per item)\n| Field | Type | Description |\n|-------|------|-------------|\n| `name` | string | Company display name |\n| `profileUrl` | string | LinkedIn company page URL |\n| `summary` | string\\|null | Company tagline/description |\n| `industry` | string\\|null | Primary industry |\n| `location` | string\\|null | HQ location |\n| `followersCount` | number\\|null | Number of LinkedIn followers |\n| `logoUrl` | string\\|null | Company logo, present only when the result entity carries one |\n\n## Pagination\n- Default page size: 10, max: 50\n- Use `start` + `count` to paginate. Check `hasMore` for more pages.\n\n## Example workflows\n1. **Market research**: Search by industry + location → map the competitive landscape\n2. **Sales targeting**: Search by industry + size → build a list of target accounts\n3. **Partnership discovery**: Search by keywords + location → find potential partners\n\n## Credits\n","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"keywords":"AI startup","location":["103644278"],"companySize":["B","C"],"count":10,"start":0},"schema":{"type":"object","properties":{"keywords":{"description":"Search keywords. Matches against company name, description, and specialties. Optional — you can search by filters alone. Supports LinkedIn Boolean syntax: use double quotes for exact phrases (e.g. \"artificial intelligence\"), AND to require both terms, OR for alternatives (e.g. SaaS OR \"cloud computing\"), NOT to exclude (e.g. consulting NOT staffing), and parentheses to group (e.g. (AI OR ML) AND healthcare). Operators must be UPPERCASE.","type":"string"},"url":{"description":"A LinkedIn search URL. The category and every filter the vertical can actually apply are read from it; a facet it carries that this search cannot apply is reported back as a URL_FACET warning rather than applied, so a result set carrying those is WIDER than the URL asked for. Explicit params override anything read from the URL.","type":"string"},"location":{"description":"Filter by company HQ location. Pass human labels (e.g. ['Paris','France']) — server resolves to LinkedIn geo IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"industry":{"description":"Filter by company industry. Pass human labels (e.g. ['Software Development']) — server resolves to LinkedIn industry IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"companySize":{"description":"Filter by employee count, several bands allowed and combined as OR. Pass a human employee range and it is converted for you, which is the safer form: the underlying codes are A=1, B=2-10, C=11-50, D=51-200, E=201-500, F=501-1000, G=1001-5000, H=5001-10000, I=10001+, and passing the wrong letter searches the wrong band silently rather than failing.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset into the accumulated result list (default 0). LinkedIn serves about ten companies per HTML page; use multiples of that page size to skip whole pages.","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"How many companies to return in total (default 10, max 50). LinkedIn's HTML search page is fixed at about ten results; the server pages with ?page=N until this total is reached.","type":"integer","minimum":1,"maximum":50}}}}}},"responses":{"200":{"description":"List of LinkedIn companies matching the search criteria","content":{"application/json":{"example":{"success":true,"category":"companies","items":[{"type":"COMPANY","name":"AI Startup Inc","profileUrl":"https://www.linkedin.com/company/ai-startup-inc","summary":"Building next-gen AI tools for businesses","industry":"Technology, Information and Internet","location":"San Francisco, CA","followersCount":5200}],"paging":{"start":0,"count":10,"total":350},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["companies"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["COMPANY"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"summary":{"nullable":true,"type":"string"},"industry":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"followersCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"description":"Company logo URL when LinkedIn surfaces it on the result entity. Display this in the company card.","nullable":true,"type":"string"},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data only.","type":"string","enum":["public"]}},"required":["type","name","profileUrl","summary","industry","location","followersCount"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/jobs":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"searchJobs","x-speakeasy-name-override":"jobs","summary":"Search LinkedIn Jobs","description":"# Search LinkedIn Jobs\n\nFind job listings on LinkedIn by keywords, location, job type, experience level, and workplace type. Returns lightweight job rows (title, company, companyUrl, companyLogo, location, workplaceType, postedAt, jobUrl, listingId). For RICH job-detail (applicant count, full description, employment status, listed/expire timestamps, inferred benefits, formattedJobFunctions, formattedIndustries, applyMethod, companyDescription), pass the result's `listingId` to `visitJob` (or POST `/api/visit/linkedin/job`).\n\n## Parameters\n- **keywords** (optional): Search terms matched against job title, company name, and description\n\n## Keyword syntax (Boolean operators)\nKeywords support LinkedIn Boolean search syntax:\n- **Exact phrase**: `\"frontend engineer\"` — matches only that exact title\n- **AND**: `React AND TypeScript` — both terms required (spaces default to AND)\n- **OR**: `\"frontend engineer\" OR \"front-end developer\"` — either term\n- **NOT**: `engineer NOT intern` — exclude unwanted terms\n- **Parentheses**: `(React OR Vue) AND \"senior engineer\"` — group logic\n\nOperators must be **UPPERCASE**. Precedence: Quotes > Parentheses > NOT > AND > OR.\n\n## Available filters\nPass human-readable names for `location`, `company`, `industry`, `jobFunction`, `benefits`, `commitments` — they are resolved to LinkedIn IDs server-side. Do not hand-resolve.\n\n| Filter | Type | Description |\n|--------|------|-------------|\n| `location` | string[] | City/region/country names |\n| `company` | string[] | Hiring company names |\n| `industry` | string[] | Company industry names |\n| `jobFunction` | string[] | Job function names (Engineering, Sales, …) |\n| `datePosted` | string | `\"past-24h\"` \\| `\"past-week\"` \\| `\"past-month\"` |\n| `sortBy` | string | `\"relevance\"` \\| `\"date\"` |\n| `jobType` | string[] | Employment type codes (see below) |\n| `experienceLevel` | string[] | Seniority codes (see below) |\n| `workplaceType` | string[] | Work location codes (see below) |\n| `benefits` | string[] | Advertised benefit names |\n| `commitments` | string[] | Employer commitment names |\n| `easyApply` | boolean | Only Easy Apply jobs |\n| `under10Applicants` | boolean | Only jobs with <10 applicants |\n| `inYourNetwork` | boolean | Only jobs where you have a connection |\n| `hasVerifications` | boolean | Only verified job posters |\n| `fairChanceEmployer` | boolean | Only Fair Chance employers |\n\n### Job type codes\n| Code | Type |\n|------|------|\n| `F` | Full-time |\n| `P` | Part-time |\n| `C` | Contract |\n| `T` | Temporary |\n| `I` | Internship |\n| `V` | Volunteer |\n| `O` | Other |\n\n### Experience level codes\n| Code | Level |\n|------|-------|\n| `1` | Internship |\n| `2` | Entry level |\n| `3` | Associate |\n| `4` | Mid-Senior level |\n| `5` | Director |\n| `6` | Executive |\n\n### Workplace type codes\n| Code | Type |\n|------|------|\n| `1` | On-site |\n| `2` | Remote |\n| `3` | Hybrid |\n\n## Response fields (per item)\n| Field | Type | Description |\n|-------|------|-------------|\n| `title` | string | Job title |\n| `company` | string\\|null | Hiring company name |\n| `companyUrl` | string\\|null | Company LinkedIn page URL |\n| `companyLogo` | string\\|null | Company logo URL |\n| `location` | string\\|null | Job location |\n| `workplaceType` | string\\|null | On-site / Remote / Hybrid |\n| `postedAt` | string\\|null | Human-readable posting time (e.g. `\"2 days ago\"`) |\n| `jobUrl` | string | Direct URL to the job listing |\n| `listingId` | string | LinkedIn job listing ID |\n\n## Pagination\n- Default page size: 10, max: 50\n- Use `start` + `count` to paginate. Check `hasMore` for more pages.\n\n## Example workflows\n1. **Job monitoring**: Search by title + location → track new openings in your area\n2. **Competitive hiring analysis**: Search by company keywords → see what roles competitors are hiring for\n3. **Market demand research**: Search by skills → gauge demand for specific expertise\n\n## Credits\n","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"keywords":"frontend engineer","location":["102095887"],"jobType":["F"],"workplaceType":["2"],"experienceLevel":["3","4"],"count":10,"start":0},"schema":{"type":"object","properties":{"keywords":{"description":"Search keywords. Matches against job title, company name, and description. Optional — you can search by filters alone. Supports LinkedIn Boolean syntax: use double quotes for exact phrases (e.g. \"frontend engineer\"), AND to require both terms, OR for alternatives (e.g. React OR Vue OR Angular), NOT to exclude (e.g. engineer NOT intern), and parentheses to group (e.g. (React OR Vue) AND \"senior engineer\"). Operators must be UPPERCASE.","type":"string"},"url":{"description":"A LinkedIn search URL. The category and every filter the vertical can actually apply are read from it; a facet it carries that this search cannot apply is reported back as a URL_FACET warning rather than applied, so a result set carrying those is WIDER than the URL asked for. Explicit params override anything read from the URL.","type":"string"},"location":{"description":"Filter by job location. Pass human labels (e.g. ['Paris','France']) — server resolves to LinkedIn geo IDs via typeahead. Numeric IDs pass through if you already have them.","type":"array","items":{"type":"string"}},"datePosted":{"description":"Filter by posting date: 'past-24h'/'past-week'/'past-month' or natural ('last week','this month'). Normalized server-side.","type":"string"},"sortBy":{"description":"Sort order: 'relevance' (default) or 'date'/'newest' (most recent first). Normalized server-side.","type":"string"},"jobType":{"description":"Filter by employment type (OR logic). Pass a natural label (full-time, part-time, contract, temporary, internship, volunteer, other) OR a code F/P/C/T/I/V/O — normalized server-side.","type":"array","items":{"type":"string"}},"experienceLevel":{"description":"Filter by seniority (OR logic). Pass a natural label (internship, entry, associate, mid-senior, director, executive) OR a code 1-6 — normalized server-side.","type":"array","items":{"type":"string"}},"workplaceType":{"description":"Filter by workplace type (OR logic). Pass 'onsite'/'remote'/'hybrid' or a code 1/2/3 — labels are normalized server-side.","type":"array","items":{"type":"string"}},"company":{"description":"Filter by hiring company. Pass company NAMES (e.g. ['Stripe','Datadog']) — they are resolved to LinkedIn company IDs server-side. Numeric IDs also accepted.","type":"array","items":{"type":"string"}},"industry":{"description":"Filter by company industry. Pass industry NAMES (e.g. ['Software Development','Financial Services']) — resolved to LinkedIn industry IDs server-side. Numeric IDs also accepted.","type":"array","items":{"type":"string"}},"jobFunction":{"description":"Filter by job function. Pass function names: Information Technology, Engineering, Consulting, Sales, Marketing, Finance, Business Development, Management, Project Management, Quality Assurance, Analyst, Research, Manufacturing, Other.","type":"array","items":{"type":"string"}},"easyApply":{"description":"When true, only return jobs with LinkedIn Easy Apply (apply without leaving LinkedIn).","type":"boolean"},"under10Applicants":{"description":"When true, only return jobs with fewer than 10 applicants — less competition.","type":"boolean"},"inYourNetwork":{"description":"When true, only return jobs at companies where the credential holder has a connection.","type":"boolean"},"hasVerifications":{"description":"When true, only return jobs from verified job posters.","type":"boolean"},"fairChanceEmployer":{"description":"When true, only return jobs from Fair Chance employers.","type":"boolean"},"benefits":{"description":"Filter by advertised benefits. Names: Medical insurance, Vision insurance, Dental insurance, 401(k), Pension plan, Paid maternity leave, Paid paternity leave, Commuter benefits, Student loan assistance, Tuition assistance, Disability insurance.","type":"array","items":{"type":"string"}},"commitments":{"description":"Filter by employer commitments. Names: Diversity equity and inclusion, Environmental sustainability, Work-life balance, Social impact, Career growth and learning.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset (default 0). Use multiples of `count` to page through results.","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"Results per request (default 50, max 100). LinkedIn's JobCards endpoint honors up to 100 in one call (measured).","type":"integer","minimum":1,"maximum":100}}}}}},"responses":{"200":{"description":"List of LinkedIn job listings matching the search criteria","content":{"application/json":{"example":{"success":true,"category":"jobs","items":[{"type":"JOB","title":"Senior Frontend Engineer","company":"TechCo","companyUrl":"https://www.linkedin.com/company/techco","companyLogo":null,"location":"Paris, France","workplaceType":"Remote","postedAt":"2 days ago","jobUrl":"https://www.linkedin.com/jobs/view/1234567890","listingId":"1234567890"}],"paging":{"start":0,"count":10,"total":200},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["jobs"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["JOB"]},"title":{"type":"string"},"company":{"nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"companyLogo":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"workplaceType":{"nullable":true,"type":"string"},"postedAt":{"nullable":true,"type":"string"},"jobUrl":{"type":"string"},"listingId":{"type":"string","description":"LinkedIn job listing id — pass to /visit/linkedin/job to fetch the full posting (applicant count, full description, employment status, listed/expire timestamps, inferred benefits, job functions, industries, apply method)."}},"required":["type","title","company","companyUrl","companyLogo","location","workplaceType","postedAt","jobUrl","listingId"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/url":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"]},"operationId":"searchByUrl","x-speakeasy-name-override":"byUrl","summary":"Search LinkedIn by URL","description":"# Search LinkedIn by URL\n\nPaste any LinkedIn search URL and the endpoint will automatically extract the category, keywords, and all filters from it, then execute the search and return structured results.\n\n## When to use this endpoint\n- A user gives you a LinkedIn search URL and you want to get the results programmatically\n- You want to replicate a search the user performed in their browser\n- You want to automate searches based on bookmarked LinkedIn search URLs\n\n## Supported URL formats\nThe endpoint supports all standard LinkedIn search URLs:\n- `https://www.linkedin.com/search/results/people/?keywords=engineer`\n- `https://www.linkedin.com/search/results/content/?keywords=AI&sortBy=%22date_posted%22`\n- `https://www.linkedin.com/search/results/companies/?keywords=startup&companyHqGeo=%5B%22103644278%22%5D`\n- `https://www.linkedin.com/jobs/search/?keywords=frontend&location=Paris`\n- `https://www.linkedin.com/search/results/all/?keywords=test` (treated as people search)\n\n## URL path → Category mapping\n| URL path segment | Category |\n|------------------|----------|\n| `/results/content/` | posts |\n| `/results/people/` | people |\n| `/results/companies/` | companies |\n| `/results/all/` | people |\n| `/jobs/search/` | jobs |\n\n## What is read from the URL\nKeywords and every filter the vertical can actually apply, under LinkedIn's own spellings as its filter bar writes them (`titleFreeText`, `schoolFilter`, `companySizeV2`, `companyHQBingGeo`, `industryCompanyVertical`) with the bare names accepted as a fallback for a hand-written URL. A company's HEADQUARTERS is kept as its own filter and never folded into the person's location: they are different questions and return different people. Jobs facets are comma-separated in LinkedIn's URLs and each value is read on its own.\n\nA facet the URL carries that this search cannot apply comes back as a `URL_FACET` entry in `warnings`, naming the facet. That matters because a dropped filter means the search ran WIDER than the one on the person's screen, so a result set with URL_FACET warnings is a bigger cohort than they asked for and should be described that way.\n\n## Pagination override\nYou can optionally pass `start` and `count` to override the pagination embedded in the URL.\n\n## Credits\n","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"url":"https://www.linkedin.com/search/results/people/?keywords=software%20engineer&network=%5B%22S%22%5D&origin=FACETED_SEARCH","count":10},"schema":{"type":"object","properties":{"url":{"type":"string","description":"A LinkedIn search URL. The endpoint automatically extracts the category, keywords, and all filters from the URL. Example: 'https://www.linkedin.com/search/results/people/?keywords=engineer&network=%5B%22S%22%5D'"},"start":{"description":"Override pagination offset. If not provided, uses the page from the URL (or defaults to 0).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"Override results per page (default 10, max 50).","type":"integer","minimum":1,"maximum":50}},"required":["url"]}}}},"responses":{"200":{"description":"Search results parsed from the LinkedIn URL","content":{"application/json":{"example":{"success":true,"category":"people","items":[{"type":"PEOPLE","name":"Alex Rivera","profileUrl":"https://www.linkedin.com/in/alexrivera","headline":"Software Engineer at Meta","location":"New York, NY","profilePicture":null,"publicIdentifier":"alexrivera","profileUrn":"urn:li:fsd_profile:ACoAABZ0Qo4B6pt58d4FVmts1F7TPi4D1-uL1fw","networkDistance":"DISTANCE_2","currentPositions":[{"company":"Meta","role":"Software Engineer"}]}],"paging":{"start":0,"count":10,"total":500},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["posts","people","companies","jobs"]},"items":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"},"type":{"type":"string","enum":["POST"]},"author":{"type":"object","properties":{"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"isCompany":{"type":"boolean"},"publicIdentifier":{"nullable":true,"description":"Vanity slug when not URN-based","type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN when available","type":"string"}},"required":["name","profileUrl","headline","profilePicture","isCompany","publicIdentifier","profileUrn"],"additionalProperties":false},"isRepost":{"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type","author","isRepost"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PEOPLE"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"networkDistance":{"nullable":true,"description":"LinkedIn network distance: DISTANCE_1=connected, DISTANCE_2=2nd degree, DISTANCE_3=3rd degree, OUT_OF_NETWORK=not connected.","type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK"]},"currentPositions":{"type":"array","items":{"type":"object","properties":{"company":{"nullable":true,"type":"string"},"role":{"nullable":true,"type":"string"}},"required":["company","role"],"additionalProperties":false},"description":"Current work positions for this profile."},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...) when available","type":"string"},"publicIdentifier":{"nullable":true,"description":"Vanity slug from profile URL (e.g. john-doe) when not URN-based","type":"string"},"nameMatch":{"description":"True when the search ranker matched the literal name (vs headline/skills). When picking between two same-named people, the one with nameMatch=true is the one the user typed.","nullable":true,"type":"boolean"},"badgeText":{"description":"Profile badge surfaced by LinkedIn (Top Voice / Premium / Verified / Influencer). Indicates investment in the platform and is a useful qualifier weight.","nullable":true,"type":"string"},"ringStatus":{"description":"Profile ring status visualised on LinkedIn (OPEN_TO_WORK, HIRING, OPEN_FOR_BUSINESS, etc.). Open intent signal — directly relevant for recruiters, vendors, and sales.","nullable":true,"type":"string"},"summary":{"description":"Additional profile snippet returned by the search ranker, distinct from headline. Sometimes contains mutual-connection context or topic affinity (e.g. 'Writes about B2B sales').","nullable":true,"type":"string"},"actorInsights":{"description":"LinkedIn-curated context strings — typical entries: 'X mutual connections', 'Follows {company}', 'Worked at {company}'. Use these directly in personalised outreach openers.","type":"array","items":{"type":"string"}},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data: fields a session would fill may be empty, and the name may be derived from the profile URL.","type":"string","enum":["public"]}},"required":["type","name","profileUrl","headline","location","profilePicture","networkDistance","currentPositions","profileUrn","publicIdentifier"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["COMPANY"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"summary":{"nullable":true,"type":"string"},"industry":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"followersCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"logoUrl":{"description":"Company logo URL when LinkedIn surfaces it on the result entity. Display this in the company card.","nullable":true,"type":"string"},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data only.","type":"string","enum":["public"]}},"required":["type","name","profileUrl","summary","industry","location","followersCount"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["JOB"]},"title":{"type":"string"},"company":{"nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"companyLogo":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"workplaceType":{"nullable":true,"type":"string"},"postedAt":{"nullable":true,"type":"string"},"jobUrl":{"type":"string"},"listingId":{"type":"string","description":"LinkedIn job listing id — pass to /visit/linkedin/job to fetch the full posting (applicant count, full description, employment status, listed/expire timestamps, inferred benefits, job functions, industries, apply method)."}},"required":["type","title","company","companyUrl","companyLogo","location","workplaceType","postedAt","jobUrl","listingId"],"additionalProperties":false}}]},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/sales-nav":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list","excludeTool":true},"operationId":"searchSalesNav","x-speakeasy-name-override":"search","summary":"Sales Navigator Search — leads (people) & accounts (companies)","description":"# Sales Navigator Search\n\nSearch LinkedIn Sales Navigator for leads (people) or accounts (companies). Requires a LinkedIn account with an active Sales Navigator subscription.\n\n## Two ways to search\n1. **Structured**: pass `category` + optional `keywords` + filters\n2. **URL-based**: pass a Sales Navigator search `url` from your browser — filters are extracted automatically\n\n### Accepted `url` shapes\nSales Navigator is a SPA and writes its filter state into the **hash fragment** (`#query=...`), not the search string. The parser accepts both, plus several common paste artefacts:\n- `https://www.linkedin.com/sales/search/people#query=(...)&sessionId=...` — what the browser address bar shows (most common)\n- `https://www.linkedin.com/sales/search/people?query=(...)` — older / shared-link form\n- `/sales/search/lead` and `/sales/search/account` path aliases (LinkedIn uses both)\n- Protocol-less paste (`www.linkedin.com/sales/search/people#query=...`)\n- Surrounding whitespace, quotes/backticks, `&amp;` from rich-text paste\n\n**Rejected with a clear 400** so you don't get unfiltered results:\n- Saved-list URLs (`/sales/lists/people/...`) — these aren't searches; open the list and click \"Search\" to get a `/sales/search/...` URL\n- URLs with no query (`?sessionId=...` only) — copy the URL again **after** filters finish loading\n- URLs whose query has no keywords and no filters (`#query=(spellCorrectionEnabled:true)`) — same fix\n\n## Sales Navigator vs Classic search\nSales Navigator returns richer data than classic LinkedIn search:\n- **People**: tenure at company/role, premium status, open profile flag, pending invitation status, detailed positions\n- **Companies**: headcount (employee count)\n- More advanced filters: seniority, function, tenure, include/exclude for company & industry\n\n## Resolving filter IDs\nFilters like location, industry, company, and school require LinkedIn numeric IDs. Use `GET /search/linkedin/parameters` to convert text (e.g. \"San Francisco\") into IDs.\n\n## Pagination\nDefault page size: 25, max: 25. Use `start` (offset) and `count` to paginate. Check `hasMore` and `paging.total` in the response. When passing `url`, a `?page=N` (or `#…&page=N`) in the URL is honored — explicit `start` still wins if both are provided.\n\n## Credits\n\n\n## Profile URLs returned\nEach item carries `profileUrl` (public `/in/...`) and `salesNavUrl` (`/sales/...`).\nSales Navigator does not return canonical vanity slugs (e.g. `/in/john-doe`) — it returns LinkedIn's encrypted profile id, so `profileUrl` is `https://www.linkedin.com/in/<encrypted-id>` (e.g. `/in/ACwAAA0-26UB...`). These URLs are clickable and redirect to the canonical vanity URL when opened in a browser, and they are accepted anywhere our API takes a profile URL (visit, connect, message, etc.).\n\n### Upgrading to canonical vanity URLs (optional)\nTo resolve `/in/<encrypted-id>` → `/in/<vanity-slug>` (e.g. `/in/john-doe`), call `POST /resolve/linkedin/profiles` with the URLs, URNs, or raw encrypted ids. The endpoint returns `publicIdentifier` + a canonical `profileUrl`, and returns `publicIdentifier` + a canonical `profileUrl`.\n\n```json\nPOST /resolve/linkedin/profiles\n{\n  \"inputs\": [\n    \"https://www.linkedin.com/in/ACwAAA0-26UBSvneYv1dZ1sfAT_NZHjmOb5qk2s\",\n    \"urn:li:fsd_profile:ACwAAAaK0QIBxcI7cceYW8eas-3uVGwgOTW8s_k\"\n  ]\n}\n```","tags":["salesNav"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"category":"people","keywords":"developer","tenure":[{"min":3}],"profileLanguage":["en"],"count":25,"start":0},"schema":{"type":"object","properties":{"category":{"description":"Type of Sales Navigator search: 'people' (leads) or 'companies' (accounts). Required unless url is provided.","type":"string","enum":["people","companies"]},"url":{"description":"Sales Navigator search URL — paste directly from your browser. Category and filters are extracted automatically. Explicit params override URL-derived values. Example: https://www.linkedin.com/sales/search/people?query=...","type":"string"},"keywords":{"description":"Search keywords. Supports LinkedIn Boolean syntax: use double quotes for exact phrases, AND/OR/NOT operators (UPPERCASE), and parentheses for grouping.","type":"string"},"title":{"description":"Job title keywords (people only). Supports Boolean OR: 'CEO OR CTO OR Founder'.","type":"string"},"company":{"description":"Current-employer filter (people only). Accepts company names ('Stripe', 'Datadog') OR LinkedIn numeric ids. Server resolves names via typeahead.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"industry":{"description":"Industry filter. Accepts industry names ('Software Development', 'Hospitals and Health Care') OR LinkedIn numeric ids. Server resolves.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"location":{"description":"Geography filter (people & companies). Accepts location names ('France', 'San Francisco Bay Area', 'EMEA') OR LinkedIn geo ids. Server resolves via typeahead.","type":"array","items":{"type":"string"}},"locationExclude":{"description":"Geography filter to EXCLUDE. Same accepted shapes as `location`. Useful for 'all of Europe except Switzerland' patterns.","type":"array","items":{"type":"string"}},"seniority":{"description":"Seniority levels (people only). Accepts labels ('CXO', 'VP', 'Director', 'Owner / Partner', 'Senior', 'Entry Level', etc.) OR LinkedIn numeric ids. Server resolves labels to LinkedIn's 3-digit ids (CXO=310, etc.) — do NOT guess the ids.","type":"array","items":{"type":"string"}},"function":{"description":"Job function (people only). Accepts function names ('Sales', 'Engineering', 'Marketing', 'Finance', etc. — 26 canonical) OR LinkedIn numeric ids.","type":"array","items":{"type":"string"}},"tenure":{"description":"Years at current company (people only). Array of ranges, e.g. [{min:3}, {max:10}].","type":"array","items":{"type":"object","properties":{"min":{"description":"Minimum years","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"description":"Maximum years","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}}},"profileLanguage":{"description":"Profile language (people only). Accepts ISO 639-1 codes (e.g. 'en') or full language names; the server resolves either.","type":"array","items":{"type":"string"}},"connectionDegree":{"description":"Network distance: 'F' (1st-degree), 'S' (2nd-degree), 'O' (3rd-degree and beyond), or 'GROUP'. The labels '1st degree', '2nd degree', '3rd degree' are also accepted.","type":"array","items":{"type":"string"}},"school":{"description":"School filter (people only). Accepts school names ('Stanford', 'HEC Paris') OR LinkedIn numeric ids. Server resolves via typeahead.","type":"array","items":{"type":"string"}},"yearsOfExperience":{"description":"Overall years of experience (people only). Accepts labels ('Less than 1 year', '1 to 2 years', '3 to 5 years', '6 to 10 years', 'More than 10 years') OR LinkedIn numeric ids 1-5.","type":"array","items":{"type":"string"}},"persona":{"description":"Buyer Persona IDs the user has configured on sales.linkedin.com home (combos of function+seniority+title+geo). Match the IDs from the URL filter ((type:PERSONA,values:List((id:<id>,…)))).","type":"array","items":{"type":"string"}},"recentlyChangedJobs":{"description":"Filter to leads who changed jobs in the last 90 days (LinkedIn buying-intent flag). True = include only job-changers; omit/false = no constraint.","type":"boolean"},"postedOnLinkedin":{"description":"Filter to leads who recently posted on LinkedIn (engagement signal — active posters reply more often). True = include only recent posters; omit/false = no constraint.","type":"boolean"},"sharedExperiences":{"description":"Filter to leads with shared experience with the searcher (same school / past employer / group). True = include only shared-experience matches; omit/false = no constraint.","type":"boolean"},"viewedYourProfile":{"description":"Filter to leads who recently viewed YOUR profile (LinkedIn flag VYP). Highest-intent engagement signal — they already showed interest. Requires Sales Nav seat that captures profile views.","type":"boolean"},"followsYourCompany":{"description":"Filter to leads who follow YOUR company page (LinkedIn flag CF). Warm-touch signal — they opted into your brand.","type":"boolean"},"connectionOf":{"description":"Filter to leads connected to a specific person. Values are LinkedIn ENCRYPTED member URN ids (e.g. 'ACwAAAim9ZcB…'), not numeric ids. Useful for 'find people connected to my champion at X' warm-intro patterns.","type":"array","items":{"type":"string"}},"pastCompany":{"description":"Past-employer filter (people only). Accepts company names ('Stripe') OR LinkedIn numeric ids. The server wraps numeric ids as 'urn:li:organization:<id>' (the wire shape Sales Nav requires) — callers can pass the bare id or the URN.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"companyHeadquarters":{"description":"Where the lead's CURRENT employer is HQ'd (people only). Accepts location names ('France', 'United States') OR LinkedIn geo ids. Distinct from `location` which is the lead's own location — useful for 'sell to UK-headquartered companies regardless of where the buyer lives'.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"yearsInCurrentPosition":{"description":"Years in current ROLE/POSITION (people only). Same accepted labels as `yearsOfExperience` ('Less than 1 year', '1 to 2 years', etc.). Distinct from `tenure` which counts years at current COMPANY.","type":"array","items":{"type":"string"}},"pastTitle":{"description":"Past job title keywords (people only). Free-text, supports Boolean OR. Finds leads who previously held a matching title.","type":"string"},"firstName":{"description":"First name (people only). Exact name filter.","type":"string"},"lastName":{"description":"Last name (people only). Exact name filter.","type":"string"},"groups":{"description":"LinkedIn Groups membership (people only). Accepts group names ('Digital Marketing') OR numeric group ids. Server resolves names via typeahead.","type":"array","items":{"type":"string"}},"pastColleague":{"description":"Filter to leads who are past colleagues of the searcher (worked at the same company, overlapping dates). True = include only past colleagues; omit/false = no constraint. Warm-intro signal.","type":"boolean"},"leadInteractions":{"description":"Filter by your past interaction with the lead (people only). Accepts labels ('Messaged') OR LinkedIn codes.","type":"array","items":{"type":"string"}},"savedLeadsAndAccounts":{"description":"Filter to your saved leads / accounts (people only). Accepts 'All my saved leads' / 'All my saved accounts' OR codes SL/SA.","type":"array","items":{"type":"string"}},"companyHeadcount":{"description":"Employee count (companies only). Accepts labels ('1-10', '11-50', '51-200', '201-500', '501-1,000', '1,001-5,000', '5,001-10,000', '10,001+', 'Self-employed') OR LinkedIn letter codes A-I.","type":"array","items":{"type":"string"}},"companyType":{"description":"Company type (companies only). Accepts labels ('Public Company', 'Privately Held', 'Non Profit', 'Educational Institution', 'Government Agency', 'Self-Employed', 'Self-Owned', 'Partnership') OR LinkedIn letter codes.","type":"array","items":{"type":"string"}},"numOfFollowers":{"description":"Company follower-count buckets (companies only). Accepts labels ('1-50', '51-100', '101-1,000', '1,001-5,000', '5,001+') OR ids 1-5.","type":"array","items":{"type":"string"}},"fortune":{"description":"Fortune-list membership (companies only). Accepts 'Fortune 50' / 'Fortune 100' / 'Fortune 250' / 'Fortune 500' OR codes FORTUNE_50/100/250/500.","type":"array","items":{"type":"string"}},"accountActivities":{"description":"Account buying-intent signals (companies only). Accepts labels ('Senior leadership changes in last 3 months', 'Funding events in past 12 months') OR codes SLC/RFE.","type":"array","items":{"type":"string"}},"jobOpportunities":{"description":"Account hiring signals (companies only). Accepts the LinkedIn hiring-signal labels OR codes.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset (default 0).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"Results per page (default 25, max 25).","type":"integer","minimum":1,"maximum":25},"campaignSlug":{"description":"Campaign ID. Auto-adds discovered contacts to this campaign in background. Mandatory whenever a campaign is active.","type":"string"}}}}}},"responses":{"200":{"description":"Search results from Sales Navigator","content":{"application/json":{"example":{"success":true,"category":"people","items":[{"type":"PEOPLE","id":"ACwAAASNCJcBS2NERCgi0j_f7_oYqCSbTGsNYBc","name":"Jane Smith","firstName":"Jane","lastName":"Smith","memberUrn":"urn:li:member:76351639","profileUrn":"urn:li:fsd_profile:ACoAAASNCJcBS2NERCgi0j_f7_oYqCSbTGsNYBc","publicIdentifier":"jane-smith","profileUrl":"https://www.linkedin.com/in/jane-smith","salesNavUrl":"https://www.linkedin.com/sales/lead/ACwAAASNCJcBS2NERCgi0j_f7_oYqCSbTGsNYBc,NAME_SEARCH,NqOz","profilePicture":null,"headline":"Senior Software Engineer at Google","location":"San Francisco Bay Area","networkDistance":"DISTANCE_2","premium":true,"openProfile":false,"pendingInvitation":false,"currentPositions":[{"company":"Google","companyId":"1441","role":"Senior Software Engineer","description":null,"location":null,"tenureAtCompany":{"years":3},"tenureAtRole":{"years":2}}]}],"paging":{"start":0,"count":25,"total":1500},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["people"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PEOPLE"]},"id":{"type":"string","description":"Sales Navigator lead ID"},"name":{"type":"string"},"firstName":{"nullable":true,"type":"string"},"lastName":{"nullable":true,"type":"string"},"memberUrn":{"nullable":true,"description":"LinkedIn member URN (e.g. urn:li:member:12345)","type":"string"},"profileUrn":{"nullable":true,"description":"Canonical profile URN (urn:li:fsd_profile:ACo...) derived from any ACoA id found in the payload. Null only when LinkedIn returns a bare numeric memberUrn with no ACoA trace.","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity URL slug","type":"string"},"profileUrl":{"nullable":true,"description":"Profile URL. 3-tier fallback: (1) real /in/<slug>, (2) synthesized /in/<encrypted-id> when only a URN is known — LinkedIn accepts both ACoA… and ACwA… encrypted ids as the slug (case-sensitive), (3) /sales/lead/<id> as last resort when neither is available. Tier 3 URLs are not persistable in Bereach — call POST /resolve/linkedin/profiles to upgrade them.","type":"string"},"salesNavUrl":{"nullable":true,"description":"Sales Navigator lead URL","type":"string"},"profilePicture":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"networkDistance":{"nullable":true,"description":"LinkedIn network distance: DISTANCE_1=connected, DISTANCE_2=2nd degree, DISTANCE_3=3rd degree, OUT_OF_NETWORK=not connected.","type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK"]},"premium":{"nullable":true,"description":"True if the person has a LinkedIn Premium account.","type":"boolean"},"openProfile":{"nullable":true,"description":"True if the person has Open Profile — can be messaged without a connection.","type":"boolean"},"pendingInvitation":{"nullable":true,"description":"True if you have an outstanding connection invitation to this person.","type":"boolean"},"currentPositions":{"type":"array","items":{"type":"object","properties":{"company":{"nullable":true,"type":"string"},"companyId":{"nullable":true,"type":"string"},"role":{"nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"tenureAtCompany":{"nullable":true,"type":"object","properties":{"years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"months":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"tenureAtRole":{"nullable":true,"type":"object","properties":{"years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"months":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}},"required":["company","companyId","role","description","location","tenureAtCompany","tenureAtRole"],"additionalProperties":false},"description":"Current work positions for this profile."}},"required":["type","id","name","firstName","lastName","memberUrn","profileUrn","publicIdentifier","profileUrl","salesNavUrl","profilePicture","headline","location","networkDistance","premium","openProfile","pendingInvitation","currentPositions"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false},{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["companies"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["COMPANY"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"summary":{"nullable":true,"type":"string"},"industry":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"logoUrl":{"description":"Company logo URL when LinkedIn surfaces it on the result entity. Display this in the company card.","nullable":true,"type":"string"},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data only.","type":"string","enum":["public"]},"id":{"type":"string","description":"Sales Navigator company ID"},"headcount":{"nullable":true,"description":"Employee count or range","type":"string"}},"required":["type","name","profileUrl","summary","industry","location","id","headcount"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}]}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/sales-nav/people":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"searchSalesNavPeople","x-speakeasy-name-override":"people","summary":"Sales Navigator People/Lead Search","description":"# Sales Navigator People Search\n\nSearch for leads in LinkedIn Sales Navigator with advanced filters. Returns enriched profile data including tenure, premium status, and open profile flag.\n\n## Available filters\n| Filter | Type | Description |\n|--------|------|-------------|\n| `keywords` | string | Search terms |\n| `title` | string | Job title keywords |\n| `company` | {include?, exclude?} | Company IDs with include/exclude |\n| `industry` | {include?, exclude?} | Industry IDs with include/exclude |\n| `location` | string[] | Geography IDs |\n| `seniority` | string[] | Seniority levels (1-10) |\n| `function` | string[] | Job function IDs |\n| `tenure` | {min?, max?}[] | Years at current company |\n| `profileLanguage` | string[] | Profile language codes |\n| `connectionDegree` | string[] | Network distance (1, 2, 3) |\n| `school` | string[] | School IDs |\n| `yearsOfExperience` | string[] | Experience ranges |\n\n## Response fields (per item)\n| Field | Type | Description |\n|-------|------|-------------|\n| `id` | string | Sales Navigator lead ID |\n| `name`, `firstName`, `lastName` | string | Name |\n| `memberUrn` | string | LinkedIn member URN |\n| `profileUrn` | string | Canonical profile URN (`urn:li:fsd_profile:ACoA...` or `urn:li:fsd_profile:ACwA...`) — use directly with visit/connect/message endpoints |\n| `profileUrl` | string | Public LinkedIn profile URL `https://www.linkedin.com/in/<encrypted-id>`. Sales Nav does not expose canonical vanity slugs — open in a browser and LinkedIn redirects to `/in/<vanity-name>`. To resolve programmatically, call `POST /resolve/linkedin/profiles`. |\n| `salesNavUrl` | string | Sales Navigator lead URL |\n| `networkDistance` | string | Connection degree |\n| `premium` | boolean | LinkedIn Premium subscriber |\n| `openProfile` | boolean | Accepts free InMail |\n| `pendingInvitation` | boolean | Connection request already sent |\n| `currentPositions` | array | With company, role, tenure details |\n\n## Credits\n\n\n## JSON validity (critical)\nEvery array field (seniority, function, location, companyHeadcount, companyType, connectionDegree, yearsOfExperience, profileLanguage, school) MUST be a valid JSON array of double-quoted strings, e.g. `[\"Director\",\"Vice President\"]`. Never pipe-separated prose (`Director | Vice President`), never unquoted values (`United States`), never merge multiple options into one element. Malformed JSON means the filter is dropped and the search runs unfiltered.","tags":["salesNav"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"keywords":"developer","tenure":[{"min":5}],"profileLanguage":["en"]},"schema":{"type":"object","properties":{"category":{"description":"Type of Sales Navigator search: 'people' (leads) or 'companies' (accounts). Required unless url is provided.","type":"string","enum":["people","companies"]},"url":{"description":"Sales Navigator search URL — paste directly from your browser. Category and filters are extracted automatically. Explicit params override URL-derived values. Example: https://www.linkedin.com/sales/search/people?query=...","type":"string"},"keywords":{"description":"Search keywords. Supports LinkedIn Boolean syntax: use double quotes for exact phrases, AND/OR/NOT operators (UPPERCASE), and parentheses for grouping.","type":"string"},"title":{"description":"Job title keywords (people only). Supports Boolean OR: 'CEO OR CTO OR Founder'.","type":"string"},"company":{"description":"Current-employer filter (people only). Accepts company names ('Stripe', 'Datadog') OR LinkedIn numeric ids. Server resolves names via typeahead.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"industry":{"description":"Industry filter. Accepts industry names ('Software Development', 'Hospitals and Health Care') OR LinkedIn numeric ids. Server resolves.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"location":{"description":"Geography filter (people & companies). Accepts location names ('France', 'San Francisco Bay Area', 'EMEA') OR LinkedIn geo ids. Server resolves via typeahead.","type":"array","items":{"type":"string"}},"locationExclude":{"description":"Geography filter to EXCLUDE. Same accepted shapes as `location`. Useful for 'all of Europe except Switzerland' patterns.","type":"array","items":{"type":"string"}},"seniority":{"description":"Seniority levels (people only). Accepts labels ('CXO', 'VP', 'Director', 'Owner / Partner', 'Senior', 'Entry Level', etc.) OR LinkedIn numeric ids. Server resolves labels to LinkedIn's 3-digit ids (CXO=310, etc.) — do NOT guess the ids.","type":"array","items":{"type":"string"}},"function":{"description":"Job function (people only). Accepts function names ('Sales', 'Engineering', 'Marketing', 'Finance', etc. — 26 canonical) OR LinkedIn numeric ids.","type":"array","items":{"type":"string"}},"tenure":{"description":"Years at current company (people only). Array of ranges, e.g. [{min:3}, {max:10}].","type":"array","items":{"type":"object","properties":{"min":{"description":"Minimum years","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"max":{"description":"Maximum years","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}}},"profileLanguage":{"description":"Profile language (people only). Accepts ISO 639-1 codes (e.g. 'en') or full language names; the server resolves either.","type":"array","items":{"type":"string"}},"connectionDegree":{"description":"Network distance: 'F' (1st-degree), 'S' (2nd-degree), 'O' (3rd-degree and beyond), or 'GROUP'. The labels '1st degree', '2nd degree', '3rd degree' are also accepted.","type":"array","items":{"type":"string"}},"school":{"description":"School filter (people only). Accepts school names ('Stanford', 'HEC Paris') OR LinkedIn numeric ids. Server resolves via typeahead.","type":"array","items":{"type":"string"}},"yearsOfExperience":{"description":"Overall years of experience (people only). Accepts labels ('Less than 1 year', '1 to 2 years', '3 to 5 years', '6 to 10 years', 'More than 10 years') OR LinkedIn numeric ids 1-5.","type":"array","items":{"type":"string"}},"persona":{"description":"Buyer Persona IDs the user has configured on sales.linkedin.com home (combos of function+seniority+title+geo). Match the IDs from the URL filter ((type:PERSONA,values:List((id:<id>,…)))).","type":"array","items":{"type":"string"}},"recentlyChangedJobs":{"description":"Filter to leads who changed jobs in the last 90 days (LinkedIn buying-intent flag). True = include only job-changers; omit/false = no constraint.","type":"boolean"},"postedOnLinkedin":{"description":"Filter to leads who recently posted on LinkedIn (engagement signal — active posters reply more often). True = include only recent posters; omit/false = no constraint.","type":"boolean"},"sharedExperiences":{"description":"Filter to leads with shared experience with the searcher (same school / past employer / group). True = include only shared-experience matches; omit/false = no constraint.","type":"boolean"},"viewedYourProfile":{"description":"Filter to leads who recently viewed YOUR profile (LinkedIn flag VYP). Highest-intent engagement signal — they already showed interest. Requires Sales Nav seat that captures profile views.","type":"boolean"},"followsYourCompany":{"description":"Filter to leads who follow YOUR company page (LinkedIn flag CF). Warm-touch signal — they opted into your brand.","type":"boolean"},"connectionOf":{"description":"Filter to leads connected to a specific person. Values are LinkedIn ENCRYPTED member URN ids (e.g. 'ACwAAAim9ZcB…'), not numeric ids. Useful for 'find people connected to my champion at X' warm-intro patterns.","type":"array","items":{"type":"string"}},"pastCompany":{"description":"Past-employer filter (people only). Accepts company names ('Stripe') OR LinkedIn numeric ids. The server wraps numeric ids as 'urn:li:organization:<id>' (the wire shape Sales Nav requires) — callers can pass the bare id or the URN.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"companyHeadquarters":{"description":"Where the lead's CURRENT employer is HQ'd (people only). Accepts location names ('France', 'United States') OR LinkedIn geo ids. Distinct from `location` which is the lead's own location — useful for 'sell to UK-headquartered companies regardless of where the buyer lives'.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"yearsInCurrentPosition":{"description":"Years in current ROLE/POSITION (people only). Same accepted labels as `yearsOfExperience` ('Less than 1 year', '1 to 2 years', etc.). Distinct from `tenure` which counts years at current COMPANY.","type":"array","items":{"type":"string"}},"pastTitle":{"description":"Past job title keywords (people only). Free-text, supports Boolean OR. Finds leads who previously held a matching title.","type":"string"},"firstName":{"description":"First name (people only). Exact name filter.","type":"string"},"lastName":{"description":"Last name (people only). Exact name filter.","type":"string"},"groups":{"description":"LinkedIn Groups membership (people only). Accepts group names ('Digital Marketing') OR numeric group ids. Server resolves names via typeahead.","type":"array","items":{"type":"string"}},"pastColleague":{"description":"Filter to leads who are past colleagues of the searcher (worked at the same company, overlapping dates). True = include only past colleagues; omit/false = no constraint. Warm-intro signal.","type":"boolean"},"leadInteractions":{"description":"Filter by your past interaction with the lead (people only). Accepts labels ('Messaged') OR LinkedIn codes.","type":"array","items":{"type":"string"}},"savedLeadsAndAccounts":{"description":"Filter to your saved leads / accounts (people only). Accepts 'All my saved leads' / 'All my saved accounts' OR codes SL/SA.","type":"array","items":{"type":"string"}},"numOfFollowers":{"description":"Company follower-count buckets (companies only). Accepts labels ('1-50', '51-100', '101-1,000', '1,001-5,000', '5,001+') OR ids 1-5.","type":"array","items":{"type":"string"}},"fortune":{"description":"Fortune-list membership (companies only). Accepts 'Fortune 50' / 'Fortune 100' / 'Fortune 250' / 'Fortune 500' OR codes FORTUNE_50/100/250/500.","type":"array","items":{"type":"string"}},"accountActivities":{"description":"Account buying-intent signals (companies only). Accepts labels ('Senior leadership changes in last 3 months', 'Funding events in past 12 months') OR codes SLC/RFE.","type":"array","items":{"type":"string"}},"jobOpportunities":{"description":"Account hiring signals (companies only). Accepts the LinkedIn hiring-signal labels OR codes.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset (default 0).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"Results per page (default 25, max 25).","type":"integer","minimum":1,"maximum":25},"campaignSlug":{"description":"Campaign ID. Auto-adds discovered contacts to this campaign in background. Mandatory whenever a campaign is active.","type":"string"}}}}}},"responses":{"200":{"description":"Sales Navigator people search results","content":{"application/json":{"example":{"success":true,"category":"people","items":[{"type":"PEOPLE","id":"ACwAAASNCJcBS2NERCgi0j_f7_oYqCSbTGsNYBc","name":"Jane Smith","firstName":"Jane","lastName":"Smith","memberUrn":"urn:li:member:76351639","profileUrn":"urn:li:fsd_profile:ACoAAASNCJcBS2NERCgi0j_f7_oYqCSbTGsNYBc","publicIdentifier":"jane-smith","profileUrl":"https://www.linkedin.com/in/jane-smith","salesNavUrl":"https://www.linkedin.com/sales/lead/ACwAAASNCJcBS2NERCgi0j_f7_oYqCSbTGsNYBc,NAME_SEARCH,NqOz","profilePicture":null,"headline":"Senior Software Engineer at Google","location":"San Francisco Bay Area","networkDistance":"DISTANCE_2","premium":true,"openProfile":false,"pendingInvitation":false,"currentPositions":[{"company":"Google","companyId":"1441","role":"Senior Software Engineer","description":null,"location":null,"tenureAtCompany":{"years":3},"tenureAtRole":{"years":2}}]}],"paging":{"start":0,"count":25,"total":1500},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["people"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PEOPLE"]},"id":{"type":"string","description":"Sales Navigator lead ID"},"name":{"type":"string"},"firstName":{"nullable":true,"type":"string"},"lastName":{"nullable":true,"type":"string"},"memberUrn":{"nullable":true,"description":"LinkedIn member URN (e.g. urn:li:member:12345)","type":"string"},"profileUrn":{"nullable":true,"description":"Canonical profile URN (urn:li:fsd_profile:ACo...) derived from any ACoA id found in the payload. Null only when LinkedIn returns a bare numeric memberUrn with no ACoA trace.","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity URL slug","type":"string"},"profileUrl":{"nullable":true,"description":"Profile URL. 3-tier fallback: (1) real /in/<slug>, (2) synthesized /in/<encrypted-id> when only a URN is known — LinkedIn accepts both ACoA… and ACwA… encrypted ids as the slug (case-sensitive), (3) /sales/lead/<id> as last resort when neither is available. Tier 3 URLs are not persistable in Bereach — call POST /resolve/linkedin/profiles to upgrade them.","type":"string"},"salesNavUrl":{"nullable":true,"description":"Sales Navigator lead URL","type":"string"},"profilePicture":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"networkDistance":{"nullable":true,"description":"LinkedIn network distance: DISTANCE_1=connected, DISTANCE_2=2nd degree, DISTANCE_3=3rd degree, OUT_OF_NETWORK=not connected.","type":"string","enum":["DISTANCE_1","DISTANCE_2","DISTANCE_3","OUT_OF_NETWORK"]},"premium":{"nullable":true,"description":"True if the person has a LinkedIn Premium account.","type":"boolean"},"openProfile":{"nullable":true,"description":"True if the person has Open Profile — can be messaged without a connection.","type":"boolean"},"pendingInvitation":{"nullable":true,"description":"True if you have an outstanding connection invitation to this person.","type":"boolean"},"currentPositions":{"type":"array","items":{"type":"object","properties":{"company":{"nullable":true,"type":"string"},"companyId":{"nullable":true,"type":"string"},"role":{"nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"tenureAtCompany":{"nullable":true,"type":"object","properties":{"years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"months":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"tenureAtRole":{"nullable":true,"type":"object","properties":{"years":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"months":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}},"required":["company","companyId","role","description","location","tenureAtCompany","tenureAtRole"],"additionalProperties":false},"description":"Current work positions for this profile."}},"required":["type","id","name","firstName","lastName","memberUrn","profileUrn","publicIdentifier","profileUrl","salesNavUrl","profilePicture","headline","location","networkDistance","premium","openProfile","pendingInvitation","currentPositions"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/sales-nav/companies":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"searchSalesNavCompanies","x-speakeasy-name-override":"companies","summary":"Sales Navigator Company/Account Search","description":"# Sales Navigator Company Search\n\nSearch for accounts in LinkedIn Sales Navigator.\n\n## Available filters\n| Filter | Type | Description |\n|--------|------|-------------|\n| `keywords` | string | Search terms |\n| `industry` | {include?, exclude?} | Industry IDs with include/exclude |\n| `location` | string[] | Geography IDs |\n| `companyHeadcount` | string[] | Employee count ranges |\n| `companyType` | string[] | Company types |\n\n## Credits\n","tags":["salesNav"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"category":"companies","keywords":"SaaS","companyHeadcount":["C","D"]},"schema":{"type":"object","properties":{"category":{"description":"Type of Sales Navigator search: 'people' (leads) or 'companies' (accounts). Required unless url is provided.","type":"string","enum":["people","companies"]},"url":{"description":"Sales Navigator search URL — paste directly from your browser. Category and filters are extracted automatically. Explicit params override URL-derived values. Example: https://www.linkedin.com/sales/search/people?query=...","type":"string"},"keywords":{"description":"Search keywords. Supports LinkedIn Boolean syntax: use double quotes for exact phrases, AND/OR/NOT operators (UPPERCASE), and parentheses for grouping.","type":"string"},"industry":{"description":"Industry filter. Accepts industry names ('Software Development', 'Hospitals and Health Care') OR LinkedIn numeric ids. Server resolves.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"location":{"description":"Geography filter (people & companies). Accepts location names ('France', 'San Francisco Bay Area', 'EMEA') OR LinkedIn geo ids. Server resolves via typeahead.","type":"array","items":{"type":"string"}},"locationExclude":{"description":"Geography filter to EXCLUDE. Same accepted shapes as `location`. Useful for 'all of Europe except Switzerland' patterns.","type":"array","items":{"type":"string"}},"persona":{"description":"Buyer Persona IDs the user has configured on sales.linkedin.com home (combos of function+seniority+title+geo). Match the IDs from the URL filter ((type:PERSONA,values:List((id:<id>,…)))).","type":"array","items":{"type":"string"}},"recentlyChangedJobs":{"description":"Filter to leads who changed jobs in the last 90 days (LinkedIn buying-intent flag). True = include only job-changers; omit/false = no constraint.","type":"boolean"},"postedOnLinkedin":{"description":"Filter to leads who recently posted on LinkedIn (engagement signal — active posters reply more often). True = include only recent posters; omit/false = no constraint.","type":"boolean"},"sharedExperiences":{"description":"Filter to leads with shared experience with the searcher (same school / past employer / group). True = include only shared-experience matches; omit/false = no constraint.","type":"boolean"},"viewedYourProfile":{"description":"Filter to leads who recently viewed YOUR profile (LinkedIn flag VYP). Highest-intent engagement signal — they already showed interest. Requires Sales Nav seat that captures profile views.","type":"boolean"},"followsYourCompany":{"description":"Filter to leads who follow YOUR company page (LinkedIn flag CF). Warm-touch signal — they opted into your brand.","type":"boolean"},"connectionOf":{"description":"Filter to leads connected to a specific person. Values are LinkedIn ENCRYPTED member URN ids (e.g. 'ACwAAAim9ZcB…'), not numeric ids. Useful for 'find people connected to my champion at X' warm-intro patterns.","type":"array","items":{"type":"string"}},"pastCompany":{"description":"Past-employer filter (people only). Accepts company names ('Stripe') OR LinkedIn numeric ids. The server wraps numeric ids as 'urn:li:organization:<id>' (the wire shape Sales Nav requires) — callers can pass the bare id or the URN.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"companyHeadquarters":{"description":"Where the lead's CURRENT employer is HQ'd (people only). Accepts location names ('France', 'United States') OR LinkedIn geo ids. Distinct from `location` which is the lead's own location — useful for 'sell to UK-headquartered companies regardless of where the buyer lives'.","type":"object","properties":{"include":{"description":"Labels OR numeric IDs to include. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}},"exclude":{"description":"Labels OR numeric IDs to exclude. Labels are resolved server-side (no need to call /parameters first).","type":"array","items":{"type":"string"}}}},"yearsInCurrentPosition":{"description":"Years in current ROLE/POSITION (people only). Same accepted labels as `yearsOfExperience` ('Less than 1 year', '1 to 2 years', etc.). Distinct from `tenure` which counts years at current COMPANY.","type":"array","items":{"type":"string"}},"pastTitle":{"description":"Past job title keywords (people only). Free-text, supports Boolean OR. Finds leads who previously held a matching title.","type":"string"},"firstName":{"description":"First name (people only). Exact name filter.","type":"string"},"lastName":{"description":"Last name (people only). Exact name filter.","type":"string"},"groups":{"description":"LinkedIn Groups membership (people only). Accepts group names ('Digital Marketing') OR numeric group ids. Server resolves names via typeahead.","type":"array","items":{"type":"string"}},"pastColleague":{"description":"Filter to leads who are past colleagues of the searcher (worked at the same company, overlapping dates). True = include only past colleagues; omit/false = no constraint. Warm-intro signal.","type":"boolean"},"leadInteractions":{"description":"Filter by your past interaction with the lead (people only). Accepts labels ('Messaged') OR LinkedIn codes.","type":"array","items":{"type":"string"}},"savedLeadsAndAccounts":{"description":"Filter to your saved leads / accounts (people only). Accepts 'All my saved leads' / 'All my saved accounts' OR codes SL/SA.","type":"array","items":{"type":"string"}},"companyHeadcount":{"description":"Employee count (companies only). Accepts labels ('1-10', '11-50', '51-200', '201-500', '501-1,000', '1,001-5,000', '5,001-10,000', '10,001+', 'Self-employed') OR LinkedIn letter codes A-I.","type":"array","items":{"type":"string"}},"companyType":{"description":"Company type (companies only). Accepts labels ('Public Company', 'Privately Held', 'Non Profit', 'Educational Institution', 'Government Agency', 'Self-Employed', 'Self-Owned', 'Partnership') OR LinkedIn letter codes.","type":"array","items":{"type":"string"}},"numOfFollowers":{"description":"Company follower-count buckets (companies only). Accepts labels ('1-50', '51-100', '101-1,000', '1,001-5,000', '5,001+') OR ids 1-5.","type":"array","items":{"type":"string"}},"fortune":{"description":"Fortune-list membership (companies only). Accepts 'Fortune 50' / 'Fortune 100' / 'Fortune 250' / 'Fortune 500' OR codes FORTUNE_50/100/250/500.","type":"array","items":{"type":"string"}},"accountActivities":{"description":"Account buying-intent signals (companies only). Accepts labels ('Senior leadership changes in last 3 months', 'Funding events in past 12 months') OR codes SLC/RFE.","type":"array","items":{"type":"string"}},"jobOpportunities":{"description":"Account hiring signals (companies only). Accepts the LinkedIn hiring-signal labels OR codes.","type":"array","items":{"type":"string"}},"start":{"description":"Pagination offset (default 0).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"Results per page (default 25, max 25).","type":"integer","minimum":1,"maximum":25},"campaignSlug":{"description":"Campaign ID. Auto-adds discovered contacts to this campaign in background. Mandatory whenever a campaign is active.","type":"string"}}}}}},"responses":{"200":{"description":"Sales Navigator company search results","content":{"application/json":{"example":{"success":true,"category":"companies","items":[{"type":"COMPANY","id":"1441","name":"Google","profileUrl":"https://www.linkedin.com/sales/company/1441","summary":"Organizing the world's information","industry":"Software Development","location":"Mountain View, CA","headcount":"10001+"}],"paging":{"start":0,"count":25,"total":200},"hasMore":true,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"category":{"type":"string","enum":["companies"]},"items":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["COMPANY"]},"name":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"summary":{"nullable":true,"type":"string"},"industry":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"logoUrl":{"description":"Company logo URL when LinkedIn surfaces it on the result entity. Display this in the company card.","nullable":true,"type":"string"},"lane":{"description":"Present when this row came from the public lane covering for the connected account. Public data only.","type":"string","enum":["public"]},"id":{"type":"string","description":"Sales Navigator company ID"},"headcount":{"nullable":true,"description":"Employee count or range","type":"string"}},"required":["type","name","profileUrl","summary","industry","location","id","headcount"],"additionalProperties":false}},"paging":{"type":"object","properties":{"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["start","count","total"],"additionalProperties":false},"hasMore":{"type":"boolean"},"warnings":{"description":"Caveats about this result set. Absent or empty means the search ran exactly as asked.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Which part of the request this is about, or `search` when it is about the whole result set."},"value":{"type":"string","description":"The value involved: what was dropped, or a code naming the condition."},"type":{"type":"string","description":"What kind of caveat this is. SEARCH_QUOTA: LinkedIn capped this account for the month, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: the page answered and no rows could be read, and LinkedIn did not say the market is empty, so treat it as unread rather than as nobody matching. URL_FACET: a pasted search URL carried a filter this search cannot apply, so it ran wider than the one on screen. ENUM: a value was not recognised and that filter was dropped. LANE_FALLBACK: some or all rows came from the public lane, which fills fewer fields. AND_BLOB / OR_OVERFLOW: the keyword shape over-constrained and was retried or flagged. SEARCH_PLAN: the ask was spread across a search budget rather than paged."},"hint":{"description":"One sentence a caller can show a person.","type":"string"}},"required":["field","value","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","category","items","paging","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/sales-nav/filters":{"get":{"x-bereach":{"cost":"free","agents":["lead_gen"],"resultShape":"list"},"operationId":"listSalesNavFilters","x-speakeasy-name-override":"listSalesNavFilters","summary":"List the Sales Navigator filters available for this seat","description":"Returns the Sales Navigator filter panel — every filter you can use, grouped, with how to supply each value.\n\nCall this ONCE at the start of a Sales Nav search task — like a human opening the filter panel. It tells you:\n- which filters exist (seat tiers differ — Core / Advanced / Advanced Plus expose different filters);\n- the BeReach `field` name to set on the search for each;\n- the `valueKind` (enum / entity / toggle / range / text) so you know how to supply the value;\n- `supportsExclude` and `available` (false = the seat tier does not have this filter — don't promise it to the user).\n\nRequires an active Sales Nav seat.","tags":["search"],"security":[{"token":[]}],"responses":{"200":{"description":"Available Sales Nav filters for this seat.","content":{"application/json":{"example":{"success":true,"filters":[{"name":"Seniority level","field":"seniority","group":"Role","valueKind":"enum","supportsExclude":true,"available":true},{"name":"Current company","field":"company","group":"Company","valueKind":"entity","supportsExclude":true,"available":true}],"count":2,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"filters":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"User-facing filter name, e.g. 'Seniority level'."},"field":{"type":"string","description":"The BeReach schema field name to set on a search, e.g. 'seniority'."},"group":{"type":"string","description":"UI group: Company / Role / Personal / Buyer intent / Best path in / Workflow."},"valueKind":{"type":"string","enum":["enum","entity","toggle","range","text"],"description":"How to supply a value: 'enum' = pick a label; 'entity' = pass a name (company/school/etc); 'toggle' = boolean; 'range' = {min,max}; 'text' = free string."},"supportsExclude":{"type":"boolean","description":"Whether the filter accepts an exclude list."},"available":{"type":"boolean","description":"Whether THIS credential's Sales Nav seat tier exposes the filter."}},"required":["name","field","group","valueKind","supportsExclude","available"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","filters","count","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/sales-nav/personas":{"get":{"x-bereach":{"cost":"free","agents":["lead_gen"],"resultShape":"list"},"operationId":"listSalesNavPersonas","x-speakeasy-name-override":"listSalesNavPersonas","summary":"List the user's saved Sales Navigator personas","description":"Returns the user's custom buyer-persona library from Sales Navigator home (`sales.linkedin.com/home`).\n\nCall this BEFORE setting the `persona` filter on a Sales Nav search. The agent has no way to guess persona ids — they are user-defined. Match the user's intent against the returned `name` + `criteriaSummary`.\n\nRequires an active Sales Nav seat (403 otherwise — same gate as the search tools).","tags":["search"],"security":[{"token":[]}],"responses":{"200":{"description":"User's saved personas.","content":{"application/json":{"example":{"success":true,"personas":[{"id":"12345","name":"VP Sales EMEA","description":null,"criteriaSummary":"VP+ in Sales function, EMEA region"}],"count":1,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"personas":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"nullable":true,"type":"string"},"criteriaSummary":{"nullable":true,"description":"Human-readable summary of the persona's filter criteria (e.g. 'VP+ in Sales, US/UK'). Use this to match the user's intent to a saved persona.","type":"string"}},"required":["id","name","description","criteriaSummary"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","personas","count","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/sales-nav/saved-searches":{"get":{"x-bereach":{"cost":"free","agents":["lead_gen"],"resultShape":"list"},"operationId":"listSalesNavSavedSearches","x-speakeasy-name-override":"listSalesNavSavedSearches","summary":"List the user's saved Sales Navigator searches","description":"Returns the user's saved Sales Navigator searches.\n\nCall this at the start of a search task when the user references prior work (\"run my fintech search\", \"the usual list\"). Match the user's intent against the returned `name`, then pass the matching `savedSearchUrl` straight into `search_sales_nav_people` / `search_sales_nav_companies` via the `url` field — no filter assembly needed.\n\nRequires an active Sales Nav seat.","tags":["search"],"security":[{"token":[]}],"responses":{"200":{"description":"User's saved searches.","content":{"application/json":{"example":{"success":true,"savedSearches":[{"id":"987654","name":"Series B fintech CXOs","category":"people","savedSearchUrl":"https://www.linkedin.com/sales/search/people?query=(...)","newResultsCount":12,"lastUsedAt":"2026-05-10T09:00:00Z"}],"count":1,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"savedSearches":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"nullable":true,"type":"string","enum":["people","companies"]},"savedSearchUrl":{"type":"string","description":"Full Sales Navigator search URL — pass straight into search_sales_nav_people/companies via the `url` field."},"newResultsCount":{"nullable":true,"description":"New matches since the user last viewed this saved search, if LinkedIn reports it.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastUsedAt":{"nullable":true,"type":"string"}},"required":["id","name","category","savedSearchUrl","newResultsCount","lastUsedAt"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","savedSearches","count","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/visit/linkedin/profile":{"post":{"x-bereach":{"cost":"read","agents":["orchestrator","lead_gen","outreach"],"resultShape":"post","guards":["contactTargetingBulk"]},"operationId":"visitProfile","x-speakeasy-name-override":"visitProfile","summary":"Visit LinkedIn profile and extract contact data","description":"One named person only. Pass the profile URL, vanity slug, or URN from a list row, never a display name. For two or more people use public_enrich. Do not call this to get email or phone. Visit a LinkedIn profile and return comprehensive contact data — the richest snapshot of any endpoint.\n\nReturned fields include: firstName, lastName, headline, summary (about), location, imageUrl, isVerified, memberDistance (connection degree: 0=self, 1=direct, 2+=2nd/3rd, or null if unknown), connectionsCount, followersCount, profileUrl, profileUrn, publicIdentifier, position, company, positions[] (work history with role + companyName + companyUrl + companyLogo + startDate), educations[] (schoolName + degreeName + fieldOfStudy + schoolUrl + schoolLogo), pendingConnection. Email and phone are not a reason to call this.\n\nIMPORTANT for ACTIVITY signals: `lastPosts[]`, `lastComments[]`, `lastReactions[]` (each up to 5 entries carrying postUrl + text + date + reactionType + targetPostUrn). These are the strongest recency signals available — a profile with no entries in these arrays is effectively inactive on LinkedIn.\n\nThe About section, posts, comments, and reactions are ALWAYS fetched and returned — the `includePosts` / `includeComments` / `includeAbout` request flags are accepted for backward compatibility but ignored (always treated as true).\n\nDo NOT call this on a profile you've already visited recently — the response is cached for several hours.","tags":["scrapers"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/alexandre-sarfati","campaignSlug":"lead-magnet-post-12345","includePosts":true,"includeComments":true},"schema":{"type":"object","properties":{"profile":{"type":"string","description":"LinkedIn profile identifier from a list row: full URL, vanity slug, or URN. Never a display name. A unique name in the saved pool is resolved server-side; prefer the URL from the row."},"includePosts":{"description":"Accepted for backward compatibility but ignored — the API ALWAYS fetches the profile's last 5 posts.","type":"boolean"},"includeComments":{"description":"Accepted for backward compatibility but ignored — the API ALWAYS fetches the last 5 posts the profile engaged with via comments (with target-post text + author).","type":"boolean"},"includeAbout":{"description":"Accepted for backward compatibility but ignored — the API ALWAYS fetches the About section and detailed position descriptions.","type":"boolean"}},"required":["profile"]}}}},"responses":{"200":{"description":"Profile contact data","content":{"application/json":{"example":{"success":true,"firstName":"Alexandre","lastName":"Sarfati","headline":"Building cool stuff","publicIdentifier":"alexandre-sarfati","profileUrl":"https://www.linkedin.com/in/alexandre-sarfati","profileUrn":"urn:li:fsd_profile:ACoAACu_x48BiQInPmqFR0eD-Ycao_BxynDwWgs","imageUrl":null,"email":"alexandre@example.com","location":"Paris, France","company":"PIMMS","position":"Founder","memberDistance":0,"followersCount":1234,"pendingConnection":"none","cached":false,"creditsUsed":1,"retryAfter":0,"positions":[{"companyName":"PIMMS","title":"Founder","companyUrl":"https://www.linkedin.com/company/getpimms/","companyLogo":null,"startDate":{"month":3,"year":2025},"endDate":null,"isCurrent":true}],"educations":[{"schoolName":"Sciences Po","degreeName":null,"fieldOfStudy":null,"schoolUrl":"https://www.linkedin.com/school/sciences-po/","schoolLogo":null,"startDate":null,"endDate":null}],"lastPosts":[{"postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:7440057626605973504/","text":"Comment collecter des leads avec son agent IA ?","date":1773847967769,"likesCount":7,"commentsCount":4,"sharesCount":0,"postUrn":"urn:li:fsd_update:(urn:li:activity:7440057626605973504,MEMBER_SHARES,DEBUG_REASON,DEFAULT,false)","postId":"7440057626605973504","type":"activity"}],"lastComments":[{"type":"comment","activityUrn":"urn:li:fsd_update:(urn:li:activity:7437847690320855040,MEMBER_SHARES,DEBUG_REASON,DEFAULT,false)","text":null,"reactionType":null,"targetPostUrn":"urn:li:activity:7437847690320855040","targetPostText":"Mon associé m'a fait le coup de Steve Jobs ! C'est un génie, d'abord il me fait la démo de l'ajout de 70 endpoints...","targetPostAuthor":null,"timestamp":null,"actorName":"Benjamin Joseph Benoudis","actorUrn":null}]},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"firstName":{"type":"string"},"lastName":{"type":"string"},"headline":{"nullable":true,"type":"string"},"summary":{"nullable":true,"description":"The profile's 'About' section text. Always fetched; null only when the profile has no About filled in.","type":"string"},"publicIdentifier":{"type":"string"},"profileUrl":{"nullable":true,"description":"LinkedIn profile URL. Null when publicIdentifier is unavailable (restricted profiles).","type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. 'urn:li:fsd_profile:ACoAAA...'). Use this for matching against inbox participants.","type":"string"},"imageUrl":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string"},"phone":{"nullable":true,"description":"Phone number from LinkedIn profile (rarely available)","type":"string"},"location":{"nullable":true,"type":"string"},"company":{"nullable":true,"description":"Current company name (from most recent position)","type":"string"},"position":{"nullable":true,"description":"Current job title (from most recent position)","type":"string"},"memberDistance":{"nullable":true,"description":"Connection degree: 0 (self), 1 (direct connection), 2+ (2nd degree, 3rd degree, etc.), or null if unknown","type":"number"},"connectionsCount":{"nullable":true,"description":"Total number of connections. May be null for non-connected profiles or restricted visibility.","type":"number"},"followersCount":{"nullable":true,"description":"Total number of followers. Null for restricted profiles or when unavailable.","type":"number"},"isVerified":{"type":"boolean","description":"Whether the profile has a LinkedIn verification badge."},"pendingConnection":{"type":"string","enum":["pending","failed","none"],"description":"Connection request status: 'pending' if request was sent successfully, 'failed' if request failed today, 'none' if not tracked"},"positions":{"description":"Work experience positions","type":"array","items":{"type":"object","properties":{"companyName":{"nullable":true,"type":"string"},"title":{"nullable":true,"type":"string"},"description":{"description":"Position description / responsibilities text (always fetched on visit_profile; may be null if LinkedIn has none)","nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"companyLogo":{"nullable":true,"type":"string"},"companyDescription":{"description":"Short description of the company (always fetched on visit_profile; may be null)","nullable":true,"type":"string"},"startDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false},"isCurrent":{"type":"boolean"}},"required":["companyName","title","companyUrl","companyLogo","startDate","endDate","isCurrent"],"additionalProperties":false}},"educations":{"description":"Education entries","type":"array","items":{"type":"object","properties":{"schoolName":{"nullable":true,"type":"string"},"degreeName":{"nullable":true,"type":"string"},"fieldOfStudy":{"nullable":true,"type":"string"},"schoolUrl":{"nullable":true,"type":"string"},"schoolLogo":{"nullable":true,"type":"string"},"startDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false}},"required":["schoolName","degreeName","fieldOfStudy","schoolUrl","schoolLogo","startDate","endDate"],"additionalProperties":false}},"lastPosts":{"description":"Last 5 posts from the profile (always fetched; array may be empty if none found).","type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"type":{"type":"string","enum":["activity","ugcPost","share"],"description":"LinkedIn post type: 'ugcPost' = standard post, 'share' = native share/repost, 'activity' = legacy format."},"isRepost":{"description":"True when the post is a repost/reshare of another post. Absent for original posts.","type":"boolean"},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"authorName":{"description":"Display name of the post's author.","type":"string"},"authorProfileUrl":{"description":"Author's profile URL.","type":"string"},"authorPublicIdentifier":{"description":"Author's vanity slug, when they have one.","nullable":true,"type":"string"},"authorProfileUrn":{"description":"Author's profile URN.","nullable":true,"type":"string"},"authorHeadline":{"description":"Author's headline as shown on the post.","type":"string"},"authorImageUrl":{"description":"Author's avatar URL.","type":"string"},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type"],"additionalProperties":false}},"lastComments":{"description":"Last 5 posts the profile recently commented on (always fetched; array may be empty). Contains targetPostText and targetPostAuthor for engagement context.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["comment","reaction"],"description":"Activity type: 'comment' for posts the user commented on"},"activityUrn":{"type":"string","description":"URN of the feed update (post) the user engaged with"},"text":{"nullable":true,"description":"The user's comment text (null when not available from the API — this is a LinkedIn limitation)","type":"string"},"reactionType":{"nullable":true,"description":"Reaction type (e.g. 'LIKE', 'CELEBRATE'). Only set for reaction-type activities","type":"string"},"targetPostUrn":{"nullable":true,"description":"URN of the post the user commented on (e.g. 'urn:li:activity:1234567890')","type":"string"},"targetPostText":{"nullable":true,"description":"First ~200 chars of the post the user commented on. Use this to understand what topics they engage with","type":"string"},"targetPostAuthor":{"nullable":true,"description":"Name of the post author (the person whose post was commented on)","type":"string"},"timestamp":{"nullable":true,"description":"Unix timestamp in milliseconds when the activity occurred","type":"number"},"actorName":{"nullable":true,"description":"Name of the post author (same as targetPostAuthor when available)","type":"string"},"actorUrn":{"nullable":true,"description":"Profile URN of the post author","type":"string"}},"required":["type","activityUrn","text","reactionType","targetPostUrn","targetPostText","targetPostAuthor","timestamp","actorName","actorUrn"],"additionalProperties":false}},"lastReactions":{"description":"Last 5 posts the profile recently reacted to (always fetched; array may be empty). Each entry carries reactionType, targetPostText, and targetPostAuthor for engagement context.","type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["comment","reaction"],"description":"Activity type: 'comment' for posts the user commented on"},"activityUrn":{"type":"string","description":"URN of the feed update (post) the user engaged with"},"text":{"nullable":true,"description":"The user's comment text (null when not available from the API — this is a LinkedIn limitation)","type":"string"},"reactionType":{"nullable":true,"description":"Reaction type (e.g. 'LIKE', 'CELEBRATE'). Only set for reaction-type activities","type":"string"},"targetPostUrn":{"nullable":true,"description":"URN of the post the user commented on (e.g. 'urn:li:activity:1234567890')","type":"string"},"targetPostText":{"nullable":true,"description":"First ~200 chars of the post the user commented on. Use this to understand what topics they engage with","type":"string"},"targetPostAuthor":{"nullable":true,"description":"Name of the post author (the person whose post was commented on)","type":"string"},"timestamp":{"nullable":true,"description":"Unix timestamp in milliseconds when the activity occurred","type":"number"},"actorName":{"nullable":true,"description":"Name of the post author (same as targetPostAuthor when available)","type":"string"},"actorUrn":{"nullable":true,"description":"Profile URN of the post author","type":"string"}},"required":["type","activityUrn","text","reactionType","targetPostUrn","targetPostText","targetPostAuthor","timestamp","actorName","actorUrn"],"additionalProperties":false}},"aboutFetched":{"description":"Always true — the About section is always fetched. Kept for backward compatibility.","type":"boolean"},"cached":{"type":"boolean","description":"true if this result was served from a local cache rather than a fresh LinkedIn API call."},"cachedAt":{"description":"When the cached copy was taken. Present when the result came from cache.","nullable":true,"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","firstName","lastName","headline","summary","publicIdentifier","profileUrl","profileUrn","imageUrl","email","phone","location","company","position","memberDistance","connectionsCount","followersCount","isVerified","pendingConnection","cached","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/connect/linkedin/profile":{"post":{"x-bereach":{"cost":"write","agents":["lead_gen","outreach"],"guards":["profileTargeting","warmupBlocked"]},"operationId":"connectProfile","x-speakeasy-name-override":"connectProfile","summary":"Send LinkedIn connection requests","description":"Invite named people only (a name, \"the second one\", a pronoun just used) from the connected LinkedIn account, with an optional note. A described criterion is not a send: peek then propose with filter_contacts intent:\"connect\" and let the human click. Pass the exact profile URL from the row. No separate visit is needed first. One call for one person, one call with the array for several. The invitation is queued and goes out on its own: say queued, never drafted or waiting for approval, and never sent until the result shows it left. Report position when it helps; never turn it into a time. When blocked is set, say so before anything else: nothing goes out until it clears, and a position is only where they will stand once it does. An entry in queued without a position is still in line, only further back than this call looked. Anyone already invited, already connected, or on a do-not-contact list is refused with the reason.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":["https://www.linkedin.com/in/username","https://www.linkedin.com/in/another"],"message":"Hi, I'd love to connect with you!"},"schema":{"type":"object","properties":{"profile":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"One LinkedIn profile, or many. Accepts full URLs (e.g. https://www.linkedin.com/in/username), vanity names (e.g. john-doe), or profile URNs (e.g. urn:li:fsd_profile:ACoAAA...)."},"knownPeople":{"description":"Optional identity already known for people in this call, matched by profile URL. Omit when you only have the URL. A new contact must not be named from the URL slug when a real name is already known.","type":"array","items":{"type":"object","properties":{"profile":{"type":"string"},"name":{"type":"string"},"headline":{"type":"string"},"company":{"type":"string"},"location":{"type":"string"},"avatarUrl":{"type":"string"}},"required":["profile"]}},"message":{"description":"Optional note to include with the invitation, the same note for everyone in this call. Maximum 300 characters. Leaving it out sends a bare invitation, which is the default and often accepted more often.","type":"string","maxLength":300},"now":{"description":"Try to send one of them inside this call and return the real result, rather than only reporting where they stand. Anyone named here already goes to the front of the line, with or without this. Either way sends stay paced.","type":"boolean"},"list":{"description":"Name of the list to add them to. Lists are just a way to keep separate pieces of work apart, and each one belongs to a single LinkedIn account. Omit to use this account's default list.","type":"string"},"dryRun":{"description":"Report what this call would do without doing any of it: nothing is added to any list, no invitation is attempted, and nothing is sent, ever, no matter what else is set. Use this to see the target list's real size and pause state, and each profile's real eligibility, before committing to a real call.","type":"boolean"},"placement":{"description":"Where these people join the line. \"front\", the default, puts them ahead of everyone already waiting, because naming somebody means \"this one next\". \"end\" puts them behind everyone you asked for by name; among the rest they take the ordinary place (seen active on LinkedIn most recently first, then arrival), and calling again with \"end\" for people already in line gives up their place at the front. Within one call, the people seen active most recently go first either way.","type":"string","enum":["front","end"]}},"required":["profile"]}}}},"responses":{"200":{"description":"Connection request sent successfully","content":{"application/json":{"example":{"success":true,"message":"1 invitation sent, 1 waiting.","sent":1,"queued":[{"profile":"https://www.linkedin.com/in/another","position":1,"etaDays":1}],"skipped":[],"blocked":null,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"sent":{"type":"number","description":"How many invitations actually reached LinkedIn during this call."},"queued":{"type":"array","items":{"type":"object","properties":{"profile":{"type":"string"},"position":{"nullable":true,"description":"Place in line for this account, 1 being next. Null when they are in line but further back than this call looked: still queued, just not numbered.","type":"number"},"etaDays":{"nullable":true,"description":"Rough wait in days, from how fast this account has actually been sending. Null when there is no history to estimate from, and null whenever the account is blocked, because the wait then depends on it recovering rather than on how fast it sends.","type":"number"}},"required":["profile","position","etaDays"],"additionalProperties":false},"description":"The people named in this call that are now in line, in the order they will go out. Not the whole line: that is waitingTotal on the status call."},"skipped":{"type":"array","items":{"type":"object","properties":{"profile":{"type":"string"},"reason":{"type":"string"}},"required":["profile","reason"],"additionalProperties":false},"description":"Anyone not added, each with the reason in plain words."},"blocked":{"nullable":true,"description":"Set when the account itself cannot send right now. Nothing goes out until this clears, and resumesAt is null when clearing it needs a person.","type":"object","properties":{"kind":{"type":"string","description":"Which kind of block, as a stable code: challenge, session_dead, no_credit, invite_cap, rate_limited. Read this rather than the message when deciding how to present it. The ordinary spacing between two invitations is never reported here."},"clearsItself":{"type":"boolean","description":"True when the block expires on its own; false when a person has to do something (open LinkedIn, reconnect the account)."},"message":{"type":"string"},"resumesAt":{"nullable":true,"type":"string"},"fixUrl":{"nullable":true,"description":"Where to send the account owner to fix it, when a person has to act. Null for the kinds that clear on their own.","type":"string"}},"required":["kind","clearsItself","message","resumesAt","fixUrl"],"additionalProperties":false},"waitingBefore":{"description":"How many OTHER people were already waiting on this account before this call, the people named here not counted. With the default placement, everyone just queued went ahead of all of them: say so when that number is not small, and offer once to put them behind instead.","type":"number"},"placement":{"description":"Where the people named joined the line, echoed from the request: front (the default) went ahead of everyone already waiting, end went behind the people asked for by name before.","type":"string","enum":["front","end"]},"duplicate":{"description":"True when nothing was sent and nobody joined the line because every profile named already has a reason of its own in skipped: already invited or connected, marked do not contact, given up on, or on a list that is paused. Read skipped for the reason.","type":"boolean"},"dryRun":{"description":"True when this was a preview: nothing was added, attempted, or sent. Everything else in this response describes what a real call would do right now.","type":"boolean"},"list":{"description":"Only present on a dryRun response: which list this call would actually target, and its real current state.","type":"object","properties":{"name":{"type":"string"},"isNew":{"type":"boolean","description":"True if this exact list does not exist yet and a real call would create it."},"totalMembers":{"type":"number","description":"How many people are already in this list, before this call."},"paused":{"type":"boolean","description":"A paused list sends nothing, ever, until it's resumed, regardless of anything else in this response."}},"required":["name","isNew","totalMembers","paused"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","message","sent","queued","skipped","blocked","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/invitations/linkedin":{"post":{"x-bereach":{"cost":"read","agents":["outreach"]},"operationId":"listInvitations","x-speakeasy-name-override":"listInvitations","summary":"List received LinkedIn connection invitations","description":"Returns pending connection invitations received by the authenticated LinkedIn account. Each invitation includes the invitationId and sharedSecret needed to accept it via the accept endpoint.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":false,"content":{"application/json":{"example":{"start":0,"count":10},"schema":{"type":"object","properties":{"start":{"default":0,"description":"Pagination offset (0-based)","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"default":10,"description":"Number of invitations to return (max 100)","type":"integer","minimum":1,"maximum":100}}}}}},"responses":{"200":{"description":"List of pending invitations","content":{"application/json":{"example":{"success":true,"invitations":[{"invitationId":"7431723100481851393","sharedSecret":"x2mPswjA","entityUrn":"urn:li:fs_relInvitation:7431723100481851393","sentAt":"2026-02-20T14:30:00.000Z","senderProfileId":"ACoAAB6pI5sBCHuu-3EkvcRl3sgtG7ayAb9FiS0","senderFirstName":"Cindy","senderLastName":"Singer","message":null,"fromMember":{"name":"Cindy Singer","headline":"Marketing Director at Acme Corp","profileUrl":"https://www.linkedin.com/in/cindy-singer","profilePicture":"https://media.licdn.com/dms/image/v2/example.jpg","publicIdentifier":"cindy-singer","profileUrn":"urn:li:fsd_profile:ACoAAB6pI5sBCHuu"}}],"total":36,"start":0,"count":10,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"invitations":{"type":"array","items":{"type":"object","properties":{"invitationId":{"type":"string","description":"Invitation ID needed for accepting"},"sharedSecret":{"type":"string","description":"Shared secret needed for accepting"},"entityUrn":{"type":"string","description":"Full invitation URN"},"sentAt":{"nullable":true,"description":"ISO 8601 timestamp when invitation was sent","type":"string"},"message":{"nullable":true,"description":"Custom message included with the invitation","type":"string"},"senderProfileId":{"nullable":true,"description":"Sender's profile ID (pass to accept endpoint)","type":"string"},"senderFirstName":{"nullable":true,"description":"Sender's first name (pass to accept endpoint)","type":"string"},"senderLastName":{"nullable":true,"description":"Sender's last name (pass to accept endpoint)","type":"string"},"fromMember":{"nullable":true,"description":"Profile info of the person who sent the invitation","type":"object","properties":{"name":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"}},"required":["name","headline","profileUrl","profilePicture","publicIdentifier","profileUrn"],"additionalProperties":false},"sentTime":{"description":"Epoch ms, beside the ISO `sentAt`. Sortable without re-parsing.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"invitationType":{"description":"Connection invitation or another kind. A caller piping every row into accept should filter on this first.","nullable":true,"type":"string"},"mailboxItemId":{"description":"Links this invitation to its inbox thread.","nullable":true,"type":"string"},"customMessage":{"description":"Whether the sender attached a note, which `message` alone cannot distinguish from an empty one.","type":"boolean"},"unseen":{"description":"New since this account last looked. The only field that lets a poller triage instead of re-processing everything.","type":"boolean"},"mutualCurrentCompany":{"description":"Shared-employer signal, when LinkedIn attaches one.","nullable":true},"connectionDistance":{"description":"Degrees of separation from the sender.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"inviterFollowingInvitee":{"description":"Whether the sender already follows this account.","type":"boolean"},"fromEvent":{"description":"Present when the invitation came out of an event."},"inviterActors":{"description":"Present when LinkedIn names who the invitation is on behalf of.","type":"array","items":{}}},"required":["invitationId","sharedSecret","entityUrn","sentAt","message","senderProfileId","senderFirstName","senderLastName","fromMember"],"additionalProperties":false}},"total":{"type":"number","description":"Total number of pending invitations"},"start":{"type":"number"},"count":{"type":"number"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","invitations","total","start","count","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/accept/linkedin/invitation":{"post":{"x-bereach":{"cost":"write","agents":["outreach"]},"operationId":"acceptInvitation","x-speakeasy-name-override":"acceptInvitation","summary":"Accept a LinkedIn connection invitation","description":"Accepts a pending connection invitation. Requires the invitationId and sharedSecret obtained from the list invitations endpoint. No daily/weekly cap — only a 5-second minimum interval between calls.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"invitationId":"7431723100481851393","sharedSecret":"x2mPswjA","senderProfileId":"ACoAAB6pI5sBCHuu-3EkvcRl3sgtG7ayAb9FiS0","firstName":"Cindy","lastName":"Singer"},"schema":{"type":"object","properties":{"invitationId":{"type":"string","description":"Invitation ID (from the list invitations endpoint)"},"sharedSecret":{"type":"string","description":"Shared secret / validation token (from the list invitations endpoint)"},"senderProfileId":{"description":"Sender's profile ID (from the list invitations endpoint, e.g. 'ACoAAB6pI5sB...'). Recommended for reliability.","type":"string"},"firstName":{"description":"Sender's first name (from the list invitations endpoint). Recommended for reliability.","type":"string"},"lastName":{"description":"Sender's last name (from the list invitations endpoint). Recommended for reliability.","type":"string"}},"required":["invitationId","sharedSecret"]}}}},"responses":{"200":{"description":"Invitation accepted successfully","content":{"application/json":{"example":{"success":true,"message":"Invitation accepted","creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","message","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/message/linkedin":{"post":{"x-bereach":{"cost":"write","agents":["lead_gen","outreach"],"guards":["profileTargeting","contactTargetingBulk","warmupBlocked"]},"operationId":"sendMessage","x-speakeasy-name-override":"sendMessage","summary":"Send LinkedIn message","description":"Send a message to the specified LinkedIn recipient.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/username","message":"Hi! I'd love to connect and learn more about your work.","campaignSlug":"lead-magnet-post-12345"},"schema":{"type":"object","properties":{"profile":{"description":"Accepts full LinkedIn profile URLs (e.g. https://www.linkedin.com/in/username), vanity names (e.g. john-doe), or profile URNs (e.g. urn:li:member:123456).","type":"string"},"conversationUrn":{"description":"LinkedIn conversation URN. When provided, bypasses profile URL lookup and replies to an existing conversation.","type":"string"},"message":{"type":"string","minLength":1,"description":"Message content to send"},"campaignSlug":{"description":"Campaign identifier for deduplication. Dedup by profile automatically.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"actionSlug":{"deprecated":true,"description":"Deprecated. Use campaignSlug only.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"}},"required":["message"]}}}},"responses":{"200":{"description":"Message sent successfully","content":{"application/json":{"example":{"success":true,"messageId":"message-sent","creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"messageId":{"type":"string"},"duplicate":{"description":"True if this action was already executed for the given campaignSlug + target.","type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","messageId","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/reply/linkedin/comment":{"post":{"x-bereach":{"cost":"write","agents":["orchestrator","outreach"],"guards":["profileTargeting","contactTargetingBulk"]},"operationId":"replyToComment","x-speakeasy-name-override":"replyToComment","summary":"Reply to a LinkedIn comment","description":"Sends a reply to a LinkedIn comment. Use the comment URN from the comment object directly — do NOT reconstruct it from hash fields.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"commentUrn":"urn:li:comment:(activity:7399026485694537728,7399230513867026433)","message":"Thank you for your comment!","campaignSlug":"lead-magnet-post-12345"},"schema":{"type":"object","properties":{"commentUrn":{"type":"string","minLength":1,"description":"LinkedIn comment URN (e.g., 'urn:li:comment:(activity:7399026485694537728,7399230513867026433)')"},"message":{"type":"string","minLength":1,"description":"Reply message text"},"campaignSlug":{"description":"Campaign identifier for deduplication. Dedup by commentUrn automatically.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"actionSlug":{"deprecated":true,"description":"Deprecated. Use campaignSlug only.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"}},"required":["commentUrn","message"]}}}},"responses":{"200":{"description":"Reply sent successfully","content":{"application/json":{"example":{"success":true,"replyUrn":"urn:li:comment:(activity:7399026485694537728,7399230513867026434)","creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"replyUrn":{"description":"URN of the created reply comment","type":"string"},"duplicate":{"description":"True if this action was already executed for the given campaignSlug + target.","type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/like/linkedin/comment":{"post":{"x-bereach":{"cost":"write","agents":["orchestrator","outreach"],"guards":["profileTargeting"]},"operationId":"likeComment","x-speakeasy-name-override":"likeComment","summary":"Like a LinkedIn comment","description":"Reacts to a LinkedIn comment. Use the comment URN from the comment object directly — do NOT reconstruct it from hash fields.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"commentUrn":"urn:li:comment:(activity:7399026485694537728,7399230513867026433)","reactionType":"LIKE","campaignSlug":"lead-magnet-post-12345"},"schema":{"type":"object","properties":{"commentUrn":{"type":"string","minLength":1,"description":"LinkedIn comment URN (e.g., 'urn:li:comment:(activity:7399026485694537728,7399230513867026433)')"},"reactionType":{"default":"LIKE","description":"Reaction type (default: LIKE)","type":"string","enum":["LIKE","LOVE","CELEBRATE","SUPPORT","FUNNY","INSIGHTFUL"]},"campaignSlug":{"description":"Campaign identifier for deduplication. Dedup by commentUrn automatically.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"actionSlug":{"deprecated":true,"description":"Deprecated. Use campaignSlug only.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"}},"required":["commentUrn"]}}}},"responses":{"200":{"description":"Comment liked successfully","content":{"application/json":{"example":{"success":true,"resourceKey":"urn:li:fsd_reaction:(urn:li:fsd_profile:ACoAACu_x48BiQInPmqFR0eD-Ycao_BxynDwWgs,urn:li:comment:(activity:7399026485694537728,7399230513867026433),0)","creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"resourceKey":{"description":"Resource key of the created reaction","type":"string"},"duplicate":{"description":"True if this action was already executed for the given campaignSlug + target.","type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/comment/linkedin/post":{"post":{"x-bereach":{"cost":"write","agents":["orchestrator","outreach"],"guards":["profileTargeting","contactTargetingBulk"]},"operationId":"commentOnPost","x-speakeasy-name-override":"createComment","summary":"Comment on a LinkedIn post","description":"Adds a top-level comment on a LinkedIn post. Supports deduplication via campaignSlug.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:7399026485694537728/","message":"Great insights! Thanks for sharing.","campaignSlug":"engagement-campaign-q1"},"schema":{"type":"object","properties":{"postUrl":{"type":"string","minLength":1,"description":"LinkedIn post URL (e.g., 'https://www.linkedin.com/feed/update/urn:li:activity:7399026485694537728/')"},"message":{"type":"string","minLength":1,"description":"Comment text"},"companyId":{"description":"If provided, comment will be posted as this company page (organization ID). User must be admin of the page.","type":"string"},"campaignSlug":{"description":"Campaign identifier for deduplication. Dedup by postUrl automatically.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"actionSlug":{"deprecated":true,"description":"Deprecated. Use campaignSlug only.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"}},"required":["postUrl","message"]}}}},"responses":{"200":{"description":"Comment posted successfully","content":{"application/json":{"example":{"success":true,"commentUrn":"urn:li:comment:(activity:7399026485694537728,7399230513867026433)","creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"commentUrn":{"description":"URN of the created comment (e.g., 'urn:li:comment:(activity:PARENT_ID,COMMENT_ID)')","type":"string"},"fsdCommentUrn":{"description":"FSD-format comment URN for use with the edit comment endpoint.","type":"string"},"duplicate":{"description":"True if this action was already executed for the given campaignSlug + target.","type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/like/linkedin/post":{"post":{"x-bereach":{"cost":"write","agents":["orchestrator","outreach"],"guards":["profileTargeting"]},"operationId":"likePost","x-speakeasy-name-override":"likePost","summary":"Like a LinkedIn post","description":"Reacts to a LinkedIn post. Accepts a post URL and an optional reaction type. Supports deduplication via campaignSlug.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:7399026485694537728/","reactionType":"LIKE","campaignSlug":"engagement-campaign-q1"},"schema":{"type":"object","properties":{"postUrl":{"type":"string","minLength":1,"description":"LinkedIn post URL (e.g., 'https://www.linkedin.com/feed/update/urn:li:activity:7399026485694537728/')"},"reactionType":{"default":"LIKE","description":"Reaction type (default: LIKE)","type":"string","enum":["LIKE","LOVE","CELEBRATE","SUPPORT","FUNNY","INSIGHTFUL"]},"companyId":{"description":"Act as a company page. Pass the numeric company ID from listCompanyPages. Requires admin access.","type":"string"},"campaignSlug":{"description":"Campaign identifier for deduplication. Dedup by postUrl automatically.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"actionSlug":{"deprecated":true,"description":"Deprecated. Use campaignSlug only.","type":"string","pattern":"^[a-zA-Z0-9_-]+$"}},"required":["postUrl"]}}}},"responses":{"200":{"description":"Post liked successfully","content":{"application/json":{"example":{"success":true,"resourceKey":"urn:li:fsd_reaction:(urn:li:fsd_profile:ACoAACu_x48BiQInPmqFR0eD-Ycao_BxynDwWgs,urn:li:activity:7399026485694537728,0)","creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"resourceKey":{"description":"Resource key of the created reaction","type":"string"},"duplicate":{"description":"True if this action was already executed for the given campaignSlug + target.","type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin":{"get":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"getProfile","x-speakeasy-name-override":"get","summary":"Get authenticated user's LinkedIn profile","description":"Returns the authenticated user's LinkedIn profile as it is currently stored: identity, headline, profile URL, connection count, location, and verification status. Reads storage only, so it makes no LinkedIn API call and consumes no credits. Enriched fields (about text, positions, education, recent posts, recent comments and reactions) appear only when an earlier call has already written them, so treat every one of them as optional and never assume the record is complete.","tags":["profile"],"security":[{"token":[]}],"responses":{"200":{"description":"Stored LinkedIn profile data","content":{"application/json":{"example":{"success":true,"linkedinProfileId":"alexandre-sarfati","linkedinName":"Alexandre Sarfati","linkedinEmail":"alexandre@example.com","profileUrn":"urn:li:fsd_profile:ACoAACu_x48BiQInPmqFR0eD-Ycao_BxynDwWgs","headline":"Building cool stuff","profilePic":null,"profileUrl":"https://www.linkedin.com/in/alexandre-sarfati","positions":[{"companyName":"PIMMS","title":null,"companyUrl":"https://www.linkedin.com/company/getpimms/","companyLogo":"https://media.licdn.com/dms/image/v2/example/company-logo_200_200/0/example","startDate":{"month":3,"year":2025},"endDate":null,"isCurrent":true}],"educations":[{"schoolName":"Sciences Po","degreeName":null,"fieldOfStudy":null,"schoolUrl":"https://www.linkedin.com/school/sciences-po/","schoolLogo":"https://media.licdn.com/dms/image/v2/example/company-logo_200_200/0/example","startDate":null,"endDate":null}],"connectionsCount":3377,"location":{"countryCode":"fr","postalCode":"75001"},"isVerified":true,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"linkedinProfileId":{"nullable":true,"description":"LinkedIn vanity name (e.g., 'alexandre-sarfati')","type":"string"},"linkedinName":{"nullable":true,"description":"Full name from LinkedIn","type":"string"},"linkedinEmail":{"nullable":true,"description":"Email from LinkedIn profile","type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN","type":"string"},"headline":{"nullable":true,"description":"LinkedIn headline","type":"string"},"profilePic":{"nullable":true,"description":"Profile picture URL","type":"string"},"profileUrl":{"nullable":true,"description":"Full LinkedIn profile URL","type":"string"},"summary":{"description":"About section text. Present only when an earlier enrichment stored it; no current call populates it, so treat it as optional.","nullable":true,"type":"string"},"positions":{"description":"Work positions. Present only when an earlier enrichment stored them; no current call populates them, so treat them as optional.","type":"array","items":{"type":"object","properties":{"companyName":{"nullable":true,"type":"string"},"title":{"nullable":true,"type":"string"},"description":{"description":"Position description / responsibilities text (always fetched on visit_profile; may be null if LinkedIn has none)","nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"companyLogo":{"nullable":true,"type":"string"},"companyDescription":{"description":"Short description of the company (always fetched on visit_profile; may be null)","nullable":true,"type":"string"},"startDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false},"isCurrent":{"type":"boolean"}},"required":["companyName","title","companyUrl","companyLogo","startDate","endDate","isCurrent"],"additionalProperties":false}},"educations":{"description":"Education entries. Present only when an earlier enrichment stored them; no current call populates them, so treat them as optional.","type":"array","items":{"type":"object","properties":{"schoolName":{"nullable":true,"type":"string"},"degreeName":{"nullable":true,"type":"string"},"fieldOfStudy":{"nullable":true,"type":"string"},"schoolUrl":{"nullable":true,"type":"string"},"schoolLogo":{"nullable":true,"type":"string"},"startDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"month":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["month","year"],"additionalProperties":false}},"required":["schoolName","degreeName","fieldOfStudy","schoolUrl","schoolLogo","startDate","endDate"],"additionalProperties":false}},"connectionsCount":{"nullable":true,"description":"Total LinkedIn connections","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"followersCount":{"description":"Total number of followers","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"location":{"nullable":true,"description":"Profile location","type":"object","properties":{"countryCode":{"type":"string"},"postalCode":{"type":"string"}},"required":["countryCode"],"additionalProperties":false},"isVerified":{"nullable":true,"description":"LinkedIn verification status","type":"boolean"},"lastPosts":{"description":"Last 5 posts (populated when posts have been fetched via /me/linkedin/posts)","type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"type":{"type":"string","enum":["activity","ugcPost","share"],"description":"LinkedIn post type: 'ugcPost' = standard post, 'share' = native share/repost, 'activity' = legacy format."},"isRepost":{"description":"True when the post is a repost/reshare of another post. Absent for original posts.","type":"boolean"},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"authorName":{"description":"Display name of the post's author.","type":"string"},"authorProfileUrl":{"description":"Author's profile URL.","type":"string"},"authorPublicIdentifier":{"description":"Author's vanity slug, when they have one.","nullable":true,"type":"string"},"authorProfileUrn":{"description":"Author's profile URN.","nullable":true,"type":"string"},"authorHeadline":{"description":"Author's headline as shown on the post.","type":"string"},"authorImageUrl":{"description":"Author's avatar URL.","type":"string"},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type"],"additionalProperties":false}},"lastComments":{"description":"Last 20 comments by the user (populated after /me/linkedin/activity?tabType=COMMENTS)","type":"array","items":{}},"lastReactions":{"description":"Last reactions by the user (populated after /me/linkedin/activity?tabType=REACTIONS)","type":"array","items":{}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","linkedinProfileId","linkedinName","linkedinEmail","profileUrn","headline","profilePic","profileUrl","connectionsCount","location","isVerified","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/accounts":{"get":{"x-bereach":{"agents":["orchestrator"]},"operationId":"listAccounts","x-speakeasy-name-override":"listAccounts","summary":"List all LinkedIn accounts for the authenticated user","description":"Returns all LinkedIn accounts connected by the user. Each account has credentials and profile info. The `isCurrent` flag indicates which account the current API token is bound to.","tags":["profile"],"security":[{"token":[]}],"responses":{"200":{"description":"List of LinkedIn accounts","content":{"application/json":{"example":{"success":true,"accounts":[{"id":"clxyz1234","label":"Personal","isDefault":true,"isCurrent":true,"linkedinProfileId":"john-doe","linkedinName":"John Doe","linkedinEmail":"john@example.com","profileUrl":"https://www.linkedin.com/in/john-doe","headline":"CEO at Acme Inc.","profilePic":null,"profileUrn":"urn:li:fsd_profile:ACoAAA...","isActive":true,"isValid":true,"createdAt":"2026-01-15T10:00:00.000Z","updatedAt":"2026-03-10T08:00:00.000Z"}],"total":1},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"nullable":true,"type":"string"},"isDefault":{"type":"boolean"},"isCurrent":{"type":"boolean","description":"Whether this account is the one used by the current API token."},"linkedinProfileId":{"nullable":true,"type":"string"},"linkedinName":{"nullable":true,"type":"string"},"linkedinEmail":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePic":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"},"isActive":{"type":"boolean"},"isValid":{"type":"boolean"},"accountPlan":{"nullable":true,"description":"Account plan tier (e.g. 'free', 'pro', 'team').","type":"string"},"isUnlimited":{"type":"boolean","description":"Whether this account has unlimited credits."},"proxyConfig":{"nullable":true,"description":"Proxy status for this account. Full config is masked; only enabled flag is exposed.","type":"object","properties":{"enabled":{"type":"boolean"}},"required":["enabled"],"additionalProperties":false},"ownerUserId":{"description":"The user this account belongs to. Differs from the caller on a workspace-wide list.","nullable":true,"type":"string"},"owner":{"description":"That user's display name, when known.","nullable":true,"type":"string"},"repeatDisconnect":{"description":"True when this account has lost its session repeatedly, which is the signal to reconnect it rather than retry.","type":"boolean"},"simulateWrites":{"description":"True when writes on this account are simulated rather than sent.","type":"boolean"},"salesNavSeatStatus":{"description":"What the last seat probe concluded. 'unknown' means it has not been established, which is different from established-as-absent.","nullable":true,"type":"string"},"salesNavSeatLastProbedAt":{"description":"When that probe ran, so a stale 'unknown' can be told from a fresh one.","nullable":true,"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","label","isDefault","isCurrent","linkedinProfileId","linkedinName","linkedinEmail","profileUrl","headline","profilePic","profileUrn","isActive","isValid","accountPlan","isUnlimited","proxyConfig","createdAt","updatedAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isOwner":{"type":"boolean","description":"True when the caller owns the workspace, in which case `accounts` spans the whole workspace rather than just their own."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","accounts","total","isOwner","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"patch":{"operationId":"updateAccount","x-speakeasy-name-override":"updateAccount","summary":"Update a LinkedIn account (label, default)","description":"Update account metadata. Setting `isDefault: true` clears the default flag from all other accounts.","tags":["profile"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"accountId":"clxyz1234","label":"Personal","isDefault":true},"schema":{"type":"object","properties":{"accountId":{"type":"string","description":"ID of the LinkedIn account to update."},"label":{"description":"User-facing label (e.g. 'Personal', 'Company SDR').","nullable":true,"type":"string"},"isDefault":{"description":"Set as the default account. Clears default from other accounts.","type":"boolean"},"isActive":{"description":"Enable or disable BeReach access to this LinkedIn session. Disabling pauses all new data collection and actions on this account; the stored session is kept until the account is removed.","type":"boolean"},"proxyConfig":{"description":"Proxy config. Null = disable proxy. Object = enable with mode.","nullable":true,"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["residential"]},"country":{"description":"ISO 3166-1 alpha-2 country code.","type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"city":{"description":"City for geo-targeting.","type":"string","maxLength":200},"rotationHours":{"default":1,"description":"Sticky IP rotation in hours (default 1).","type":"integer","minimum":1,"maximum":720}},"required":["mode","country"]},{"type":"object","properties":{"mode":{"type":"string","enum":["isp"]},"country":{"description":"ISO country code (reference only).","type":"string","minLength":2,"maxLength":2,"pattern":"^[A-Za-z]{2}$"},"staticIp":{"type":"string","pattern":"^(\\d{1,3}\\.){3}\\d{1,3}$","description":"Dedicated ISP IPv4 address from Decodo."},"staticPort":{"type":"integer","minimum":1,"maximum":65535,"description":"Port for the static IP."}},"required":["mode","country","staticIp","staticPort"]}],"type":"object"}},"required":["accountId"]}}}},"responses":{"200":{"description":"Updated account","content":{"application/json":{"example":{"success":true,"account":{"id":"clxyz1234","label":"Personal","isDefault":true,"linkedinProfileId":"john-doe","linkedinName":"John Doe","headline":"CEO at Acme Inc.","profilePic":null,"isValid":true}},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"account":{"type":"object","properties":{"id":{"type":"string"},"label":{"nullable":true,"type":"string"},"isDefault":{"type":"boolean"},"linkedinProfileId":{"nullable":true,"type":"string"},"linkedinName":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePic":{"nullable":true,"type":"string"},"isValid":{"type":"boolean"},"isActive":{"type":"boolean"},"proxyConfig":{"nullable":true,"type":"object","properties":{"city":{"nullable":true,"type":"string"},"mode":{"nullable":true,"type":"string"},"country":{"nullable":true,"type":"string"},"rotationHours":{"nullable":true,"type":"number"}},"required":["city","mode","country","rotationHours"],"additionalProperties":false}},"required":["id","label","isDefault","linkedinProfileId","linkedinName","headline","profilePic","isValid","isActive","proxyConfig"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","account","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/company-pages":{"post":{"x-bereach":{"cost":"read"},"operationId":"listCompanyPages","x-speakeasy-name-override":"list","summary":"List company pages the user administers","description":"Returns LinkedIn company pages where the authenticated user has admin access. Uses the Voyager organization admin API.","tags":["companyPages"],"security":[{"token":[]}],"responses":{"200":{"description":"List of managed company pages","content":{"application/json":{"example":{"success":true,"pages":[{"id":"12345678","universalName":"my-company","name":"My Company","url":"https://www.linkedin.com/company/my-company/","logoUrl":null,"followerCount":1500,"industry":"Technology, Information and Internet","employeeCount":25,"adminRole":"ADMINISTRATOR"}],"total":1,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"pages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"LinkedIn numeric company ID."},"universalName":{"type":"string","description":"Company URL slug (e.g. 'openai')."},"name":{"type":"string"},"url":{"type":"string"},"logoUrl":{"nullable":true,"type":"string"},"followerCount":{"nullable":true,"type":"number"},"industry":{"nullable":true,"type":"string"},"employeeCount":{"nullable":true,"type":"number"},"adminRole":{"nullable":true,"description":"Admin role (e.g. 'ADMINISTRATOR', 'CONTENT_ADMIN'). Null if role is unknown.","type":"string"}},"required":["id","universalName","name","url","logoUrl","followerCount","industry","employeeCount","adminRole"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","pages","total","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/company-pages/posts":{"post":{"x-bereach":{"cost":"read"},"operationId":"companyPagePosts","x-speakeasy-name-override":"posts","summary":"Get recent posts from a company page","description":"Fetch the most recent posts from a LinkedIn company page feed. Requires admin access to the company page.","tags":["companyPages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"universalName":"my-company","count":10,"start":0},"schema":{"type":"object","properties":{"universalName":{"type":"string","description":"Company URL slug (e.g. 'openai'). Same value as returned by listCompanyPages."},"count":{"description":"Number of posts to return (max 50).","default":10,"type":"integer","minimum":1,"maximum":50},"start":{"description":"Pagination offset.","default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["universalName"]}}}},"responses":{"200":{"description":"Company page posts","content":{"application/json":{"example":{"success":true,"posts":[{"activityUrn":"urn:li:activity:7123456789","postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:7123456789/","text":"Excited to announce our new product launch!","publishedAt":null,"numLikes":42,"numComments":5}],"total":15,"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"posts":{"type":"array","items":{"type":"object","properties":{"activityUrn":{"type":"string","description":"LinkedIn activity URN for this post."},"postUrl":{"type":"string","description":"Direct URL to the post on LinkedIn."},"text":{"nullable":true,"description":"Post text content (null if media-only).","type":"string"},"publishedAt":{"nullable":true,"description":"Unix timestamp in milliseconds (null if unavailable).","type":"number"},"numLikes":{"nullable":true,"description":"Number of likes/reactions.","type":"number"},"numComments":{"nullable":true,"description":"Number of comments.","type":"number"}},"required":["activityUrn","postUrl","text","publishedAt","numLikes","numComments"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total number of posts available."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","posts","total","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/company-pages/permissions":{"post":{"x-bereach":{"cost":"read"},"operationId":"companyPagePermissions","x-speakeasy-name-override":"getPermissions","summary":"Get admin permissions for a company page","description":"Returns the authenticated user's admin permissions on a given LinkedIn company page. Use this to check what actions (post, comment, like, message, analytics) are available before calling write endpoints.","tags":["companyPages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"universalName":"my-company"},"schema":{"type":"object","properties":{"universalName":{"type":"string","description":"Company URL slug (e.g. 'openai'). Same value as returned by listCompanyPages."}},"required":["universalName"]}}}},"responses":{"200":{"description":"Company page admin permissions","content":{"application/json":{"example":{"success":true,"universalName":"my-company","permissions":{"role":"SUPER_ADMINISTRATOR","canCreateOrganicShare":true,"canCreateComment":true,"canCreateReaction":true,"canDeleteShare":true,"canPinShare":true,"canSendMessages":true,"canReadMessages":true,"canReadAdminDashboard":true,"canReadOrganizationUpdateAnalytics":true,"canReadOrganizationVisitorAnalytics":true,"canReadOrganizationFollowerAnalytics":true,"canReadOrganizationSearchAppearanceAnalytics":true,"canUpdateOrganizationProfile":true,"canEditAdministrators":true,"canDeactivateOrganization":true,"canEditEvents":true,"canReadEvents":true,"canSponsorShare":true,"canManageCareerPages":true,"canManageMessagingAccess":true,"canNotifyEmployees":true,"canExportLeads":true},"creditsUsed":1,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"universalName":{"type":"string"},"permissions":{"type":"object","properties":{"role":{"nullable":true,"description":"Admin role (e.g. 'SUPER_ADMINISTRATOR', 'ADMINISTRATOR', 'CONTENT_ADMIN').","type":"string"},"canCreateOrganicShare":{"type":"boolean","description":"Can post as the company page."},"canCreateComment":{"type":"boolean","description":"Can comment as the company page."},"canCreateReaction":{"type":"boolean","description":"Can like/react as the company page."},"canDeleteShare":{"type":"boolean","description":"Can delete company page posts."},"canPinShare":{"type":"boolean","description":"Can pin posts on the company page."},"canSendMessages":{"type":"boolean","description":"Can send messages from the company page inbox."},"canReadMessages":{"type":"boolean","description":"Can read the company page inbox."},"canReadAdminDashboard":{"type":"boolean","description":"Can access the admin analytics dashboard."},"canReadOrganizationUpdateAnalytics":{"type":"boolean","description":"Can view post/update analytics."},"canReadOrganizationVisitorAnalytics":{"type":"boolean","description":"Can view visitor analytics."},"canReadOrganizationFollowerAnalytics":{"type":"boolean","description":"Can view follower analytics."},"canReadOrganizationSearchAppearanceAnalytics":{"type":"boolean","description":"Can view search appearance analytics."},"canUpdateOrganizationProfile":{"type":"boolean","description":"Can edit the company page profile."},"canEditAdministrators":{"type":"boolean","description":"Can add/remove page admins."},"canDeactivateOrganization":{"type":"boolean","description":"Can deactivate the company page."},"canEditEvents":{"type":"boolean","description":"Can create/edit company events."},"canReadEvents":{"type":"boolean","description":"Can view company events."},"canSponsorShare":{"type":"boolean","description":"Can sponsor/boost posts."},"canManageCareerPages":{"type":"boolean","description":"Can manage the career page section."},"canManageMessagingAccess":{"type":"boolean","description":"Can manage messaging settings."},"canNotifyEmployees":{"type":"boolean","description":"Can notify employees about posts."},"canExportLeads":{"type":"boolean","description":"Can export lead-gen form leads."}},"required":["role","canCreateOrganicShare","canCreateComment","canCreateReaction","canDeleteShare","canPinShare","canSendMessages","canReadMessages","canReadAdminDashboard","canReadOrganizationUpdateAnalytics","canReadOrganizationVisitorAnalytics","canReadOrganizationFollowerAnalytics","canReadOrganizationSearchAppearanceAnalytics","canUpdateOrganizationProfile","canEditAdministrators","canDeactivateOrganization","canEditEvents","canReadEvents","canSponsorShare","canManageCareerPages","canManageMessagingAccess","canNotifyEmployees","canExportLeads"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","universalName","permissions","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/company-pages/analytics":{"post":{"x-bereach":{"cost":"read"},"operationId":"companyPageAnalytics","x-speakeasy-name-override":"getAnalytics","summary":"Get company page overview analytics","description":"Returns overview analytics for a company page including visitor count, employee count, founding date, headquarters, description, and more. Requires `companyId` (numeric string, e.g. \"111652438\") in the request body.","tags":["companyPages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"companyId":"111652438"},"schema":{"type":"object","properties":{"companyId":{"type":"string","description":"Company page ID (numeric, e.g. '111652438')"}},"required":["companyId"]}}}},"responses":{"200":{"description":"Company page overview analytics","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"analytics":{"type":"object","properties":{"name":{"type":"string"},"universalName":{"type":"string"},"followerCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"employeeCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visitorsInPastMonthCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isActive":{"type":"boolean"},"foundedOn":{"nullable":true,"type":"object","properties":{"year":{"type":"number"},"month":{"type":"number"},"day":{"type":"number"}},"required":["year"],"additionalProperties":false},"headquarter":{"nullable":true,"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"line1":{"type":"string"},"postalCode":{"type":"string"}},"required":["city","country"],"additionalProperties":false},"description":{"nullable":true,"type":"string"},"tagline":{"nullable":true,"type":"string"},"websiteUrl":{"nullable":true,"type":"string"},"organizationType":{"nullable":true,"type":"string"},"specialities":{"type":"array","items":{"type":"string"}},"industryUrns":{"type":"array","items":{"type":"string"}}},"required":["name","universalName","followerCount","employeeCount","visitorsInPastMonthCount","isActive","foundedOn","headquarter","description","tagline","websiteUrl","organizationType","specialities","industryUrns"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","analytics","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/followers":{"post":{"x-bereach":{"agents":["orchestrator","lead_gen"]},"operationId":"getFollowers","x-speakeasy-name-override":"getFollowers","summary":"Get authenticated user's LinkedIn followers","description":"Returns a paginated list of the authenticated user's LinkedIn followers. Supports pagination. Requires valid LinkedIn credentials.","tags":["profile"],"security":[{"token":[]}],"requestBody":{"required":false,"content":{"application/json":{"example":{"start":0,"count":10},"schema":{"type":"object","properties":{"start":{"description":"Pagination offset (default 0).","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"Number of followers to fetch per page (default 10, max 50).","type":"integer","minimum":1,"maximum":50}}}}}},"responses":{"200":{"description":"Paginated list of followers","content":{"application/json":{"example":{"success":true,"followers":[{"name":"Alex Doe","headline":"Growth Lead @ Example","profileUrl":"https://www.linkedin.com/in/alex-doe","profilePicture":"https://media.licdn.com/dms/image/v2/D4E03AQG1/profile-displayphoto-shrink_400_400/profile.jpg","followerCount":1250,"following":false,"publicIdentifier":"alex-doe","profileUrn":"urn:li:fsd_profile:ACoAAD5544332211"}],"count":1,"totalFollowers":3718,"start":0,"hasMore":true,"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"followers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"headline":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"followerCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"following":{"type":"boolean","description":"Whether you follow this person back"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...) when available","type":"string"},"publicIdentifier":{"nullable":true,"description":"Vanity slug from profile URL (e.g. john-doe) when not URN-based","type":"string"}},"required":["name","headline","profileUrl","profilePicture","followerCount","following","profileUrn","publicIdentifier"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalFollowers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reported by LinkedIn (capped at ~1000)"},"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","followers","count","totalFollowers","start","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/limits":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"getLimits","x-speakeasy-name-override":"getLimits","summary":"Get current LinkedIn quota status","description":"Returns the current quota status for all LinkedIn action types. Includes current usage, effective quotas (with workspace multiplier applied), remaining capacity, minimum delay between actions in seconds, and next reset times.","tags":["profile"],"security":[{"token":[]}],"responses":{"200":{"description":"Rate limit status for all action types","content":{"application/json":{"example":{"success":true,"multiplier":1,"limits":{"connection_request":{"daily":{"current":5,"limit":50,"remaining":45},"weekly":null,"minIntervalSeconds":5,"nextResetDaily":"2026-02-24T00:00:00.000Z","nextResetWeekly":null},"message":{"daily":{"current":3,"limit":70,"remaining":67},"weekly":{"current":10,"limit":280,"remaining":270},"minIntervalSeconds":5,"nextResetDaily":"2026-02-24T00:00:00.000Z","nextResetWeekly":"2026-03-02T00:00:00.000Z"},"profile_visit":{"daily":{"current":0,"limit":300,"remaining":300},"weekly":{"current":0,"limit":1500,"remaining":1500},"minIntervalSeconds":2,"nextResetDaily":"2026-02-24T00:00:00.000Z","nextResetWeekly":"2026-03-02T00:00:00.000Z"},"scraping":{"daily":{"current":42,"limit":100,"remaining":58},"weekly":null,"minIntervalSeconds":2,"nextResetDaily":"2026-02-24T00:00:00.000Z","nextResetWeekly":null}},"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"multiplier":{"type":"number","description":"Workspace limit multiplier applied to all base limits (default 1.0)"},"limits":{"type":"object","properties":{"connection_request":{"type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for sending LinkedIn connection requests"},"message":{"type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for sending DMs"},"profile_visit":{"type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for visiting LinkedIn profiles and company pages"},"scraping":{"type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for data collection: search, collecting posts/likes/comments, fetching followers, listing chats"},"post":{"description":"Limits for publishing LinkedIn posts","type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"accept_invitation":{"description":"Limits for accepting connection invitations","type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"comment_post":{"description":"Limits for commenting on posts","type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"reply_comment":{"description":"Limits for replying to comments","type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"profile":{"description":"Limits for structured profile reads.","type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"engagement":{"description":"Limits for likes and reactions.","type":"object","properties":{"daily":{"nullable":true,"description":"Daily usage counter (resets at midnight UTC). Null if not configured for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Weekly usage counter (resets Monday 00:00 UTC). Null if no weekly cap for this action type.","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of actions used in this window"},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Maximum allowed actions in this window (with multiplier applied)"},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Actions remaining before hitting the limit"}},"required":["current","limit","remaining"],"additionalProperties":false},"minIntervalSeconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Minimum delay in seconds required between two consecutive actions of this type"},"nextResetDaily":{"nullable":true,"description":"ISO 8601 timestamp of the next daily counter reset. Null if not configured.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"nextResetWeekly":{"nullable":true,"description":"ISO 8601 timestamp of the next weekly counter reset. Null if no weekly cap.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false}},"required":["connection_request","message","profile_visit","scraping"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","multiplier","limits","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/connection-status":{"get":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"getConnectionStatus","x-speakeasy-name-override":"getConnectionStatus","summary":"Get the state of outgoing connection requests","description":"Reports what is happening with connection requests: whether invitations are going out, who is next and roughly when, how many people are still waiting, how many to expect over the next 24 hours, how many sent invitations are still unanswered, and when nothing is going out, what is stopping it and whether it clears on its own. Reported per connected LinkedIn account, since each sends independently. Read-only: it queues nobody and sends nothing.","tags":["profile"],"security":[{"token":[]}],"responses":{"200":{"description":"Current state of the connection-request lane","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"accounts":{"type":"array","items":{"type":"object","properties":{"linkedinCredentialsId":{"type":"string","description":"The LinkedIn account this describes"},"accountLabel":{"type":"string","description":"Human-readable name of the LinkedIn account"},"state":{"type":"string","enum":["nothing_queued","sending","spacing","blocked"],"description":"What the account is doing: nothing_queued means nobody is waiting, sending means invitations are going out, spacing means it is between two invitations, blocked means nothing is going out."},"upcoming":{"type":"array","items":{"type":"object","properties":{"contactId":{"type":"string","description":"Identifier of the person waiting"},"name":{"nullable":true,"description":"The person's name, when known","type":"string"},"avatarUrl":{"nullable":true,"description":"Their profile picture, for rendering a row. Never something to say.","type":"string"},"headline":{"nullable":true,"description":"Their headline, when known","type":"string"},"linkedinUrl":{"nullable":true,"description":"Their profile, for linking a row. Never paste it.","type":"string"},"lastActivityAt":{"nullable":true,"description":"When they were last seen doing something on LinkedIn, or null when nothing we hold says. The order is sorted on this within one ask.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"thinProfile":{"type":"boolean","description":"True when we looked at the profile and found nothing recent to read: no post, comment, reaction, about text or education. A flag to point at, never a reason the order changed. False when we have not looked."},"why":{"type":"object","properties":{"status":{"type":"string","enum":["next","waiting","blocked","not-on-list"],"description":"next is first in line, not sent; waiting names the place; blocked carries the account's own sentence."},"detail":{"type":"string","description":"For blocked, the account's own sentence, safe to show as written. Otherwise a plain phrase about the wait."},"clearsItself":{"nullable":true,"description":"Only while blocked: whether waiting is enough.","type":"boolean"},"fixUrl":{"nullable":true,"description":"Only while blocked and a person has to act: where to send them.","type":"string"}},"required":["status","detail","clearsItself","fixUrl"],"additionalProperties":false,"description":"Why this person has not gone out yet, as the sender itself answers it. A block on the account outranks the place in line."},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Their place in line, counting from 1. A fact about the order, not a promise of a time."},"etaDays":{"nullable":true,"description":"Rough days until their invitation goes out, estimated from how fast this account has actually been sending. Null when nothing is going out, or when the account has no sending history to estimate from.","type":"number"}},"required":["contactId","name","avatarUrl","headline","linkedinUrl","lastActivityAt","thinProfile","why","position","etaDays"],"additionalProperties":false},"description":"The people at the front of the line, nearest first: five unless the caller asked for more (up to twenty-five). waitingTotal says how many are in line altogether."},"nextSendAt":{"nullable":true,"description":"When the next invitation can go out, when that instant is actually known. Null when nothing is holding the account back, since there is then no specific moment to name.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"blocked":{"nullable":true,"description":"Set only while something is stopping this account. Never set for the ordinary spacing between two invitations, which is not a fault: that is state 'spacing'. If this is null, nothing is wrong with the account.","type":"object","properties":{"kind":{"type":"string","enum":["challenge","session_dead","no_credit","invite_cap","rate_limited"],"description":"Why nothing is going out. The ordinary spacing between two invitations is state 'spacing', never a block."},"message":{"type":"string","description":"A plain sentence explaining it, suitable to show as written"},"resumesAt":{"nullable":true,"description":"When it lifts. Null when it needs a person to act rather than time to pass.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"clearsItself":{"type":"boolean","description":"Whether waiting is enough, or somebody has to do something"},"fixUrl":{"nullable":true,"description":"Where to send the account owner to fix it, when a person has to act. Null for the kinds that clear on their own.","type":"string"}},"required":["kind","message","resumesAt","clearsItself","fixUrl"],"additionalProperties":false},"capProbe":{"nullable":true,"description":"Set only while LinkedIn's own invitation ceiling is what stopped this account","type":"object","properties":{"nextProbeAt":{"nullable":true,"description":"When LinkedIn is asked again","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"rung":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How far the wait between checks has widened"},"finalRung":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The widest it gets. Checks continue at that spacing until sending is allowed again."}},"required":["nextProbeAt","rung","finalRung"],"additionalProperties":false},"waitingTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Everyone still to be invited from this account, counted once per person"},"pausedWaiting":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People queued on a paused list. They are NOT going out and are not part of waitingTotal, but they are not finished either."},"oldestWaitingHours":{"nullable":true,"description":"How long the person waiting longest has been waiting","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"awaitingResponse":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Invitations sent from this account that nobody has answered yet"},"sentLast24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Invitations sent in the last 24 hours"},"acceptedLast24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Invitations accepted in the last 24 hours"},"sendsPerDay":{"type":"number","description":"How many a day this account has actually been sending lately"},"expectedNext24h":{"nullable":true,"description":"How many to expect over the next 24 hours. Null when no honest estimate exists: something is stopping the account, or it has no sending history yet. Ordinary spacing between invitations does NOT suppress it. Never report null as zero.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reason","count"],"additionalProperties":false},"description":"Why people are set aside right now, and how many for each reason. Up to eight reasons, commonest first."}},"required":["linkedinCredentialsId","accountLabel","state","upcoming","nextSendAt","blocked","capProbe","waitingTotal","pausedWaiting","oldestWaitingHours","awaitingResponse","sentLast24h","acceptedLast24h","sendsPerDay","expectedNext24h","skipped"],"additionalProperties":false},"description":"One entry per connected LinkedIn account. Accounts send independently and in parallel, each with its own pacing and its own limits."},"totals":{"nullable":true,"description":"Everything summed. Null when no account is connected.","type":"object","properties":{"waitingTotal":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pausedWaiting":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"awaitingResponse":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sentLast24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"acceptedLast24h":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expectedNext24h":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expectedIsPartial":{"type":"boolean","description":"True when some accounts could not be estimated, so the expected figure is a floor rather than a total."},"oldestWaitingHours":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accountsSending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accountsBlocked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accountsUnreadable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"next":{"nullable":true,"description":"Who goes next overall, named only when exactly one account is sending. With several sending at once there is no single next person.","type":"object","properties":{"contactId":{"type":"string","description":"Identifier of the person waiting"},"name":{"nullable":true,"description":"The person's name, when known","type":"string"},"avatarUrl":{"nullable":true,"description":"Their profile picture, for rendering a row. Never something to say.","type":"string"},"headline":{"nullable":true,"description":"Their headline, when known","type":"string"},"linkedinUrl":{"nullable":true,"description":"Their profile, for linking a row. Never paste it.","type":"string"},"lastActivityAt":{"nullable":true,"description":"When they were last seen doing something on LinkedIn, or null when nothing we hold says. The order is sorted on this within one ask.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"thinProfile":{"type":"boolean","description":"True when we looked at the profile and found nothing recent to read: no post, comment, reaction, about text or education. A flag to point at, never a reason the order changed. False when we have not looked."},"why":{"type":"object","properties":{"status":{"type":"string","enum":["next","waiting","blocked","not-on-list"],"description":"next is first in line, not sent; waiting names the place; blocked carries the account's own sentence."},"detail":{"type":"string","description":"For blocked, the account's own sentence, safe to show as written. Otherwise a plain phrase about the wait."},"clearsItself":{"nullable":true,"description":"Only while blocked: whether waiting is enough.","type":"boolean"},"fixUrl":{"nullable":true,"description":"Only while blocked and a person has to act: where to send them.","type":"string"}},"required":["status","detail","clearsItself","fixUrl"],"additionalProperties":false,"description":"Why this person has not gone out yet, as the sender itself answers it. A block on the account outranks the place in line."},"position":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Their place in line, counting from 1. A fact about the order, not a promise of a time."},"etaDays":{"nullable":true,"description":"Rough days until their invitation goes out, estimated from how fast this account has actually been sending. Null when nothing is going out, or when the account has no sending history to estimate from.","type":"number"},"accountLabel":{"type":"string"}},"required":["contactId","name","avatarUrl","headline","linkedinUrl","lastActivityAt","thinProfile","why","position","etaDays","accountLabel"],"additionalProperties":false}},"required":["waitingTotal","pausedWaiting","awaitingResponse","sentLast24h","acceptedLast24h","expectedNext24h","expectedIsPartial","oldestWaitingHours","accountsSending","accountsBlocked","accountsUnreadable","next"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","accounts","totals","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/credits":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"getCredits","x-speakeasy-name-override":"getCredits","summary":"Get current BeReach credit balance","description":"Returns the current credit balance for the workspace. Includes credits used, total limit, remaining credits, usage percentage, and whether credits are unlimited. When isUnlimited is true, limit and remaining are null — skip credit budgeting.","tags":["profile"],"security":[{"token":[]}],"responses":{"200":{"description":"Credit balance for the workspace","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"credits":{"type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of credits used in the current billing period"},"limit":{"nullable":true,"description":"Maximum credits available for the workspace, or null if unlimited","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"remaining":{"nullable":true,"description":"Credits remaining before hitting the limit, or null if unlimited","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"percentage":{"type":"number","description":"Percentage of credits used (0-100, capped at 100, rounded to 2 decimal places). 0 when unlimited"},"isUnlimited":{"type":"boolean","description":"Whether the workspace has unlimited credits (Pro plan). When true, limit and remaining are null"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","credits","creditsUsed","retryAfter"],"additionalProperties":false},"examples":{"free":{"summary":"Free plan (limited credits)","value":{"success":true,"credits":{"current":142,"limit":600,"remaining":458,"percentage":23.67,"isUnlimited":false},"creditsUsed":0,"retryAfter":0}},"unlimited":{"summary":"Pro plan (unlimited credits)","value":{"success":true,"credits":{"current":87,"limit":null,"remaining":null,"percentage":0,"isUnlimited":true},"creditsUsed":0,"retryAfter":0}}}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin":{"post":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"inboxList","x-speakeasy-name-override":"listInbox","summary":"List LinkedIn inbox conversations","description":"List inbox conversations for the authenticated user. Returns conversations with participants, last message, and read status. Use `count` to control the number of conversations returned (1-40, default 20). Paginate via nextCursor.","tags":["chat"],"security":[{"token":[]}],"requestBody":{"required":false,"content":{"application/json":{"example":{"count":10},"schema":{"type":"object","properties":{"nextCursor":{"description":"Pagination cursor from a previous response","type":"string"},"count":{"description":"Number of conversations to return (default 20, max 25)","type":"integer","minimum":1,"maximum":25}}}}}},"responses":{"200":{"description":"Inbox conversations","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"conversations":{"type":"array","items":{"type":"object","properties":{"conversationUrn":{"type":"string"},"conversationUrl":{"type":"string"},"lastActivityAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"read":{"type":"boolean"},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"groupChat":{"type":"boolean"},"participants":{"type":"array","items":{"type":"object","properties":{"profileUrn":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"isPremium":{"type":"boolean"},"isVerified":{"description":"Identity-verified profile.","type":"boolean"},"memberBadgeType":{"description":"Niche-authority badge, when LinkedIn attaches one.","nullable":true,"type":"string"},"participantHostUrn":{"description":"Raw identity urn. CAN BE A COMPANY rather than a person, which is what a page-admin reply looks like from this side.","nullable":true,"type":"string"}},"required":["profileUrn","firstName","lastName","profileUrl","headline","profilePicture","publicIdentifier"],"additionalProperties":false}},"lastMessage":{"nullable":true,"type":"object","properties":{"text":{"nullable":true,"type":"string"},"deliveredAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"senderProfileUrn":{"type":"string"}},"required":["text","deliveredAt","senderProfileUrn"],"additionalProperties":false},"lastReadAt":{"description":"Epoch ms this account last read the thread.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notificationStatus":{"description":"Whether the thread is active, muted or snoozed for this account.","nullable":true,"type":"string"}},"required":["conversationUrn","conversationUrl","lastActivityAt","createdAt","read","unreadCount","groupChat","participants","lastMessage"],"additionalProperties":false}},"nextCursor":{"nullable":true,"description":"Cursor for fetching next page","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","conversations","nextCursor","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/search":{"get":{"x-bereach":{"agents":["outreach"]},"operationId":"inboxSearch","x-speakeasy-name-override":"searchConversations","summary":"Search LinkedIn conversations","description":"Search inbox conversations by keyword via query parameters. Returns matching conversations with participants and last message. Example: GET /chats/linkedin/search?keywords=project","tags":["chat"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"keywords","schema":{"type":"string","minLength":1,"description":"Search keywords"},"required":true,"description":"Search keywords"},{"in":"query","name":"nextCursor","schema":{"description":"Pagination cursor from a previous response","type":"string"},"description":"Pagination cursor from a previous response"}],"responses":{"200":{"description":"Matching conversations","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"conversations":{"type":"array","items":{"type":"object","properties":{"conversationUrn":{"type":"string"},"conversationUrl":{"type":"string"},"lastActivityAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"createdAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"read":{"type":"boolean"},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"groupChat":{"type":"boolean"},"participants":{"type":"array","items":{"type":"object","properties":{"profileUrn":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"isPremium":{"type":"boolean"},"isVerified":{"description":"Identity-verified profile.","type":"boolean"},"memberBadgeType":{"description":"Niche-authority badge, when LinkedIn attaches one.","nullable":true,"type":"string"},"participantHostUrn":{"description":"Raw identity urn. CAN BE A COMPANY rather than a person, which is what a page-admin reply looks like from this side.","nullable":true,"type":"string"}},"required":["profileUrn","firstName","lastName","profileUrl","headline","profilePicture","publicIdentifier"],"additionalProperties":false}},"lastMessage":{"nullable":true,"type":"object","properties":{"text":{"nullable":true,"type":"string"},"deliveredAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"senderProfileUrn":{"type":"string"}},"required":["text","deliveredAt","senderProfileUrn"],"additionalProperties":false},"lastReadAt":{"description":"Epoch ms this account last read the thread.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notificationStatus":{"description":"Whether the thread is active, muted or snoozed for this account.","nullable":true,"type":"string"}},"required":["conversationUrn","conversationUrl","lastActivityAt","createdAt","read","unreadCount","groupChat","participants","lastMessage"],"additionalProperties":false}},"nextCursor":{"nullable":true,"description":"Cursor for fetching next page","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","conversations","nextCursor","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/find":{"post":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"findConversation","x-speakeasy-name-override":"findConversation","summary":"Find a conversation with a specific person","description":"Find a conversation with a specific person by profile URL or URN. Optionally returns messages from the found conversation (`includeMessages: true`). When following up on a previously listed conversation, extract the profile URL or URN from the earlier result and pass it here — do NOT ask the user to re-type the name.","tags":["chat"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://linkedin.com/in/marie-sandre","includeMessages":true},"schema":{"type":"object","properties":{"profile":{"type":"string","minLength":1,"description":"Accepts full profile URLs, vanity names (e.g. marie-sandre), or profile URNs."},"includeMessages":{"description":"If true, also return the conversation's recent messages.","type":"boolean"}},"required":["profile"]}}}},"responses":{"200":{"description":"Conversation found (or not)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"found":{"type":"boolean"},"conversation":{"nullable":true,"description":"Lightweight conversation reference (O(1) lookup returns URN only, not full details).","type":"object","properties":{"conversationUrn":{"type":"string"}},"required":["conversationUrn"],"additionalProperties":false},"messages":{"nullable":true,"type":"array","items":{"type":"object","properties":{"messageUrn":{"type":"string"},"text":{"nullable":true,"type":"string"},"deliveredAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"senderProfileUrn":{"type":"string"},"sender":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"}},"required":["firstName","lastName","profileUrl","headline","profilePicture","publicIdentifier","profileUrn"],"additionalProperties":false},"attachments":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["audio","shared_post","replied_message","image","file","unknown"]},"audioUrl":{"type":"string"},"audioDuration":{"type":"number"},"hostUrn":{"type":"string"},"repliedText":{"type":"string"},"repliedSenderName":{"type":"string"},"imageUrl":{"type":"string"},"fileName":{"type":"string"},"fileUrl":{"type":"string"}},"required":["type"],"additionalProperties":false}},"isOutbound":{"type":"boolean","description":"True if the authenticated user sent this message."}},"required":["messageUrn","text","deliveredAt","senderProfileUrn","sender","attachments","isOutbound"],"additionalProperties":false}},"prevCursor":{"description":"deliveredAt timestamp (ms) of the oldest message — pass as 'deliveredAt' to load older messages. Only present when includeMessages is true.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"userProfileUrn":{"description":"The authenticated user's profile URN. Useful for determining message direction.","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","found","conversation","messages","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/messages":{"get":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"inboxMessages","x-speakeasy-name-override":"getMessages","summary":"Read messages from a conversation","description":"Fetch messages from a specific LinkedIn conversation.\n\nPass the full `conversationUrn` as a query parameter, as returned by `/chats/linkedin` or `/chats/linkedin/search`. No parsing required — the server handles extraction internally.\n\nExample: `GET /chats/linkedin/messages?conversationUrn=urn:li:msg_conversation:(urn:li:fsd_profile:ACoAAXXX,2-YWUx...)`","tags":["chat"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"conversationUrn","schema":{"type":"string","minLength":1,"description":"Full conversation URN as returned by /chats/linkedin (e.g. 'urn:li:msg_conversation:(urn:li:fsd_profile:ACoAAXXX,2-YWUx...)')"},"required":true,"description":"Full conversation URN as returned by /chats/linkedin (e.g. 'urn:li:msg_conversation:(urn:li:fsd_profile:ACoAAXXX,2-YWUx...)')"},{"in":"query","name":"deliveredAt","schema":{"description":"Timestamp (ms) of the oldest message from previous page — pass this to load older messages","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"Timestamp (ms) of the oldest message from previous page — pass this to load older messages"}],"responses":{"200":{"description":"Conversation messages","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"messages":{"type":"array","items":{"type":"object","properties":{"messageUrn":{"type":"string"},"text":{"nullable":true,"type":"string"},"deliveredAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"senderProfileUrn":{"type":"string"},"sender":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"}},"required":["firstName","lastName","profileUrl","headline","profilePicture","publicIdentifier","profileUrn"],"additionalProperties":false},"attachments":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["audio","shared_post","replied_message","image","file","unknown"]},"audioUrl":{"type":"string"},"audioDuration":{"type":"number"},"hostUrn":{"type":"string"},"repliedText":{"type":"string"},"repliedSenderName":{"type":"string"},"imageUrl":{"type":"string"},"fileName":{"type":"string"},"fileUrl":{"type":"string"}},"required":["type"],"additionalProperties":false}},"isOutbound":{"type":"boolean","description":"True if the authenticated user sent this message."}},"required":["messageUrn","text","deliveredAt","senderProfileUrn","sender","attachments","isOutbound"],"additionalProperties":false}},"prevCursor":{"nullable":true,"description":"deliveredAt timestamp (ms) of the oldest message — pass as 'deliveredAt' to load older messages. Null when no more messages.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","messages","prevCursor","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/mark-seen":{"post":{"x-bereach":{"cost":"paced-free","agents":["outreach"]},"operationId":"markSeen","x-speakeasy-name-override":"markSeen","summary":"Mark a conversation as read","description":"Mark a LinkedIn conversation as read/seen.","tags":["chat"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"conversationUrn":"urn:li:msg_conversation:(urn:li:fsd_profile:ACoAAXXX,2-YWUx...)"},"schema":{"type":"object","properties":{"conversationUrn":{"type":"string","minLength":1,"description":"Full conversation URN (e.g. 'urn:li:msg_conversation:(urn:li:fsd_profile:ACoAAXXX,2-YWUx...)')"}},"required":["conversationUrn"]}}}},"responses":{"200":{"description":"Conversation marked as read","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/mark-all-read":{"post":{"x-bereach":{"cost":"paced-free","agents":["outreach"]},"operationId":"markAllRead","x-speakeasy-name-override":"markAllRead","summary":"Mark all conversations as read","description":"Mark all LinkedIn inbox conversations as read.","tags":["chat"],"security":[{"token":[]}],"requestBody":{"required":false,"content":{"application/json":{"example":{},"schema":{"type":"object","properties":{}}}}},"responses":{"200":{"description":"All conversations marked as read","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/unread":{"get":{"x-bereach":{"cost":"read","agents":["outreach"]},"operationId":"inboxUnreadCount","x-speakeasy-name-override":"getUnreadCount","summary":"Get unread message count","description":"Get the number of unread LinkedIn messages/conversations.","tags":["chat"],"security":[{"token":[]}],"responses":{"200":{"description":"Unread count","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"unreadCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Number of unread conversations/messages"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","unreadCount","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/chats/linkedin/summary":{"get":{"x-bereach":{"agents":["outreach"]},"operationId":"getConversationSummary","x-speakeasy-name-override":"getConversationSummary","summary":"Get conversation summary for a contact","description":"Retrieve the saved conversation summary for a contact. Returns null if no summary exists or contact not found.","tags":["chat"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"profile","schema":{"type":"string","minLength":1,"description":"LinkedIn profile URL or vanity name of the contact"},"required":true,"description":"LinkedIn profile URL or vanity name of the contact"}],"responses":{"200":{"description":"Summary retrieved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"found":{"type":"boolean","description":"Whether a contact with a saved summary was found"},"contactId":{"description":"Internal contact ID — present only when found is true","type":"string"},"summary":{"nullable":true,"description":"The saved conversation summary text, null if none exists","type":"string"},"summarizedAt":{"description":"ISO timestamp of when the summary was last saved — present only when found is true","nullable":true,"type":"string"},"messageCount":{"description":"Message count at the time of summarization — present only when found is true","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"conversationUpdatedAt":{"description":"Timestamp of last conversation data update — present only when found is true","nullable":true,"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","found","summary","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"put":{"x-bereach":{"agents":["outreach"]},"operationId":"saveConversationSummary","x-speakeasy-name-override":"saveConversationSummary","summary":"Save conversation summary for a contact","description":"Save a conversation summary for a contact. Creates the contact if it doesn't exist (auto-upsert by profile URL).","tags":["chat"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/john-doe","summary":"Discussed partnership opportunities..."},"schema":{"type":"object","properties":{"profile":{"type":"string","minLength":1,"description":"LinkedIn profile URL or vanity name of the contact"},"summary":{"type":"string","minLength":1,"maxLength":10000,"description":"Conversation summary text to save"}},"required":["profile","summary"]}}}},"responses":{"200":{"description":"Summary saved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"contactId":{"type":"string","description":"Internal contact ID (created if not found)"},"summarizedAt":{"type":"string","description":"ISO timestamp of when the summary was saved"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","contactId","summarizedAt","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/campaigns/{campaignSlug}/filter":{"get":{"x-bereach":{"excludeTool":true},"operationId":"filterCampaign","x-speakeasy-name-override":"filter","summary":"Check if campaign actions are completed","description":"Check if all provided actionSlugs are completed for a given campaignSlug. Used by n8n workflows to determine if a flow should be skipped.","tags":["campaigns"],"security":[{"token":[]}],"deprecated":true,"parameters":[{"name":"campaignSlug","in":"path","required":true,"description":"Unique identifier for the automation campaign (e.g., 'lead-magnet-post-12345', 'outreach-webinar-feb')","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"}},{"name":"actionSlugs","in":"query","required":true,"description":"Comma-separated list of action slugs to check (e.g., 'send-mp-john-doe,like-comment-abc123')","schema":{"type":"string"}}],"responses":{"200":{"description":"Filter status with checked slugs","content":{"application/json":{"example":{"filtered":false,"checkedSlugs":[{"actionSlug":"send-mp-john-doe","completed":true},{"actionSlug":"like-comment-abc123","completed":false},{"actionSlug":"reply-to-xyz456","completed":true}],"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"filtered":{"type":"boolean","description":"True if all actionSlugs have been completed for this campaign, meaning the entire flow can be skipped"},"checkedSlugs":{"type":"array","items":{"type":"object","properties":{"actionSlug":{"type":"string"},"completed":{"type":"boolean"}},"required":["actionSlug","completed"],"additionalProperties":false},"description":"Status of each action slug — completed means the action was already executed for this campaign"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["filtered","checkedSlugs","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/campaigns/{campaignSlug}/status":{"post":{"x-bereach":{"agents":["orchestrator"]},"operationId":"campaignStatus","x-speakeasy-name-override":"getStatus","summary":"Query per-profile action status within a campaign","description":"Returns which actions (message, reply, like, visit, connect) have been completed for each profile within a campaign. Replaces the slug-based filter endpoint — query by profile URLs instead of building slug lists.","tags":["campaigns"],"security":[{"token":[]}],"parameters":[{"name":"campaignSlug","in":"path","required":true,"description":"Campaign identifier","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profiles":["https://www.linkedin.com/in/john-doe","https://www.linkedin.com/in/jane-smith"]},"schema":{"type":"object","properties":{"profiles":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string"},"description":"LinkedIn profile URLs or URNs to check status for within this campaign."}},"required":["profiles"]}}}},"responses":{"200":{"description":"Per-profile action completion status","content":{"application/json":{"example":{"success":true,"profiles":[{"profile":"https://www.linkedin.com/in/john-doe","message":true,"reply":true,"like":true,"visit":true,"connect":true},{"profile":"https://www.linkedin.com/in/jane-smith","message":false,"reply":false,"like":false,"visit":false,"connect":false}],"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"profiles":{"type":"array","items":{"type":"object","properties":{"profile":{"type":"string"},"message":{"type":"boolean"},"reply":{"type":"boolean"},"like":{"type":"boolean"},"visit":{"type":"boolean"},"connect":{"type":"boolean"}},"required":["profile","message","reply","like","visit","connect"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","profiles","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/campaigns/{campaignSlug}/sync":{"post":{"operationId":"campaignSync","x-speakeasy-name-override":"sync","summary":"Mark actions as completed without performing them","description":"Manually mark actions as completed for profiles within a campaign. Use when actions were performed outside the API (e.g. manual DMs) and need to be synced.","tags":["campaigns"],"security":[{"token":[]}],"parameters":[{"name":"campaignSlug","in":"path","required":true,"description":"Campaign identifier","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"}}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profiles":[{"profile":"https://www.linkedin.com/in/john-doe","actions":["message","reply"]}]},"schema":{"type":"object","properties":{"profiles":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"profile":{"type":"string","description":"LinkedIn profile URL or URN"},"actions":{"minItems":1,"type":"array","items":{"type":"string","enum":["message","reply","like","visit","connect"]},"description":"Action types to mark as completed"}},"required":["profile","actions"]},"description":"Profiles and actions to mark as completed without performing them on LinkedIn."}},"required":["profiles"]}}}},"responses":{"200":{"description":"Actions marked as completed","content":{"application/json":{"example":{"success":true,"synced":[{"profile":"https://www.linkedin.com/in/john-doe","actions":{"message":true,"reply":true}}],"creditsUsed":0,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"synced":{"type":"array","items":{"type":"object","properties":{"profile":{"type":"string"},"actions":{"type":"object","additionalProperties":{"type":"boolean"},"required":["message","reply","like","visit","connect"]}},"required":["profile","actions"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","synced","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/campaigns/{campaignSlug}/stats":{"get":{"x-bereach":{"agents":["orchestrator"]},"operationId":"campaignStats","x-speakeasy-name-override":"stats","summary":"Get aggregate campaign statistics","description":"Returns per-action counts, unique profile count, and total credits used for a campaign.","tags":["campaigns"],"security":[{"token":[]}],"parameters":[{"name":"campaignSlug","in":"path","required":true,"description":"Campaign identifier","schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"}}],"responses":{"200":{"description":"Aggregate campaign statistics","content":{"application/json":{"example":{"success":true,"stats":{"message":45,"reply":120,"like":130,"visit":200,"connect":5},"totalProfiles":210,"creditsUsed":500,"retryAfter":0},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"stats":{"type":"object","additionalProperties":{"type":"number"},"description":"Per-action-type counts (e.g. message: 45, reply: 120)"},"totalProfiles":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Unique profiles processed in this campaign"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this CAMPAIGN has consumed over its life, not the cost of this call. This endpoint is free. The field is named for the shared envelope and does not mean what it means elsewhere."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. Always 0 here."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","stats","totalProfiles","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/profile":{"post":{"x-bereach":{"cost":"read"},"operationId":"publicProfile","x-speakeasy-name-override":"publicProfile","summary":"Read a public profile","description":"Read a public professional profile anonymously through the proxy and save it as an enriched contact. Runs on public data only, so no connected account is needed and none of an account's action budget is spent. This is the default way to look up or enrich a person.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"profileUrl":{"description":"Full public profile URL. Provide this or slug.","type":"string"},"slug":{"description":"Profile vanity slug. Provide this or profileUrl.","type":"string"},"country":{"description":"ISO alpha-2 country code for the proxy exit.","type":"string"},"save":{"default":true,"description":"When true, the fetched profile is saved to your contacts.","type":"boolean"}}}}}},"responses":{"200":{"description":"Public profile data","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"completeness":{"type":"string","description":"How complete the fetched public profile is."},"saved":{"type":"boolean","description":"Whether the profile was saved to your contacts."},"profile":{"type":"object","additionalProperties":{},"description":"The public profile data."}},"required":["source","completeness","saved","profile"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/search":{"post":{"x-bereach":{"cost":"read","resultShape":"list"},"operationId":"publicFindPeople","x-speakeasy-name-override":"publicFindPeople","summary":"Find people from public data","description":"Search for people through an anonymous public web search; no connected account is needed. Results are public data, never signed-in LinkedIn details (connection degree, who engaged with a post, whether someone is reachable by message). Found profiles are saved as contacts and render as a people list; narrate a one-line count. limit (1-300, default 15) is how many profiles ONE call targets: a specific number sets it, a volume word with no ceiling raises it toward 100-300. Pass every plausible title, seniority, or city as an array on the SAME filter field in ONE call. more:true continues the SAME filters past people already found, on whichever lane answered the first call: the public sweep, or the connected account when one ran. moreAvailable:false after a continuation means that lane is walked out: say so plainly and do not call more:true again. exhaustionNote, when present, says which wall was hit: relay it. duplicates counts people a continuation re-reached and dropped without re-charging; that is normal bookkeeping, never a failure. exhaustion:\"axes-exhausted\" means every angle was tried: suggest a real change, do not call more:true again. exhaustion:\"batch-failed\" is a temporary vendor hiccup. A signal that would show in a headline (years in role, a school, a tool, freelance) belongs in filters.keywords, not a visit-first pass. When they asked for somebody in particular rather than describing a crowd, pass their words as sentence ALONGSIDE the facets: that is what answers a named question directly instead of slicing a market. A result returns everybody it found, including people already in the contact list, marked completeness \"already-a-contact\": that is an ANSWER, never a reason to search again with other words. To REFINE a previous result (a second turn shaped like 'not these'), repeat the SAME filters with excludeWords or excludeProfiles rather than writing a new search: the refinement drops them before any per-person cost and reports excludedCount. Asked who somebody is, name them and say they are already saved.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"object","properties":{"title":{"description":"Role or job title facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"location":{"description":"City, region, or country facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"company":{"description":"Company name facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"industry":{"description":"Industry facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"seniority":{"description":"Seniority facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"keywords":{"description":"Free-text keywords appended to the search query.","type":"string"},"countryCode":{"description":"ISO alpha-2 country code used to scope results to one country.","type":"string"}},"description":"Search facets. Provide at least one of title, location, company, industry, or keywords."},"limit":{"default":15,"description":"Target number of NEW profiles to fetch. People already in your contacts that the search also finds are listed additionally, marked already-a-contact, at no fetch cost: the contacts array can therefore exceed this number, which is the answer being complete rather than the limit being ignored.","type":"integer","minimum":1,"maximum":300},"save":{"default":"keep","description":"What happens to the people found. \"skip\" ONLY when you are certain this search is a step on the way somewhere else: one person or one company you need in order to then work on their posts or their audience, or a check of who somebody is. \"ask\" when you are not certain, and the person gets the choice. Otherwise \"keep\", which is the default: a search for people to reach is the list they are building. When they want only PART of what a search would return, narrow first and keep the narrow result; keeping everyone and then removing the unwanted writes people nobody asked for. The answer reports what was actually written: say that, never what you intended.","type":"string","enum":["keep","skip","ask"]},"chain":{"description":"Optional two-step mode for DISCOVERING companies the caller does not already know by name (an industry, sector, or location ask): first find companies matching filters.industry/filters.location, then search this role inside each. Do NOT set this when specific companies are already named — pass them directly as filters.company instead (no chain needed): that searches those exact companies' roles directly, at lower cost and without a discovery step that can fail.","type":"object","properties":{"role":{"type":"string","description":"Role searched inside each matched company."},"companiesLimit":{"default":10,"description":"How many companies to search inside.","type":"integer","minimum":1,"maximum":30}},"required":["role"]},"more":{"default":false,"description":"Continue past the people an earlier search on these same filters already returned, instead of returning them again. What counts as already returned is the position the last search reached, kept server side.","type":"boolean"},"sentence":{"description":"What the person actually asked, in their own words, when they asked for somebody in particular rather than describing a crowd: a named person, a role at a named organisation, everyone at one, or people who used to work there. Send it ALONGSIDE the facets, never instead of them. It is what lets the search answer a named question directly instead of slicing a market that has no such answer.","type":"string","maxLength":300},"companySize":{"description":"Company-headcount constraint. Not searchable here: echoed under notSearched, results run wider.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"connectionDegree":{"description":"Network-degree constraint. Not searchable here: echoed under notSearched, results run wider.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"verified":{"description":"Verified-identity constraint. Not searchable here: echoed under notSearched.","type":"boolean"},"school":{"description":"School as a structured filter (word-matching goes in filters.keywords instead). Not searchable here: echoed under notSearched.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"pastCompanies":{"description":"Past employer as an employment record. Not searchable here: echoed under notSearched.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"profileLanguage":{"description":"Profile-language constraint. Not searchable here: echoed under notSearched.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"companyHQ":{"description":"Company-headquarters constraint. Not searchable here: echoed under notSearched.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"followersOf":{"description":"Follows-this-creator constraint. Not searchable here: echoed under notSearched.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"excludeProfiles":{"description":"Profile URLs or slugs to leave out, from rows already seen. Applied before any per-person fetch.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"excludeWords":{"description":"Words or phrases that disqualify a row when they appear in its title or headline. Applied before any per-person fetch where possible.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"approveLinkedInSpend":{"description":"Approval to run this search through the user's connected LinkedIn account when a facet needs it. Never pass true on your own: the result's needs quote is relayed to the user first, and their agreement in their next message is what this flag carries.","type":"boolean"}},"required":["filters"]}}}},"responses":{"200":{"description":"Found and enriched people","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"provider":{"type":"string","description":"The search provider that answered."},"query":{"type":"string","description":"The exact query sent, so a thin result set can be read rather than guessed at."},"existingCount":{"description":"How many of the people returned were already in your contacts. They ARE in `contacts` like everyone else, marked completeness \"already-a-contact\", and were not re-fetched because their profile was already read once. Absent when there were none. Not a reason to search again: the search already answered.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"askedFor":{"description":"How many results carry the words YOU typed, rather than the words the search expanded them into. Zero on a full result set that otherwise looks healthy is a strong caveat worth telling the reader about, most often meaning the job title or company named was not found. It is a caveat and not a verdict: a partial result, or a title nobody writes in a headline, can also read zero. Corroborate before saying the person or company does not exist.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"exhaustionNote":{"description":"Why this result is thinner than its count suggests, in words ready to relay. Three causes: the ask itself matched nobody and these people are the closest the wider search reached (a continuation continues that wider search, not the original ask); a continuation reached the end of this search's or this company's list, so there is genuinely nobody further; or the connected account hit LinkedIn's monthly search cap, so the set is truncated rather than complete. Relay it rather than presenting the rows as the whole answer.","type":"string"},"laneNote":{"description":"Present when the answer had to run on a different lane than the ask deserved, in product words: for example a company roster built from public mentions because no usable LinkedIn account was connected. Relay it verbatim; it already says what to do next.","type":"string"},"refused":{"description":"Set when the request could not be searched at all. 'nothing-to-search' means nothing in it named anybody. 'wants-companies' means it asked for organisations, which this operation does not find: use the company search instead. Neither is a retry: say what happened and change the request.","type":"string","enum":["nothing-to-search","wants-companies"]},"notFound":{"description":"People you named by name that the search could not find. When this is set, no result is that person: say so rather than presenting the people returned as them.","type":"array","items":{"type":"string"}},"urlsFound":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total profile URLs found."},"newUrls":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Profiles fetched on this call. People already in your contacts are returned too, from the search result, without being fetched again."},"hydrated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Profiles fetched and enriched in this call."},"searches":{"description":"How many searches it took to find these people.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"searchesFailed":{"description":"Searches that did not reach the provider. When this is high the result says nothing about the market.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"moreAvailable":{"description":"Whether asking again with more can still reach people you have not seen. Set on every lane, including a run through the connected account. False after a continuation means that lane is walked out, not that the search failed.","type":"boolean"},"exhaustion":{"description":"Finer than moreAvailable: 'axes-exhausted' means every search angle for this audience has genuinely been tried, calling again with more will not find anybody new. 'batch-failed' means this attempt could not reach the search provider, worth retrying. 'more-available' is the ordinary case.","type":"string","enum":["more-available","axes-exhausted","batch-failed"]},"axesTried":{"description":"What was actually tried, broken down by search angle, against what each angle could still do.","type":"array","items":{"type":"object","properties":{"axis":{"type":"string","description":"Which search angle this row covers, e.g. title, city, school, tool."},"queriesPlanned":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many searches this angle could run in total."},"attempted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many of those have actually run so far."},"yielded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"New people this angle has contributed."},"exhausted":{"type":"boolean","description":"Whether this angle has nothing left to try."}},"required":["axis","queriesPlanned","attempted","yielded","exhausted"],"additionalProperties":false}},"axesAvailable":{"description":"Every search angle this audience supports and how many queries each could run — the full potential, whether or not it has been searched yet. Free to compute, no extra searches run to produce it.","type":"array","items":{"type":"object","properties":{"axis":{"type":"string","description":"A search angle this audience supports, e.g. title, city, school, tool."},"queries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many searches that angle could run in total."}},"required":["axis","queries"],"additionalProperties":false}},"countryRiskNote":{"description":"A non-blocking caveat about this market, e.g. a country whose profiles are hard to tell apart from a bigger anglophone one. Never a reason to withhold or shrink the result — surface it as a caution alongside the real count, never in place of one.","type":"object","properties":{"risk":{"type":"string","enum":["low","medium","high"],"description":"How likely this country/title combination is to return false-positive matches from elsewhere."},"reason":{"type":"string","description":"Why, in plain language."}},"required":["risk","reason"],"additionalProperties":false},"rateLimited":{"description":"Profiles found but deferred because the scraping pool is busy.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"description":"Explanation when part of the result set was deferred.","type":"string"},"stillRunning":{"description":"The search outlived this request's watch window and is still working server side. Everything in this response is real and already found. Ask the SAME filters again shortly to collect more: that joins the running search rather than starting or paying for a new one.","type":"boolean"},"partial":{"description":"The search stopped before finishing, so this is what it found, not the whole answer. Asking again starts a fresh search. Never present a partial result as everybody there is.","type":"boolean"},"progress":{"description":"How far the running search has gotten, alongside stillRunning or partial.","type":"object","properties":{"peopleFound":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queriesRun":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":{}},"creditsExhausted":{"description":"Profiles found but not read because the workspace credit pool emptied part way through. Real matches, not the full result set.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"description":"Credits this call spent from the workspace pool: search pages plus profile fetches that succeeded.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"description":"People this continuation found again that an earlier call on the same filters already returned. They were filtered out without being re-fetched or re-charged.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queries":{"description":"Every query this call actually executed, so a multi-part ask can be read rather than guessed at. `query` above stays the single representative one.","type":"array","items":{"type":"string"}},"pooled":{"description":"How many of these people were linked into the target list or conversation. Zero alongside non-empty results means found but not saved to a list.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"poolTargeted":{"description":"Whether a target list existed for this call at all; gives pooled its meaning.","type":"boolean"},"listTotal":{"description":"How many people the list holds in total after this call, counted server side over the same rows the list itself shows. This is the ONLY running total: cite it as it stands and never add it to another number.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"companies":{"description":"Chain mode only: the companies discovered in step one, whose people step two searched.","type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"url":{"nullable":true,"type":"string"}},"additionalProperties":{}}},"notSearched":{"description":"Constraints the request carried that this search could not express. When present, the results ran WIDER than asked: everyone requested is still eligible to appear, plus others. Relay this plainly; never present the list as filtered by these.","type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"The constraint that could not be applied."},"value":{"type":"string","description":"What was asked for."},"why":{"type":"string","description":"Why it could not be applied, in plain words."},"effect":{"type":"string","description":"What that does to the results: wider than asked, never different."}},"required":["field","value","why","effect"],"additionalProperties":false}},"saved":{"description":"What the save choice actually did, so claims about saving cite this rather than the request that was sent.","type":"object","properties":{"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People written to the contact list by THIS call."},"decide":{"description":"The caller was not sure whether to keep these people, so nobody was written and the person is offered the choice on the result itself. Do not tell them anything was kept, and do not ask them again in words.","type":"boolean"}},"required":["count"],"additionalProperties":false},"ambiguity":{"description":"Organisation names in the ask that several real organisations share. The results may mix them: ask which one was meant before presenting a single answer as the answer.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The organisation name that is ambiguous."},"note":{"type":"string","description":"What to ask before trusting a single row."}},"required":["name","note"],"additionalProperties":false}},"needs":{"description":"A quote, not an answer: this ask carries facets only the connected account can honour, and nothing was run or spent. Relay it plainly, ask the user, and repeat the call with approveLinkedInSpend true only after they agree. contacts is empty alongside this by construction.","type":"object","properties":{"kind":{"type":"string","enum":["linkedin_spend"]},"because":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"value":{"type":"string"}},"required":["field","value"],"additionalProperties":false},"description":"The facets that need the connected account."},"estimate":{"type":"object","properties":{"linkedinSearches":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["linkedinSearches"],"additionalProperties":false,"description":"What approving would spend, in LinkedIn searches."},"alternative":{"type":"string","description":"The no-spend path, ready to relay."}},"required":["kind","because","estimate","alternative"],"additionalProperties":false},"honoured":{"description":"On an approved account-lane run: the exact facets that were genuinely applied.","type":"array","items":{"type":"string"}},"union":{"description":"Premium cohorts run both lanes in parallel and merge: the public sweep plus one exact account search, every account row marked lane linkedin. Present when the account arm added people; both spends are receipted.","type":"object","properties":{"added":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows the connected-account arm added beyond what the public sweep found."},"linkedinSearches":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"LinkedIn searches the arm spent."}},"required":["added","linkedinSearches"],"additionalProperties":false},"approvedBy":{"description":"Who approved the account-lane run: the user's explicit yes, or the account's LinkedIn Premium (no monthly search cap, so exact runs directly). Relay which.","type":"string","enum":["user","premium"]},"linkedinSearches":{"description":"On an approved account-lane run: LinkedIn searches this call spent from the account's monthly allowance.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"excludedCount":{"description":"Rows dropped by excludeProfiles/excludeWords before fetching, so a refinement is visible and never re-paid.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contacts":{"type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"company":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"completeness":{"type":"string"},"lane":{"description":"Present when this row came from the user's connected LinkedIn account on an approved run: exact employment-record data rather than public page text.","type":"string","enum":["linkedin"]},"summary":{"description":"The profile's About text, when the public page carried one.","type":"string"},"connections":{"description":"Connection count, when the public page carried one.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageUrl":{"description":"The profile's display photo (from the public page's og:image), when the public page carried one. A raw LinkedIn CDN URL — may expire over time, unlike a re-hosted avatar.","type":"string"},"publicIdentifier":{"description":"The profile's public slug, when known.","type":"string"},"networkDistance":{"description":"Connection degree between this person and the connected account (DISTANCE_1, DISTANCE_2, DISTANCE_3). Present only on account-lane rows: it is the one datum the public lane cannot know.","type":"string"},"education":{"description":"School name from the public page, when present.","type":"string"},"followers":{"description":"Public follower count from the preview page, when present. Not a login-only exact count.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"badge":{"description":"Public profile badge from the preview page, when present.","type":"string"},"languages":{"description":"Languages listed on the public preview page, when present.","type":"array","items":{"type":"string"}},"positions":{"description":"Visible employers from the public preview page, when present.","type":"array","items":{"type":"object","properties":{"companyName":{"type":"string"},"title":{"nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"startDate":{"nullable":true,"type":"object","properties":{"year":{"type":"number"}},"required":["year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"year":{"type":"number"}},"required":["year"],"additionalProperties":false},"isCurrent":{"type":"boolean"}},"required":["companyName","title","companyUrl","startDate","endDate","isCurrent"],"additionalProperties":false}},"educations":{"description":"Visible schools from the public preview page, when present.","type":"array","items":{"type":"object","properties":{"schoolName":{"type":"string"},"schoolUrl":{"nullable":true,"type":"string"},"startDate":{"nullable":true,"type":"object","properties":{"year":{"type":"number"}},"required":["year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"year":{"type":"number"}},"required":["year"],"additionalProperties":false}},"required":["schoolName","schoolUrl","startDate","endDate"],"additionalProperties":false}},"recentPosts":{"description":"A sample of the person's own public feed posts from the preview page, when present. Search returns at most three; the saved contact keeps the fuller public list.","type":"array","items":{"type":"object","properties":{"url":{"nullable":true,"type":"string"},"text":{"nullable":true,"type":"string"},"likes":{"nullable":true,"type":"number"},"datePublished":{"nullable":true,"type":"string"}},"required":["url","text","likes","datePublished"],"additionalProperties":false}}},"required":["name","headline","company","location","profileUrl","completeness"],"additionalProperties":false}}},"required":["source","provider","query","urlsFound","newUrls","hydrated","contacts"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/companies":{"post":{"x-bereach":{"cost":"read","resultShape":"list"},"operationId":"publicFindCompanies","x-speakeasy-name-override":"publicFindCompanies","summary":"Find companies from public data","description":"Search for public company pages through an anonymous web search; no connected account is needed. Returns company names and page links that can be read with the public company lookup.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"object","properties":{"title":{"description":"Role or job title facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"location":{"description":"City, region, or country facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"company":{"description":"Company name facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"industry":{"description":"Industry facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"seniority":{"description":"Seniority facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"keywords":{"description":"Free-text keywords appended to the search query.","type":"string"},"countryCode":{"description":"ISO alpha-2 country code used to scope results to one country.","type":"string"}},"description":"Search facets. Provide at least one company-level facet: company, industry, location, or keywords. A role or title cannot select companies."},"limit":{"default":15,"description":"Target number of companies.","type":"integer","minimum":1,"maximum":50},"more":{"default":false,"description":"Continue past what an earlier call on this same ask already returned, instead of returning it again. What counts as already returned is kept server side.","type":"boolean"}},"required":["filters"]}}}},"responses":{"200":{"description":"Matched companies","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"provider":{"type":"string","description":"The search provider that answered."},"query":{"type":"string","description":"The exact query sent, so a thin result set can be read rather than guessed at."},"companies":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"companyUrl":{"type":"string"},"description":{"nullable":true,"description":"Short blurb about the company. Free text, so it names the industry and location in prose rather than as fields, and it is what tells two same-named companies apart.","type":"string"}},"required":["name","slug","companyUrl","description"],"additionalProperties":false}},"moreAvailable":{"type":"boolean","description":"Whether asking again with more can still reach rows you have not seen. False means this ask is walked out; say so and do not call more again."},"duplicates":{"description":"Rows a continuation re-reached and dropped as already delivered. Normal bookkeeping, never a failure.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["source","provider","query","companies","moreAvailable"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/company":{"post":{"x-bereach":{"cost":"read"},"operationId":"publicCompany","x-speakeasy-name-override":"publicCompany","summary":"Read a public company page","description":"Read a public company page anonymously: identity, description, follower and employee counts, website, recent posts, and companies LinkedIn itself lists as similar (a real, live-measured way to answer \"companies like this one\", not a keyword guess). Recent posts can be mined for people with collect_engagers.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"companyUrl":{"description":"Full public company page URL. Provide this or slug.","type":"string"},"slug":{"description":"Company page slug. Provide this or companyUrl.","type":"string"},"country":{"description":"ISO alpha-2 country code for the proxy exit.","type":"string"}}}}}},"responses":{"200":{"description":"Public company data","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"completeness":{"type":"string"},"company":{"type":"object","additionalProperties":{},"description":"Company identity, follower and employee counts, website, recent posts, and similarCompanies (LinkedIn's own \"Similar pages\" for this company, empty when the company is too small for the signal to be reliable) — the fastest way to answer a \"companies like this one\" ask."}},"required":["source","completeness","company"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/post":{"post":{"x-bereach":{"cost":"read","resultShape":"post","excludeTool":true},"operationId":"publicPostEngagers","x-speakeasy-name-override":"publicPostEngagers","summary":"Read a public post and its commenters","description":"Read a public post anonymously: text, author, date, like and comment counts, plus the top visible commenters with their profile links and comment text. Only the top commenters are public and reactor identities are not available this way; use collect_engagers with a connected account for the full list.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"postUrl":{"type":"string","minLength":1,"description":"Full public post URL."},"country":{"description":"ISO alpha-2 country code for the proxy exit.","type":"string"},"save":{"default":true,"description":"When true, surfaced commenters are saved to your contacts.","type":"boolean"},"hydrate":{"default":false,"description":"When true, each commenter's public profile is also fetched to enrich headline, company, and location. Costs extra fetches.","type":"boolean"}},"required":["postUrl"]}}}},"responses":{"200":{"description":"Post data with commenters","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"hydrated":{"type":"boolean"},"savedCommenters":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"post":{"type":"object","additionalProperties":{},"description":"Post text, author, date, counts, and commenters."}},"required":["source","hydrated","savedCommenters","post"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/post-search":{"post":{"x-bereach":{"cost":"read","resultShape":"list"},"operationId":"publicFindPosts","x-speakeasy-name-override":"publicFindPosts","summary":"Find public posts by topic","description":"Search public posts by topic keyword or hashtag through an anonymous web search; no connected account is needed. Each returned post can be mined for people with collect_engagers.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Topic keyword or hashtag to search posts for."},"limit":{"default":15,"description":"Target number of posts.","type":"integer","minimum":1,"maximum":50},"more":{"default":false,"description":"Continue past what an earlier call on this same ask already returned, instead of returning it again. What counts as already returned is kept server side.","type":"boolean"}},"required":["query"]}}}},"responses":{"200":{"description":"Matched posts","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"provider":{"type":"string","description":"The search provider that answered."},"query":{"type":"string","description":"The exact query sent, so a thin result set can be read rather than guessed at."},"posts":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"text":{"nullable":true,"type":"string"},"author":{"nullable":true,"description":"The publisher's vanity identifier, read off the post URL. An identifier, not a display name, and some belong to company pages rather than people.","type":"string"}},"required":["url","text","author"],"additionalProperties":false}},"moreAvailable":{"type":"boolean","description":"Whether asking again with more can still reach rows you have not seen. False means this ask is walked out; say so and do not call more again."},"duplicates":{"description":"Rows a continuation re-reached and dropped as already delivered. Normal bookkeeping, never a failure.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["source","provider","query","posts","moreAvailable"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/jobs":{"post":{"x-bereach":{"cost":"read","resultShape":"list"},"operationId":"publicFindJobs","x-speakeasy-name-override":"publicFindJobs","summary":"Find public job postings","description":"Search public job postings through an anonymous web search; no connected account is needed. Returns job titles, companies, and posting links.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"object","properties":{"title":{"description":"Role or job title facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"location":{"description":"City, region, or country facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"company":{"description":"Company name facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"industry":{"description":"Industry facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"seniority":{"description":"Seniority facet. One value or a list of alternatives.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"keywords":{"description":"Free-text keywords appended to the search query.","type":"string"},"countryCode":{"description":"ISO alpha-2 country code used to scope results to one country.","type":"string"}},"description":"Search facets. Provide at least one of title, company, location, industry, or keywords."},"limit":{"default":15,"description":"Target number of job postings.","type":"integer","minimum":1,"maximum":50},"more":{"default":false,"description":"Continue past what an earlier call on this same ask already returned, instead of returning it again. What counts as already returned is kept server side.","type":"boolean"}},"required":["filters"]}}}},"responses":{"200":{"description":"Matched job postings","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"provider":{"type":"string","description":"The search provider that answered."},"query":{"type":"string","description":"The exact query sent, so a thin result set can be read rather than guessed at."},"jobs":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"jobUrl":{"type":"string"},"jobId":{"nullable":true,"type":"string"}},"required":["title","jobUrl","jobId"],"additionalProperties":false}},"moreAvailable":{"type":"boolean","description":"Whether asking again with more can still reach rows you have not seen. False means this ask is walked out; say so and do not call more again."},"duplicates":{"description":"Rows a continuation re-reached and dropped as already delivered. Normal bookkeeping, never a failure.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["source","provider","query","jobs","moreAvailable"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/public/enrich":{"post":{"x-bereach":{"cost":"read"},"operationId":"publicEnrich","x-speakeasy-name-override":"publicEnrich","summary":"Publicly re-fetch a list of contacts","description":"Does not return email or phone. Do not call this when the user asked for email or phone. Re-fetch public profile data for a specific list of your own contacts (contact ids from a list already shown, not raw profile URLs): the way to visit many people at once instead of one visit_profile per person. Public and cookieless: no connected account is touched. When the target is ambiguous and the pool is large, ask which people rather than defaulting to everyone. qualify:true grades against the ICP and spends AI credits, only when the user asked to be graded; plain visit or enrich is data only.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactIds":{"minItems":1,"maxItems":199,"type":"array","items":{"type":"string"},"description":"Which of your own contacts to (re)fetch. An explicit list — not a filter — so nothing is enriched by accident."},"campaignId":{"description":"Link newly-touched contacts to this list (slug or id). In chat, omit it: the conversation's own list is used.","type":"string"},"qualify":{"default":false,"description":"Also grade each enriched contact against the list's ICP (the ICP is chosen per list). Off by default: enrichment is the common case, grading is something to ask for explicitly, since it spends AI credits.","type":"boolean"}},"required":["contactIds"]}}}},"responses":{"200":{"description":"Batch result (or a stillRunning partial for a batch that outlived this call's wait)","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"batchId":{"type":"string","description":"Pass this to GET the same endpoint if stillRunning is set, to check on it later."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many contacts were actually queued (already-fresh and unreachable ones are skipped up front)."},"visited":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Successfully re-fetched."},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Could not be reached (deleted, restricted, or no public page)."},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deferred, not attempted this call."},"qualified":{"description":"Graded against the ICP, when qualify was requested.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["processing","completed","partial","failed"]},"failureReason":{"type":"string"},"stillRunning":{"description":"The batch outlived this call's wait and is still working — everything above is real and already landed, not a failure. Check back with GET ?batchId=.","type":"boolean"}},"required":["source","batchId","total","visited","failed","skipped","status"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/invitations/linkedin/sent":{"post":{"x-bereach":{"cost":"read"},"operationId":"listSentInvitations","x-speakeasy-name-override":"listSentInvitations","summary":"List sent connection invitations","description":"List sent (pending) LinkedIn connection invitations.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"start":0,"count":10},"schema":{"type":"object","properties":{"start":{"default":0,"description":"Pagination offset","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"default":10,"description":"Number of invitations to return","type":"integer","minimum":1,"maximum":100}}}}}},"responses":{"200":{"description":"Sent invitations","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"invitations":{"type":"array","items":{"type":"object","properties":{"invitationId":{"type":"string"},"invitationUrn":{"type":"string"},"entityUrn":{"type":"string"},"sentAt":{"nullable":true,"type":"string"},"sentTime":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"nullable":true,"type":"string"},"targetProfileId":{"nullable":true,"type":"string"},"targetFirstName":{"nullable":true,"type":"string"},"targetLastName":{"nullable":true,"type":"string"},"toMember":{"nullable":true,"type":"object","properties":{"name":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"},"memberId":{"nullable":true,"type":"string"}},"required":["name","headline","profileUrl","profilePicture","publicIdentifier","profileUrn","memberId"],"additionalProperties":false},"invitationType":{"nullable":true,"type":"string"},"mailboxItemId":{"nullable":true,"type":"string"},"customMessage":{"type":"boolean"},"unseen":{"type":"boolean"},"mutualCurrentCompany":{"nullable":true},"connectionDistance":{"nullable":true},"inviterFollowingInvitee":{"type":"boolean"}},"required":["invitationId","invitationUrn","entityUrn","sentAt","sentTime","message","targetProfileId","targetFirstName","targetLastName","toMember","invitationType","mailboxItemId","customMessage","unseen","inviterFollowingInvitee"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"warning":{"description":"Present ONLY when the list could not be confirmed complete. While it is present, absence from `invitations` proves nothing.","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","invitations","total","start","count","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/follow/linkedin/profile":{"post":{"x-bereach":{"cost":"write","agents":["orchestrator","outreach"],"guards":["profileTargeting"]},"operationId":"followProfile","x-speakeasy-name-override":"followProfile","summary":"Follow a profile","description":"Follow a LinkedIn profile without connecting. Accepts profile URL (linkedin.com/in/username), full URN, or vanity name.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/username"},"schema":{"type":"object","properties":{"profile":{"type":"string","minLength":1,"description":"Accepts full LinkedIn profile URLs (e.g. linkedin.com/in/username), vanity names (e.g. john-doe), or profile URNs (e.g. urn:li:fsd_profile:ACoAAA...)."}},"required":["profile"]}}}},"responses":{"200":{"description":"Profile followed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","message","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/unfollow/linkedin/profile":{"post":{"x-bereach":{"cost":"write","agents":["outreach"]},"operationId":"unfollowProfile","x-speakeasy-name-override":"unfollowProfile","summary":"Unfollow a profile","description":"Unfollow a LinkedIn profile. Same input formats as follow.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/username"},"schema":{"type":"object","properties":{"profile":{"type":"string","minLength":1,"description":"Accepts full LinkedIn profile URLs (e.g. linkedin.com/in/username), vanity names (e.g. john-doe), or profile URNs (e.g. urn:li:fsd_profile:ACoAAA...)."}},"required":["profile"]}}}},"responses":{"200":{"description":"Profile unfollowed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","message","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/edit/linkedin/post":{"post":{"x-bereach":{"cost":"write"},"operationId":"editPost","x-speakeasy-name-override":"editPost","summary":"Edit a post","description":"Edit the text content of an existing LinkedIn post. Only text can be changed; media, visibility, and other properties are preserved. Requires resolving the shareUrn from the activityUrn. Only works for posts in the user's recent feed. Returns bad_request if shareUrn cannot be resolved.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:123","text":"Updated post text"},"schema":{"type":"object","properties":{"postUrl":{"type":"string","minLength":1,"description":"LinkedIn post URL or URN"},"text":{"type":"string","minLength":1,"description":"New text content for the post"}},"required":["postUrl","text"]}}}},"responses":{"200":{"description":"Post edited","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/edit/linkedin/comment":{"post":{"x-bereach":{"cost":"write"},"operationId":"editComment","x-speakeasy-name-override":"editComment","summary":"Edit a comment","description":"Edit the text of an existing LinkedIn comment. Provide either fsdCommentUrn (preferred, from comment API response) or the legacy commentUrn format. Returns not_found if the comment does not exist or URN is malformed, forbidden if it's not your comment.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"fsdCommentUrn":{"description":"urn:li:fsd_comment:(COMMENT_ID,urn:li:ugcPost:POST_ID) - from comment API response","type":"string"},"commentUrn":{"description":"Legacy comment URN format","type":"string"},"text":{"type":"string","minLength":1,"description":"New comment text"}},"required":["text"]},"examples":{"fsdCommentUrn":{"value":{"fsdCommentUrn":"urn:li:fsd_comment:(123,urn:li:ugcPost:456)","text":"Updated comment"}},"commentUrn":{"value":{"commentUrn":"urn:li:comment:(activity:123,456)","text":"Updated comment"}}}}}},"responses":{"200":{"description":"Comment edited","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/edit/linkedin/profile":{"patch":{"x-bereach":{"cost":"write"},"operationId":"editProfile","x-speakeasy-name-override":"editProfile","summary":"Edit LinkedIn profile headline/summary","description":"Edit the authenticated user's LinkedIn headline and/or about summary. At least one field is required.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"headline":"Senior Software Engineer | AI Enthusiast"},"schema":{"type":"object","properties":{"headline":{"description":"New LinkedIn headline (max 220 chars)","type":"string","maxLength":220},"summary":{"description":"New LinkedIn about/summary section (max 2600 chars)","type":"string","maxLength":2600}}}}}},"responses":{"200":{"description":"Profile updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"updated":{"type":"array","items":{"type":"string"},"description":"Fields that were updated on LinkedIn"},"synced":{"type":"array","items":{"type":"string"},"description":"Fields that were synced back to the local database"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","updated","synced","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/unlike/linkedin/post":{"post":{"x-bereach":{"cost":"paced-free","agents":["outreach"]},"operationId":"unlikePost","x-speakeasy-name-override":"unlikePost","summary":"Unlike a post","description":"Remove your reaction from a LinkedIn post using GraphQL mutation. Idempotent if post is not liked. Returns bad_request if post URL is invalid.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"postUrl":"https://www.linkedin.com/feed/update/urn:li:activity:123"},"schema":{"type":"object","properties":{"postUrl":{"type":"string","minLength":1,"description":"LinkedIn post URL or URN to unlike"}},"required":["postUrl"]}}}},"responses":{"200":{"description":"Reaction removed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/unlike/linkedin/comment":{"post":{"x-bereach":{"cost":"paced-free","agents":["outreach"]},"operationId":"unlikeComment","x-speakeasy-name-override":"unlikeComment","summary":"Unlike a comment","description":"Remove your reaction from a LinkedIn comment using GraphQL mutation. Accepts both 'urn:li:comment:(urn:li:activity:X,Y)' and 'urn:li:comment:(activity:X,Y)' formats. Also supports ugcPost and share types.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"commentUrn":"urn:li:comment:(urn:li:activity:123,456)"},"schema":{"type":"object","properties":{"commentUrn":{"type":"string","minLength":1,"description":"Full comment URN to unlike (e.g. urn:li:comment:(urn:li:activity:123,456))"}},"required":["commentUrn"]}}}},"responses":{"200":{"description":"Reaction removed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/delete/linkedin/comment":{"post":{"x-bereach":{"cost":"write","agents":["orchestrator","outreach"]},"operationId":"deleteComment","x-speakeasy-name-override":"deleteComment","summary":"Delete one of your LinkedIn comments","description":"Permanently delete a comment you posted (or one on your own post). LinkedIn checks ownership server-side and returns 403 otherwise. Idempotent — already-deleted comments return success with alreadyGone=true. Pass the full comment URN in 'urn:li:comment:(activity:POST_ID,COMMENT_ID)' shape (ugcPost / share also accepted).","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"commentUrn":"urn:li:comment:(activity:7327726660852629504,7460399586222727168)"},"schema":{"type":"object","properties":{"commentUrn":{"type":"string","minLength":1,"description":"Full comment URN to delete (e.g. urn:li:comment:(activity:7327726660852629504,7460399586222727168))"}},"required":["commentUrn"]}}}},"responses":{"200":{"description":"Comment deleted (or already gone)","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"deleted":{"type":"object","properties":{"type":{"type":"string","enum":["activity","ugcPost","share"]},"parentId":{"type":"string"},"commentId":{"type":"string"},"alreadyGone":{"type":"boolean"}},"required":["type","parentId","commentId","alreadyGone"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","deleted","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/feed/linkedin":{"post":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"post"},"operationId":"getFeed","x-speakeasy-name-override":"getFeed","summary":"Get home feed","description":"Get posts from the LinkedIn home feed using GraphQL. Supports algorithmic (RELEVANCE) or chronological (REV_CHRON) sorting. Returns parsed post objects with author info, text, engagement counts. No pagination token support currently.","tags":["scrapers"],"security":[{"token":[]}],"requestBody":{"required":false,"content":{"application/json":{"example":{"count":20,"sortOrder":"RELEVANCE"},"schema":{"type":"object","properties":{"count":{"default":20,"description":"Number of feed items to return (1-50, default 20)","type":"integer","minimum":1,"maximum":50},"sortOrder":{"default":"RELEVANCE","description":"Sort order: RELEVANCE (default, algorithmic) or REV_CHRON (most recent first)","type":"string","enum":["RELEVANCE","REV_CHRON"]}}}}}},"responses":{"200":{"description":"Feed posts","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"posts":{"type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"type":{"type":"string","enum":["activity","ugcPost","share"],"description":"LinkedIn post type: 'ugcPost' = standard post, 'share' = native share/repost, 'activity' = legacy format."},"isRepost":{"description":"True when the post is a repost/reshare of another post. Absent for original posts.","type":"boolean"},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"authorName":{"description":"Display name of the post's author.","type":"string"},"authorProfileUrl":{"description":"Author's profile URL.","type":"string"},"authorPublicIdentifier":{"description":"Author's vanity slug, when they have one.","nullable":true,"type":"string"},"authorProfileUrn":{"description":"Author's profile URN.","nullable":true,"type":"string"},"authorHeadline":{"description":"Author's headline as shown on the post.","type":"string"},"authorImageUrl":{"description":"Author's avatar URL.","type":"string"},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","posts","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/follow/linkedin/company":{"post":{"x-bereach":{"cost":"paced-free"},"operationId":"followCompany","x-speakeasy-name-override":"followCompany","summary":"Follow a company","description":"Follow a LinkedIn company page.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"company":"https://www.linkedin.com/company/google"},"schema":{"type":"object","properties":{"company":{"type":"string","description":"LinkedIn company URL or URN"}},"required":["company"]}}}},"responses":{"200":{"description":"Company followed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/unfollow/linkedin/company":{"post":{"x-bereach":{"cost":"paced-free"},"operationId":"unfollowCompany","x-speakeasy-name-override":"unfollowCompany","summary":"Unfollow a company","description":"Unfollow a LinkedIn company page.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"company":"https://www.linkedin.com/company/google"},"schema":{"type":"object","properties":{"company":{"type":"string","description":"LinkedIn company URL or URN"}},"required":["company"]}}}},"responses":{"200":{"description":"Company unfollowed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts":{"post":{"x-bereach":{"agents":["lead_gen"]},"operationId":"contactsUpsert","x-speakeasy-name-override":"upsert","summary":"Create or upsert contacts (no campaign required)","description":"Save people without creating a campaign first. Upserts by profile URL. Returns the saved rows.","tags":["contacts"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"contacts":[{"linkedinUrl":"https://linkedin.com/in/johndoe","name":"John Doe","source":"search_results"},{"linkedinUrl":"https://linkedin.com/in/janesmith","name":"Jane Smith","source":"likes","sourceAngle":"competitor-engagement","lifecycleStage":"lead","hotScore":75}]},"schema":{"type":"object","properties":{"contacts":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"linkedinUrl":{"type":"string","description":"LinkedIn profile URL, URN, or bare vanity name"},"profileUrn":{"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...). Improves dedup when provided alongside a vanity URL.","nullable":true,"type":"string"},"publicIdentifier":{"description":"LinkedIn vanity slug (e.g. joshuaau). Improves dedup when provided alongside a URN.","nullable":true,"type":"string"},"name":{"type":"string","description":"Profile name"},"source":{"default":"manual_import","description":"How this contact was found. Optional for organic creation (defaults to manual_import), required for campaign-based addition. Unknown values default to manual_import.","type":"string","enum":["likes","comments","reposts","posts","company_followers","search_results","manual_import","event_attendees","group_members","engagement_scraping","content_search","followers_mining","people_search","job_search","company_search","network_expansion","bulk_visit"]},"sourceAngle":{"description":"Which lead-gen angle found this (e.g., 'vp-sales-france')","type":"string"},"lifecycleStage":{"description":"Optional Fit label. Defaults to ungraded on creation. Omit when adding someone already in the list.","type":"string","enum":["contact","lead","qualified","rejected"]},"hotScore":{"description":"Contact quality score (0-100)","type":"integer","minimum":0,"maximum":100},"qualificationNotes":{"description":"Agent reasoning for qualification decision","type":"string"},"leadBrief":{"description":"Short brief for sales prep (2-3 sentences)","type":"string"},"notes":{"type":"string"}},"required":["linkedinUrl","name"]},"description":"Contacts to add (single or bulk)"}},"required":["contacts"]}}}},"responses":{"201":{"description":"Contacts created or updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"results":{"type":"object","properties":{"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"updated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"array","items":{"type":"string"}},"bucketed":{"description":"Rows parked as pending engagers because their URL carried no resolvable identity.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["created","updated","skipped","errors"],"additionalProperties":false},"contacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...)","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity slug (e.g. joshuaau)","type":"string"},"name":{"type":"string"},"notes":{"nullable":true,"type":"string"},"profileData":{"nullable":true},"profileUpdatedAt":{"nullable":true,"type":"string"},"conversationData":{"nullable":true},"conversationUpdatedAt":{"nullable":true,"type":"string"},"outreachStatus":{"description":"Absent when the contact has no outreach status, which is the common case.","type":"string"},"lastContactedAt":{"nullable":true,"type":"string"},"lastRepliedAt":{"nullable":true,"type":"string"},"doNotContact":{"description":"Present only when true.","type":"boolean"},"lastActivityAt":{"description":"Most recent of replied, contacted, created, or a stage change.","nullable":true,"type":"string"},"avatarUrl":{"nullable":true,"type":"string"},"humanStatus":{"description":"One sentence describing where this contact stands, for a human or a model to read.","type":"string"},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","linkedinUrl","profileUrn","publicIdentifier","name","notes","profileUpdatedAt","conversationUpdatedAt","tags","createdAt","updatedAt"],"additionalProperties":false},"description":"The rows as written. No per-campaign fields: this route creates no campaign membership."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","results","contacts","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/search":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"],"guards":["omitData"]},"operationId":"contactsSearch","x-speakeasy-name-override":"search","summary":"Search and filter contacts","description":"Search saved people: name, profile URL, optional Fit / not-a-fit, outreach status, tags, score, and list membership. Supports pagination and sorting.","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"linkedinUrl","schema":{"description":"Filter by LinkedIn URL (exact match)","type":"string"},"description":"Filter by LinkedIn URL (exact match)"},{"in":"query","name":"name","schema":{"description":"Filter by name (partial match)","type":"string"},"description":"Filter by name (partial match)"},{"in":"query","name":"lifecycleStage","schema":{"type":"string","enum":["contact","lead","qualified","rejected"]}},{"in":"query","name":"sortBy","schema":{"description":"Sort order. One of: updatedAt_desc / updatedAt_asc (most recent activity — default), hotScore_desc / hotScore_asc, lastRepliedAt_desc / lastRepliedAt_asc, lastContactedAt_desc / lastContactedAt_asc, createdAt_desc / createdAt_asc, name_asc / name_desc, profileUpdatedAt_desc / profileUpdatedAt_asc.","type":"string"},"description":"Sort order. One of: updatedAt_desc / updatedAt_asc (most recent activity — default), hotScore_desc / hotScore_asc, lastRepliedAt_desc / lastRepliedAt_asc, lastContactedAt_desc / lastContactedAt_asc, createdAt_desc / createdAt_asc, name_asc / name_desc, profileUpdatedAt_desc / profileUpdatedAt_asc."},{"in":"query","name":"minHotScore","schema":{"type":"integer","minimum":0,"maximum":100}},{"in":"query","name":"outreachStatus","schema":{"type":"string","enum":["none","connection_sent","connected","dm_sent","followed_up","replied","in_conversation","meeting_booked","not_interested"]}},{"in":"query","name":"tag","schema":{"description":"Filter by tag","type":"string"},"description":"Filter by tag"},{"in":"query","name":"doNotContact","schema":{"anyOf":[{"type":"string","enum":["true","false"]},{"type":"boolean"}]}},{"in":"query","name":"hasProfileData","schema":{"anyOf":[{"type":"string","enum":["true","false"]},{"type":"boolean"}]}},{"in":"query","name":"campaignId","schema":{"type":"string"}},{"in":"query","name":"engaged","schema":{"description":"Default true: return only people with outreach started, a reply, or membership in a real (non chat-draft) list. Pass false for every saved row including collected residue. Ignored when campaignId, linkedinUrl, or name is set, since each of those already names what to return.","anyOf":[{"type":"string","enum":["true","false"]},{"type":"boolean"}]},"description":"Default true: return only people with outreach started, a reply, or membership in a real (non chat-draft) list. Pass false for every saved row including collected residue. Ignored when campaignId, linkedinUrl, or name is set, since each of those already names what to return."},{"in":"query","name":"omitData","schema":{"description":"Return identity and verdict only: no profile blob, no campaign membership, no timestamps. Much smaller, and a different row shape rather than the same one with holes.","anyOf":[{"type":"string","enum":["true","false"]},{"type":"boolean"}]},"description":"Return identity and verdict only: no profile blob, no campaign membership, no timestamps. Much smaller, and a different row shape rather than the same one with holes."},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Matching contacts. The row shape depends on `omitData`.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"contacts":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...)","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity slug (e.g. joshuaau)","type":"string"},"name":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"notes":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"profileData":{"nullable":true},"profileUpdatedAt":{"nullable":true,"type":"string"},"conversationData":{"nullable":true},"conversationUpdatedAt":{"nullable":true,"type":"string"},"outreachStatus":{"description":"Absent when the contact has no outreach status, which is the common case.","type":"string"},"lastContactedAt":{"nullable":true,"type":"string"},"lastRepliedAt":{"nullable":true,"type":"string"},"doNotContact":{"description":"Present only when true.","type":"boolean"},"lastActivityAt":{"description":"Most recent of replied, contacted, created, or a stage change.","nullable":true,"type":"string"},"avatarUrl":{"description":"Durable avatar URL, R2-backed where available.","nullable":true,"type":"string"},"humanStatus":{"description":"One sentence describing where this contact stands, for a human or a model to read.","type":"string"},"campaigns":{"description":"Every campaign this contact belongs to. Lifecycle is per-campaign, so this is where membership lives.","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"campaignName":{"type":"string"},"campaignChatThreadId":{"nullable":true,"type":"string"},"origin":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"sourceAngle":{"nullable":true,"type":"string"},"addedAt":{"type":"string"}},"required":["campaignId"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","linkedinUrl","profileUrn","publicIdentifier","name","lifecycleStage","hotScore","qualificationNotes","leadBrief","notes","stageChangedAt","profileUpdatedAt","conversationUpdatedAt","tags","createdAt","updatedAt"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"name":{"nullable":true,"type":"string"},"lifecycleStage":{"type":"string","description":"Optional Fit label, or ungraded when the row has none."},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"outreachStatus":{"nullable":true,"type":"string"},"doNotContact":{"nullable":true,"type":"boolean"}},"required":["id","linkedinUrl","name","lifecycleStage","hotScore","outreachStatus","doNotContact"],"additionalProperties":false,"description":"Identity and verdict only. No profile blob, no campaign membership, no timestamps."}}]},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","offset","total"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","contacts","pagination","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/{id}":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contactsGetFull","x-speakeasy-name-override":"get","summary":"Get a single contact with activities and campaigns","description":"Get full contact details including activities and campaign memberships..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact ID"}],"responses":{"200":{"description":"Contact details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"contact":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...)","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity slug (e.g. joshuaau)","type":"string"},"name":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"notes":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"profileData":{"nullable":true},"profileUpdatedAt":{"nullable":true,"type":"string"},"conversationData":{"nullable":true},"conversationUpdatedAt":{"nullable":true,"type":"string"},"outreachStatus":{"description":"Absent when the contact has no outreach status, which is the common case.","type":"string"},"lastContactedAt":{"nullable":true,"type":"string"},"lastRepliedAt":{"nullable":true,"type":"string"},"doNotContact":{"description":"Present only when true.","type":"boolean"},"lastActivityAt":{"description":"Most recent of replied, contacted, created, or a stage change.","nullable":true,"type":"string"},"avatarUrl":{"description":"Durable avatar URL, R2-backed where available.","nullable":true,"type":"string"},"humanStatus":{"description":"One sentence describing where this contact stands, for a human or a model to read.","type":"string"},"campaigns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"campaignName":{"type":"string"},"source":{"type":"string"},"sourceAngle":{"nullable":true,"type":"string"},"addedAt":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"qualifiedAt":{"nullable":true,"type":"string"},"qualifiedAgainstIcpHash":{"nullable":true,"type":"string"},"qualifiedAgainstIcpPreview":{"nullable":true,"type":"string"},"currentIcpHash":{"description":"The ICP hash in force today. Differs from qualifiedAgainstIcpHash when the ICP has moved since. Computed on /contacts/{id} only.","nullable":true,"type":"string"}},"required":["campaignId","campaignName","source","sourceAngle","addedAt"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"headline":{"nullable":true,"type":"string"},"currentRole":{"nullable":true,"type":"string"},"company":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"connectionDegree":{"nullable":true,"type":"string"},"hasRecentPosts":{"type":"boolean"},"hasRecentComments":{"type":"boolean"},"hasRecentReactions":{"type":"boolean"},"hasAbout":{"type":"boolean"},"educationsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visitFresh":{"description":"Whether the profile snapshot is inside the freshness window.","type":"boolean"},"visitPending":{"description":"Whether a visit is already in flight, so a caller does not queue a second.","type":"boolean"}},"required":["id","linkedinUrl","profileUrn","publicIdentifier","name","lifecycleStage","hotScore","qualificationNotes","leadBrief","notes","stageChangedAt","profileUpdatedAt","conversationUpdatedAt","campaigns","tags","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","contact","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"patch":{"x-bereach":{"agents":["lead_gen","outreach"]},"operationId":"contactsUpdate","x-speakeasy-name-override":"update","summary":"Update a contact","description":"Update optional Fit / not-a-fit, notes, outreach status, tags, or profile data for a person in the list. lifecycleStage, hotScore, qualificationNotes, and leadBrief are per-campaign fields: pass campaignId to scope the write to one campaign, or the request is rejected.","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"campaignId","schema":{"description":"Scopes the write to one list. Omit it: a chat turn writes to the list of the conversation it is in.","type":"string"},"description":"Scopes the write to one list. Omit it: a chat turn writes to the list of the conversation it is in."},{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lifecycleStage":{"description":"Optional Fit / not-a-fit filter. Not an outreach gate. Fit still requires notes and a brief.","type":"string","enum":["contact","lead","qualified","rejected"]},"hotScore":{"type":"integer","minimum":0,"maximum":100},"qualificationNotes":{"type":"string"},"leadBrief":{"description":"Short brief for sales prep","type":"string"},"notes":{"type":"string"},"name":{"description":"Update contact name","type":"string"},"profileData":{"description":"Full LinkedIn profile snapshot (JSON)"},"profileUpdatedAt":{"description":"When profileData was last refreshed","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"conversationData":{"description":"DM history (JSON: historySummary + recentMessages)"},"conversationUpdatedAt":{"description":"When conversationData was last synced","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"outreachStatus":{"description":"Manual outreach status override","type":"string","enum":["none","connection_sent","connected","dm_sent","followed_up","replied","in_conversation","meeting_booked","not_interested"]},"doNotContact":{"description":"Flag contact as do-not-contact","type":"boolean"},"tags":{"description":"Add/remove/set tags","anyOf":[{"type":"object","properties":{"add":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"remove":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}}},"required":["add"]},{"type":"object","properties":{"add":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"remove":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}}},"required":["remove"]},{"type":"object","properties":{"set":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}}},"required":["set"]}]}}}}}},"responses":{"200":{"description":"Updated contact","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"contact":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...)","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity slug (e.g. joshuaau)","type":"string"},"name":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"notes":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"profileData":{"nullable":true},"profileUpdatedAt":{"nullable":true,"type":"string"},"conversationData":{"nullable":true},"conversationUpdatedAt":{"nullable":true,"type":"string"},"outreachStatus":{"description":"Absent when the contact has no outreach status, which is the common case.","type":"string"},"lastContactedAt":{"nullable":true,"type":"string"},"lastRepliedAt":{"nullable":true,"type":"string"},"doNotContact":{"description":"Present only when true.","type":"boolean"},"lastActivityAt":{"description":"Most recent of replied, contacted, created, or a stage change.","nullable":true,"type":"string"},"avatarUrl":{"description":"Durable avatar URL, R2-backed where available.","nullable":true,"type":"string"},"humanStatus":{"description":"One sentence describing where this contact stands, for a human or a model to read.","type":"string"},"campaigns":{"description":"Every campaign this contact belongs to. Lifecycle is per-campaign, so this is where membership lives.","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"campaignName":{"type":"string"},"campaignChatThreadId":{"nullable":true,"type":"string"},"origin":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"sourceAngle":{"nullable":true,"type":"string"},"addedAt":{"type":"string"}},"required":["campaignId"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","linkedinUrl","profileUrn","publicIdentifier","name","lifecycleStage","hotScore","qualificationNotes","leadBrief","notes","stageChangedAt","profileUpdatedAt","conversationUpdatedAt","tags","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","contact","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/{id}/activities":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contactsGetActivities","x-speakeasy-name-override":"listActivities","summary":"List activities for a contact","description":"Get paginated activity log for a SPECIFIC contact. Requires contact id (path param) — cannot list activities for all contacts. Call contacts_search first to get the contact id, then call this with that id.","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"type","schema":{"description":"Filter by activity type","type":"string"},"description":"Filter by activity type"},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact ID"}],"responses":{"200":{"description":"Contact activities","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"activities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"content":{"nullable":true,"type":"string"},"metadata":{"nullable":true},"createdAt":{"type":"string"}},"required":["id","type","content","createdAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","offset","total"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","activities","pagination","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"post":{"x-bereach":{"agents":["lead_gen","outreach"]},"operationId":"contactsLogActivity","x-speakeasy-name-override":"addActivities","summary":"Log activities for a contact","description":"Log one or more activities (e.g. message_sent, profile_visited, post_liked) for a contact. Max 100 per request..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Contact ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activities":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["connection_request","message","connection_accepted","profile_view","engagement_observed","post_interaction","search_found","qualification","stage_change","user_interest","meeting_booked","meeting_completed","meeting_cancelled","do_not_contact"],"description":"Activity type"},"content":{"description":"Human-readable description of what happened","type":"string"},"metadata":{"description":"Structured data: postUrl, postAuthor, angle, distance, etc."}},"required":["type"]},"description":"Activities to log"}},"required":["activities"]}}}},"responses":{"200":{"description":"Activities logged","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","created","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/bulk":{"patch":{"x-bereach":{"agents":["lead_gen"]},"operationId":"discardContacts","x-speakeasy-name-override":"discard","summary":"Discard or restore people, in bulk","description":"Mark people not a fit, or bring them back, in one call instead of looping per person. Max 500 people per request. To discard named or picked people, set update.lifecycleStage to \"rejected\" (optionally with update.qualificationNotes explaining why) — discarding is reversible, it never deletes the contact, and the row still shows up in the list marked as not a fit. To undo a named not-a-fit mark, set update.lifecycleStage to \"contact\". A described rule is not a write: peek then propose with filter_contacts intent:\"discard\" or exceptContactIds. The write lands on this conversation's own list; you never need to name one.","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"campaignId","schema":{"description":"Scopes the write to one list. Omit it: a chat turn writes to the list of the conversation it is in.","type":"string"},"description":"Scopes the write to one list. Omit it: a chat turn writes to the list of the conversation it is in."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactIds":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string"},"description":"Contact IDs to update"},"update":{"type":"object","properties":{"lifecycleStage":{"type":"string","enum":["contact","lead","qualified","rejected"]},"hotScore":{"type":"integer","minimum":0,"maximum":100},"qualificationNotes":{"type":"string"},"leadBrief":{"type":"string"},"notes":{"type":"string"},"outreachStatus":{"type":"string","enum":["none","connection_sent","connected","dm_sent","followed_up","replied","in_conversation","meeting_booked","not_interested"]},"doNotContact":{"type":"boolean"},"tags":{"anyOf":[{"type":"object","properties":{"add":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"remove":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}}},"required":["add"]},{"type":"object","properties":{"add":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}},"remove":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}}},"required":["remove"]},{"type":"object","properties":{"set":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":100}}},"required":["set"]}],"description":"Tag operations: { add, remove } or { set }"}},"description":"Fields to update on all matching contacts"}},"required":["contactIds","update"]}}}},"responses":{"200":{"description":"Bulk update results","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"updated":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"array","items":{"type":"string"}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","updated","skipped","errors","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/stats":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contactsStats","x-speakeasy-name-override":"stats","summary":"Get contact funnel statistics","description":"Counts for the list: Fit, not a fit, source, and daily trends.","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"campaignId","schema":{"description":"Filter stats by campaign","type":"string"},"description":"Filter stats by campaign"}],"responses":{"200":{"description":"Contact statistics","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"funnel":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected"],"additionalProperties":false},"bySource":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"bySourceAngle":{"type":"object","additionalProperties":{"type":"object","properties":{"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["total","contact","lead","qualified","rejected"],"additionalProperties":false}},"byCampaign":{"type":"object","additionalProperties":{"type":"object","properties":{"name":{"type":"string"},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","total","contact","lead","qualified","rejected"],"additionalProperties":false}},"daily":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["date","created"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","funnel","bySource","bySourceAngle","byCampaign","daily","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contactsListCampaigns","x-speakeasy-name-override":"listCampaigns","summary":"List campaigns","description":"List campaigns with optional filters and stage counts..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"type","schema":{"type":"string","enum":["outreach","lead_gen","lead_magnet"]}},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Campaigns list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"campaigns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Campaign unique ID (nanoid). Use this as campaignSlug in API calls."},"name":{"type":"string","description":"Human-readable campaign name."},"slug":{"description":"URL-safe slug auto-generated from name.","nullable":true,"type":"string"},"description":{"nullable":true,"description":"Optional user-facing campaign description.","type":"string"},"status":{"type":"string","description":"Campaign status: draft, scheduled, running, paused, completed, or archived. Never trust this alone for whether the campaign can make progress — read `blocks`."},"blocks":{"description":"Fresh-computed reasons this campaign cannot make progress right now, if any. Empty or absent means nothing is blocking it.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["linkedin_disconnected","icp_missing","not_configured","plan_limit","provider_down"]},"severity":{"type":"string","enum":["block","warn"]},"transient":{"type":"boolean"},"title":{"type":"string","description":"User-facing one-liner for why the campaign is blocked."},"fixHint":{"type":"string","description":"How to fix it, plain language."},"fixUrl":{"type":"string","description":"Where to fix it."},"credentialsId":{"description":"`linkedin_disconnected`: the dead account's credential ID.","type":"string"},"accountName":{"type":"string"}},"required":["kind","severity","title","fixHint","fixUrl"],"additionalProperties":false}},"totalContacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people are on this list, including removed."},"scheduledStartTime":{"description":"Daily start time (HH:MM)","nullable":true,"type":"string"},"scheduledStopTime":{"description":"Daily stop time (HH:MM)","nullable":true,"type":"string"},"timezone":{"description":"IANA timezone","nullable":true,"type":"string"},"runDays":{"description":"Days to run (e.g. ['monday','tuesday'])","nullable":true,"type":"array","items":{"type":"string"}},"dailyActionLimit":{"description":"Max actions per day","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"description":"When campaign was first started","nullable":true,"type":"string"},"completedAt":{"description":"When campaign was completed","nullable":true,"type":"string"},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review","autopilot"]},"stageCounts":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected"],"additionalProperties":false},"language":{"nullable":true,"type":"string"},"icpContextId":{"description":"The ICP this campaign judges against.","nullable":true,"type":"string"},"disabledTasks":{"description":"Task kinds switched off on this campaign.","type":"array","items":{"type":"string"}},"hiddenIdentities":{"description":"Contacts held back because their identity could not be resolved.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTaskAt":{"nullable":true,"type":"string"},"nextAction":{"description":"What the engine intends to do next, or null when it is not waiting on anything.","nullable":true},"leadCapacity":{"description":"Whether this campaign can still reach new people, and from how many live sources.","nullable":true,"type":"object","properties":{"potential":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","status","totalContacts","createdAt","updatedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","offset","total"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","campaigns","pagination","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"post":{"x-bereach":{"agents":["orchestrator","lead_gen"]},"operationId":"contactsCreateCampaign","x-speakeasy-name-override":"createCampaign","summary":"Create a lead-gen campaign","description":"Create a campaign with optional agent context (markdown brief)..","tags":["contacts"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"Human-readable campaign name. Use a clear, descriptive title. Do NOT use slugs or technical IDs."},"description":{"description":"Optional campaign description","type":"string","maxLength":1000},"language":{"description":"ISO 639-1 language code (e.g. 'fr', 'en'). Overrides ASCII heuristic for AI task language.","type":"string","maxLength":10},"force":{"description":"Bypass the duplicate-name guard. Normally the endpoint returns 409 with a `suggested` existing campaign when `name` is within Levenshtein 2 of one. Pass `force: true` after the agent has surfaced the suggestion to the user and they explicitly confirmed they want a second campaign with a similar name. Default: false.","type":"boolean"},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review"]}},"required":["name"]}}}},"responses":{"201":{"description":"Campaign created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"campaign":{"type":"object","properties":{"id":{"type":"string","description":"Campaign unique ID (nanoid). Use this as campaignSlug in API calls."},"name":{"type":"string","description":"Human-readable campaign name."},"slug":{"description":"URL-safe slug auto-generated from name.","nullable":true,"type":"string"},"description":{"nullable":true,"description":"Optional user-facing campaign description.","type":"string"},"status":{"type":"string","description":"Campaign status: draft, scheduled, running, paused, completed, or archived. Never trust this alone for whether the campaign can make progress — read `blocks`."},"blocks":{"description":"Fresh-computed reasons this campaign cannot make progress right now, if any. Empty or absent means nothing is blocking it.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["linkedin_disconnected","icp_missing","not_configured","plan_limit","provider_down"]},"severity":{"type":"string","enum":["block","warn"]},"transient":{"type":"boolean"},"title":{"type":"string","description":"User-facing one-liner for why the campaign is blocked."},"fixHint":{"type":"string","description":"How to fix it, plain language."},"fixUrl":{"type":"string","description":"Where to fix it."},"credentialsId":{"description":"`linkedin_disconnected`: the dead account's credential ID.","type":"string"},"accountName":{"type":"string"}},"required":["kind","severity","title","fixHint","fixUrl"],"additionalProperties":false}},"totalContacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people are on this list, including removed."},"scheduledStartTime":{"description":"Daily start time (HH:MM)","nullable":true,"type":"string"},"scheduledStopTime":{"description":"Daily stop time (HH:MM)","nullable":true,"type":"string"},"timezone":{"description":"IANA timezone","nullable":true,"type":"string"},"runDays":{"description":"Days to run (e.g. ['monday','tuesday'])","nullable":true,"type":"array","items":{"type":"string"}},"dailyActionLimit":{"description":"Max actions per day","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"description":"When campaign was first started","nullable":true,"type":"string"},"completedAt":{"description":"When campaign was completed","nullable":true,"type":"string"},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review","autopilot"]},"stageCounts":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected"],"additionalProperties":false},"language":{"nullable":true,"type":"string"},"icpContextId":{"description":"The ICP this campaign judges against.","nullable":true,"type":"string"},"disabledTasks":{"description":"Task kinds switched off on this campaign.","type":"array","items":{"type":"string"}},"hiddenIdentities":{"description":"Contacts held back because their identity could not be resolved.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTaskAt":{"nullable":true,"type":"string"},"nextAction":{"description":"What the engine intends to do next, or null when it is not waiting on anything.","nullable":true},"leadCapacity":{"description":"Whether this campaign can still reach new people, and from how many live sources.","nullable":true,"type":"object","properties":{"potential":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","status","totalContacts","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","campaign","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns/{campaignId}":{"get":{"x-bereach":{"agents":["orchestrator"]},"operationId":"contactsGetCampaign","x-speakeasy-name-override":"getCampaign","summary":"Get a single campaign","description":"Get a campaign by ID with full details..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"responses":{"200":{"description":"Campaign details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"campaign":{"type":"object","properties":{"id":{"type":"string","description":"Campaign unique ID (nanoid). Use this as campaignSlug in API calls."},"name":{"type":"string","description":"Human-readable campaign name."},"slug":{"description":"URL-safe slug auto-generated from name.","nullable":true,"type":"string"},"description":{"nullable":true,"description":"Optional user-facing campaign description.","type":"string"},"status":{"type":"string","description":"Campaign status: draft, scheduled, running, paused, completed, or archived. Never trust this alone for whether the campaign can make progress — read `blocks`."},"blocks":{"description":"Fresh-computed reasons this campaign cannot make progress right now, if any. Empty or absent means nothing is blocking it.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["linkedin_disconnected","icp_missing","not_configured","plan_limit","provider_down"]},"severity":{"type":"string","enum":["block","warn"]},"transient":{"type":"boolean"},"title":{"type":"string","description":"User-facing one-liner for why the campaign is blocked."},"fixHint":{"type":"string","description":"How to fix it, plain language."},"fixUrl":{"type":"string","description":"Where to fix it."},"credentialsId":{"description":"`linkedin_disconnected`: the dead account's credential ID.","type":"string"},"accountName":{"type":"string"}},"required":["kind","severity","title","fixHint","fixUrl"],"additionalProperties":false}},"totalContacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people are on this list, including removed."},"scheduledStartTime":{"description":"Daily start time (HH:MM)","nullable":true,"type":"string"},"scheduledStopTime":{"description":"Daily stop time (HH:MM)","nullable":true,"type":"string"},"timezone":{"description":"IANA timezone","nullable":true,"type":"string"},"runDays":{"description":"Days to run (e.g. ['monday','tuesday'])","nullable":true,"type":"array","items":{"type":"string"}},"dailyActionLimit":{"description":"Max actions per day","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"description":"When campaign was first started","nullable":true,"type":"string"},"completedAt":{"description":"When campaign was completed","nullable":true,"type":"string"},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review","autopilot"]},"stageCounts":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected"],"additionalProperties":false},"language":{"nullable":true,"type":"string"},"icpContextId":{"description":"The ICP this campaign judges against.","nullable":true,"type":"string"},"disabledTasks":{"description":"Task kinds switched off on this campaign.","type":"array","items":{"type":"string"}},"hiddenIdentities":{"description":"Contacts held back because their identity could not be resolved.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTaskAt":{"nullable":true,"type":"string"},"nextAction":{"description":"What the engine intends to do next, or null when it is not waiting on anything.","nullable":true},"leadCapacity":{"description":"Whether this campaign can still reach new people, and from how many live sources.","nullable":true,"type":"object","properties":{"potential":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","status","totalContacts","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","campaign","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"patch":{"x-bereach":{"agents":["orchestrator","lead_gen"]},"operationId":"contactsUpdateCampaign","x-speakeasy-name-override":"updateCampaign","summary":"Update campaign settings","description":"Update campaign name, description, context, schedule, or daily targets. NEVER pass `status` here — the server rejects it; use campaign_transition for start/pause/resume/complete/reset..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","maxLength":1000},"status":{"type":"string","enum":["draft","scheduled","running","paused","completed","failed"]},"scheduledStartTime":{"type":"string"},"scheduledStopTime":{"type":"string"},"timezone":{"type":"string"},"runDays":{"minItems":1,"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Days the campaign runs user-action tasks. Use lowercase day names (e.g. monday, tuesday); pick at least one."},"dailyActionLimit":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"dailyTarget":{"nullable":true,"type":"integer","minimum":1,"maximum":9007199254740991},"totalTarget":{"nullable":true,"type":"integer","minimum":1,"maximum":9007199254740991},"disabledTaskTypes":{"description":"Lane slugs to disable (e.g. ['discover-qualify']). Set to [] to re-enable all.","type":"array","items":{"type":"string"}},"language":{"description":"ISO 639-1 language code (e.g. 'fr', 'en'). Overrides ASCII heuristic for AI task language.","type":"string","maxLength":10},"qualifyThreshold":{"type":"integer","minimum":0,"maximum":100},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review"]}}}}}},"responses":{"200":{"description":"Campaign updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"campaign":{"type":"object","properties":{"id":{"type":"string","description":"Campaign unique ID (nanoid). Use this as campaignSlug in API calls."},"name":{"type":"string","description":"Human-readable campaign name."},"slug":{"description":"URL-safe slug auto-generated from name.","nullable":true,"type":"string"},"description":{"nullable":true,"description":"Optional user-facing campaign description.","type":"string"},"status":{"type":"string","description":"Campaign status: draft, scheduled, running, paused, completed, or archived. Never trust this alone for whether the campaign can make progress — read `blocks`."},"blocks":{"description":"Fresh-computed reasons this campaign cannot make progress right now, if any. Empty or absent means nothing is blocking it.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["linkedin_disconnected","icp_missing","not_configured","plan_limit","provider_down"]},"severity":{"type":"string","enum":["block","warn"]},"transient":{"type":"boolean"},"title":{"type":"string","description":"User-facing one-liner for why the campaign is blocked."},"fixHint":{"type":"string","description":"How to fix it, plain language."},"fixUrl":{"type":"string","description":"Where to fix it."},"credentialsId":{"description":"`linkedin_disconnected`: the dead account's credential ID.","type":"string"},"accountName":{"type":"string"}},"required":["kind","severity","title","fixHint","fixUrl"],"additionalProperties":false}},"totalContacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people are on this list, including removed."},"scheduledStartTime":{"description":"Daily start time (HH:MM)","nullable":true,"type":"string"},"scheduledStopTime":{"description":"Daily stop time (HH:MM)","nullable":true,"type":"string"},"timezone":{"description":"IANA timezone","nullable":true,"type":"string"},"runDays":{"description":"Days to run (e.g. ['monday','tuesday'])","nullable":true,"type":"array","items":{"type":"string"}},"dailyActionLimit":{"description":"Max actions per day","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"description":"When campaign was first started","nullable":true,"type":"string"},"completedAt":{"description":"When campaign was completed","nullable":true,"type":"string"},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review","autopilot"]},"stageCounts":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected"],"additionalProperties":false},"language":{"nullable":true,"type":"string"},"icpContextId":{"description":"The ICP this campaign judges against.","nullable":true,"type":"string"},"disabledTasks":{"description":"Task kinds switched off on this campaign.","type":"array","items":{"type":"string"}},"hiddenIdentities":{"description":"Contacts held back because their identity could not be resolved.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTaskAt":{"nullable":true,"type":"string"},"nextAction":{"description":"What the engine intends to do next, or null when it is not waiting on anything.","nullable":true},"leadCapacity":{"description":"Whether this campaign can still reach new people, and from how many live sources.","nullable":true,"type":"object","properties":{"potential":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","status","totalContacts","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","campaign","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"delete":{"operationId":"contactsDeleteCampaign","x-speakeasy-name-override":"deleteCampaign","summary":"Delete a campaign","description":"Delete a campaign. Campaign contacts are cascade-deleted but contacts themselves survive..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"responses":{"200":{"description":"Campaign deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns/{campaignId}/status":{"post":{"x-bereach":{"agents":["orchestrator"]},"operationId":"campaignTransition","x-speakeasy-name-override":"campaignStatusTransition","summary":"Campaign state transition","description":"Transition a campaign between states: activate, start, pause, resume, complete, reset..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["play","pause","complete","reset"]},"scheduledStartTime":{"type":"string"},"scheduledStopTime":{"type":"string"},"timezone":{"type":"string"},"runDays":{"minItems":1,"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"description":"Days the campaign runs user-action tasks. Use lowercase day names (e.g. monday, tuesday); pick at least one."},"dailyActionLimit":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["action"]}}}},"responses":{"200":{"description":"Status updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"campaign":{"type":"object","properties":{"id":{"type":"string","description":"Campaign unique ID (nanoid). Use this as campaignSlug in API calls."},"name":{"type":"string","description":"Human-readable campaign name."},"slug":{"description":"URL-safe slug auto-generated from name.","nullable":true,"type":"string"},"description":{"nullable":true,"description":"Optional user-facing campaign description.","type":"string"},"status":{"type":"string","description":"Campaign status: draft, scheduled, running, paused, completed, or archived. Never trust this alone for whether the campaign can make progress — read `blocks`."},"blocks":{"description":"Fresh-computed reasons this campaign cannot make progress right now, if any. Empty or absent means nothing is blocking it.","type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["linkedin_disconnected","icp_missing","not_configured","plan_limit","provider_down"]},"severity":{"type":"string","enum":["block","warn"]},"transient":{"type":"boolean"},"title":{"type":"string","description":"User-facing one-liner for why the campaign is blocked."},"fixHint":{"type":"string","description":"How to fix it, plain language."},"fixUrl":{"type":"string","description":"Where to fix it."},"credentialsId":{"description":"`linkedin_disconnected`: the dead account's credential ID.","type":"string"},"accountName":{"type":"string"}},"required":["kind","severity","title","fixHint","fixUrl"],"additionalProperties":false}},"totalContacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people are on this list, including removed."},"scheduledStartTime":{"description":"Daily start time (HH:MM)","nullable":true,"type":"string"},"scheduledStopTime":{"description":"Daily stop time (HH:MM)","nullable":true,"type":"string"},"timezone":{"description":"IANA timezone","nullable":true,"type":"string"},"runDays":{"description":"Days to run (e.g. ['monday','tuesday'])","nullable":true,"type":"array","items":{"type":"string"}},"dailyActionLimit":{"description":"Max actions per day","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"startedAt":{"description":"When campaign was first started","nullable":true,"type":"string"},"completedAt":{"description":"When campaign was completed","nullable":true,"type":"string"},"draftMode":{"description":"Drafted messages wait for a human to approve them before they may send.","type":"string","enum":["review","autopilot"]},"stageCounts":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected"],"additionalProperties":false},"language":{"nullable":true,"type":"string"},"icpContextId":{"description":"The ICP this campaign judges against.","nullable":true,"type":"string"},"disabledTasks":{"description":"Task kinds switched off on this campaign.","type":"array","items":{"type":"string"}},"hiddenIdentities":{"description":"Contacts held back because their identity could not be resolved.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastTaskAt":{"nullable":true,"type":"string"},"nextAction":{"description":"What the engine intends to do next, or null when it is not waiting on anything.","nullable":true},"leadCapacity":{"description":"Whether this campaign can still reach new people, and from how many live sources.","nullable":true,"type":"object","properties":{"potential":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"collected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeSources":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","status","totalContacts","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","campaign","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns/{campaignId}/pending-summary":{"get":{"operationId":"contactsPendingSummary","x-speakeasy-name-override":"pendingSummary","summary":"Pending actions summary","description":"Live counts of pending work on a campaign: scheduled sends, drafts awaiting review, sending/in-flight tasks. Used by the UI to render the cancel-pending confirmation modal..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"responses":{"200":{"description":"Pending counts","content":{"application/json":{"schema":{"type":"object","properties":{"campaign":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"nullable":true,"type":"string"},"status":{"type":"string"}},"required":["id","name","slug","status"],"additionalProperties":false},"drafts":{"type":"integer","minimum":0,"maximum":9007199254740991},"scheduled":{"type":"integer","minimum":0,"maximum":9007199254740991},"sending":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalPending":{"type":"integer","minimum":0,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["campaign","drafts","scheduled","sending","totalPending","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns/{campaignId}/cancel-pending":{"post":{"operationId":"campaignCancelActions","x-speakeasy-name-override":"cancelCampaignActions","summary":"Cancel all pending actions on a campaign","description":"Cancels scheduled sends and drafts awaiting review for a campaign. Does NOT change campaign status — orthogonal to pause. Destructive.","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"responses":{"200":{"description":"Pending actions cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"cancelled":{"type":"boolean","enum":[true]},"scheduledMessagesCancelled":{"type":"integer","minimum":0,"maximum":9007199254740991},"draftsCancelled":{"type":"integer","minimum":0,"maximum":9007199254740991},"campaign":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"nullable":true,"type":"string"}},"required":["id","name","slug"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["cancelled","scheduledMessagesCancelled","draftsCancelled","campaign","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns/{campaignId}/contacts":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contactsList","x-speakeasy-name-override":"listByCampaign","summary":"List contacts in a campaign","description":"List contacts in a campaign with optional filters..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"lifecycleStage","schema":{"type":"string","enum":["contact","lead","qualified","rejected"]}},{"in":"query","name":"source","schema":{"type":"string"}},{"in":"query","name":"sourceAngle","schema":{"type":"string"}},{"in":"query","name":"minHotScore","schema":{"type":"integer","minimum":0,"maximum":100}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"responses":{"200":{"description":"Campaign contacts","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"contacts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...)","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity slug (e.g. joshuaau)","type":"string"},"name":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"notes":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"profileData":{"nullable":true},"profileUpdatedAt":{"nullable":true,"type":"string"},"conversationData":{"nullable":true},"conversationUpdatedAt":{"nullable":true,"type":"string"},"outreachStatus":{"description":"Absent when the contact has no outreach status, which is the common case.","type":"string"},"lastContactedAt":{"nullable":true,"type":"string"},"lastRepliedAt":{"nullable":true,"type":"string"},"doNotContact":{"description":"Present only when true.","type":"boolean"},"lastActivityAt":{"description":"Most recent of replied, contacted, created, or a stage change.","nullable":true,"type":"string"},"avatarUrl":{"description":"Durable avatar URL, R2-backed where available.","nullable":true,"type":"string"},"humanStatus":{"description":"One sentence describing where this contact stands, for a human or a model to read.","type":"string"},"campaigns":{"description":"Every campaign this contact belongs to. Lifecycle is per-campaign, so this is where membership lives.","type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"campaignName":{"type":"string"},"campaignChatThreadId":{"nullable":true,"type":"string"},"origin":{"nullable":true,"type":"string"},"source":{"nullable":true,"type":"string"},"sourceAngle":{"nullable":true,"type":"string"},"addedAt":{"type":"string"}},"required":["campaignId"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"source":{"type":"string"},"sourceAngle":{"nullable":true,"type":"string"},"addedAt":{"type":"string"}},"required":["id","linkedinUrl","profileUrn","publicIdentifier","name","lifecycleStage","hotScore","qualificationNotes","leadBrief","notes","stageChangedAt","profileUpdatedAt","conversationUpdatedAt","tags","createdAt","updatedAt","source","sourceAngle","addedAt"],"additionalProperties":false}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","offset","total"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","contacts","pagination","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"post":{"x-bereach":{"agents":["orchestrator","lead_gen"]},"operationId":"contactsAdd","x-speakeasy-name-override":"addToCampaign","summary":"Add contacts to a campaign","description":"Add contacts to a campaign (up to 500). Deduplicates by LinkedIn URL..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"schema":{"type":"string"},"description":"Campaign ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contacts":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"linkedinUrl":{"type":"string","description":"LinkedIn profile URL, URN, or bare vanity name"},"profileUrn":{"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...). Improves dedup when provided alongside a vanity URL.","nullable":true,"type":"string"},"publicIdentifier":{"description":"LinkedIn vanity slug (e.g. joshuaau). Improves dedup when provided alongside a URN.","nullable":true,"type":"string"},"name":{"type":"string","description":"Profile name"},"source":{"default":"manual_import","description":"How this contact was found. Optional for organic creation (defaults to manual_import), required for campaign-based addition. Unknown values default to manual_import.","type":"string","enum":["likes","comments","reposts","posts","company_followers","search_results","manual_import","event_attendees","group_members","engagement_scraping","content_search","followers_mining","people_search","job_search","company_search","network_expansion","bulk_visit"]},"sourceAngle":{"description":"Which lead-gen angle found this (e.g., 'vp-sales-france')","type":"string"},"lifecycleStage":{"description":"Optional Fit label. Defaults to ungraded on creation. Omit when adding someone already in the list.","type":"string","enum":["contact","lead","qualified","rejected"]},"hotScore":{"description":"Contact quality score (0-100)","type":"integer","minimum":0,"maximum":100},"qualificationNotes":{"description":"Agent reasoning for qualification decision","type":"string"},"leadBrief":{"description":"Short brief for sales prep (2-3 sentences)","type":"string"},"notes":{"type":"string"}},"required":["linkedinUrl","name"]},"description":"Contacts to add (single or bulk)"}},"required":["contacts"]}}}},"responses":{"201":{"description":"Contacts added","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"results":{"type":"object","properties":{"created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"errors":{"type":"array","items":{"type":"string"}}},"required":["created","skipped","errors"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","results","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/campaigns/{campaignId}/health":{"get":{"operationId":"campaignHealth","x-speakeasy-name-override":"getCampaignHealth","summary":"Diagnose campaign health","description":"Returns real-time health status for a campaign: 13 blocker checks (status, ICP, credentials, interval, limits, business hours, circuit breaker), pipeline stats, success rate, and recent dispatch log.","tags":["campaigns"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"path","required":true,"description":"Campaign ID","schema":{"type":"string"}}],"responses":{"200":{"description":"Campaign health diagnostics","content":{"application/json":{"schema":{"type":"object","properties":{"campaign":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"},"schedule":{"type":"string","description":"Business hours window (e.g. '09:00-18:00')"},"timezone":{"type":"string"},"runDays":{"type":"array","items":{"type":"string"}},"dailyTarget":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"totalTarget":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","status","schedule","timezone","runDays","dailyTarget","totalTarget"],"additionalProperties":false},"blockers":{"type":"array","items":{"type":"object","properties":{"check":{"type":"string","description":"Check name (e.g. campaign_status, icp_context, credential_valid, business_hours)"},"blocking":{"type":"boolean","description":"True if this check is currently blocking dispatch"},"details":{"type":"string","description":"Human-readable details about the check result"}},"required":["check","blocking","details"],"additionalProperties":false}},"pipeline":{"type":"object","properties":{"lastTask":{"nullable":true,"type":"object","properties":{"type":{"type":"string"},"status":{"type":"string"},"completedAt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"}},"required":["type","status","completedAt","createdAt"],"additionalProperties":false},"todayCount":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"successRate24h":{"nullable":true,"description":"Success rate % over last 24h (null if no data)","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["lastTask","todayCount","successRate24h"],"additionalProperties":false},"recentSkips":{"type":"array","items":{},"description":"Recent task skip reasons that prevented dispatch to contacts"}},"required":["campaign","blockers","pipeline","recentSkips"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/issues":{"get":{"x-bereach":{"agents":[]},"operationId":"getIssues","summary":"List active issues blocking campaign progress","description":"Unified read of campaign issues — capability gaps (missing ICP/playbook), AI provider auth/billing trips, LinkedIn session expired, dispatch skip-reasons, and rate limits — all collapsed into one shape with category and severity. Pass `campaignId` to scope to a single campaign. Routine pacing (business hours, target reached, chain in progress) is intentionally NOT surfaced.","tags":["issues"],"security":[{"token":[]}],"parameters":[{"name":"campaignId","in":"query","required":false,"description":"Restrict to issues touching one campaign (id or slug).","schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"description":"active (default) hides resolved; all includes them.","schema":{"type":"string","enum":["active","all"]}},{"name":"categories","in":"query","required":false,"description":"Comma-separated subset of categories (e.g. `auth,billing,rate-limit` for header banners).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max issues to return (default 30, max 50).","schema":{"type":"integer"}},{"name":"verbose","in":"query","required":false,"description":"Include the raw fields (default false, which omits them). The parameter used to promise evidence too; there was never an evidence field.","schema":{"type":"boolean"}},{"name":"feed","in":"query","required":false,"description":"Set to `ranked` for the banner's single-most-important view: one issue plus the rest, already ordered. It replaces the flat list rather than filtering it, so the response shape differs.","schema":{"type":"string","enum":["ranked"]}}],"responses":{"200":{"description":"Active issues for the user (and optionally a single campaign).","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean"},"feed":{"type":"object","properties":{"top":{"nullable":true,"description":"The one worth showing, or null when there is nothing to show.","type":"object","properties":{"id":{"type":"string"},"family":{"type":"string","description":"Which family of problem this is, which drives the banner's tone."},"category":{"type":"string","description":"The underlying block kind."},"severity":{"type":"string","enum":["info","warn","block"]},"title":{"type":"string"},"reason":{"type":"string","description":"What to do about it, in a sentence."},"ctaLabel":{"type":"string"},"ctaUrl":{"type":"string"},"whenNextMs":{"description":"How long until this clears on its own, when it will.","type":"number"},"campaignId":{"type":"string"},"campaignName":{"type":"string"},"firstSeenAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSeenAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","family","category","severity","title","reason","firstSeenAt","lastSeenAt"],"additionalProperties":false},"others":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"family":{"type":"string","description":"Which family of problem this is, which drives the banner's tone."},"category":{"type":"string","description":"The underlying block kind."},"severity":{"type":"string","enum":["info","warn","block"]},"title":{"type":"string"},"reason":{"type":"string","description":"What to do about it, in a sentence."},"ctaLabel":{"type":"string"},"ctaUrl":{"type":"string"},"whenNextMs":{"description":"How long until this clears on its own, when it will.","type":"number"},"campaignId":{"type":"string"},"campaignName":{"type":"string"},"firstSeenAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSeenAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","family","category","severity","title","reason","firstSeenAt","lastSeenAt"],"additionalProperties":false}},"totalCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["top","others","totalCount"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","feed","creditsUsed","retryAfter"],"additionalProperties":false},{"type":"object","properties":{"success":{"type":"boolean"},"issues":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"campaignId":{"type":"string"},"campaignName":{"type":"string"},"source":{"type":"string","enum":["skip-reason","capability-gap","circuit","campaign-state","credential","lifecycle"]},"category":{"type":"string","enum":["missing-context","auth","billing","rate-limit","no-work","config","infra","stalled"]},"severity":{"type":"string","enum":["info","warn","block"]},"state":{"type":"string","enum":["active","resolved","snoozed"]},"dedupeKey":{"type":"string","description":"Stable identity for cross-producer dedupe — `${category}:${campaignId|user}`, optionally suffixed with `:${reasonFamily}` for `missing-context` so distinct user actions stay separate."},"summary":{"type":"string"},"fixHint":{"type":"string"},"fixUrl":{"type":"string"},"firstSeenAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSeenAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolvedAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resolvedBy":{"type":"string","enum":["manual","auto","sweep"]},"raw":{"type":"object","additionalProperties":{}}},"required":["id","source","category","severity","state","dedupeKey","summary","firstSeenAt","lastSeenAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total matching issues before limit"},"hasMore":{"type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","issues","total","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}]}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/contacts/by-url":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contactsGetByUrl","x-speakeasy-name-override":"getByUrl","summary":"Look up contact by LinkedIn URL","description":"Find a contact by LinkedIn URL. Returns full contact with activities and campaign memberships..","tags":["contacts"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"linkedinUrl","schema":{"type":"string","description":"LinkedIn profile URL to look up"},"required":true,"description":"LinkedIn profile URL to look up"}],"responses":{"200":{"description":"Contact found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"contact":{"type":"object","properties":{"id":{"type":"string"},"linkedinUrl":{"type":"string"},"profileUrn":{"nullable":true,"description":"LinkedIn profile URN (e.g. urn:li:fsd_profile:ACoAAA...)","type":"string"},"publicIdentifier":{"nullable":true,"description":"LinkedIn vanity slug (e.g. joshuaau)","type":"string"},"name":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"notes":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"profileData":{"nullable":true},"profileUpdatedAt":{"nullable":true,"type":"string"},"conversationData":{"nullable":true},"conversationUpdatedAt":{"nullable":true,"type":"string"},"outreachStatus":{"description":"Absent when the contact has no outreach status, which is the common case.","type":"string"},"lastContactedAt":{"nullable":true,"type":"string"},"lastRepliedAt":{"nullable":true,"type":"string"},"doNotContact":{"description":"Present only when true.","type":"boolean"},"lastActivityAt":{"description":"Most recent of replied, contacted, created, or a stage change.","nullable":true,"type":"string"},"avatarUrl":{"description":"Durable avatar URL, R2-backed where available.","nullable":true,"type":"string"},"humanStatus":{"description":"One sentence describing where this contact stands, for a human or a model to read.","type":"string"},"campaigns":{"type":"array","items":{"type":"object","properties":{"campaignId":{"type":"string"},"campaignName":{"type":"string"},"source":{"type":"string"},"sourceAngle":{"nullable":true,"type":"string"},"addedAt":{"type":"string"},"lifecycleStage":{"type":"string"},"hotScore":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualificationNotes":{"nullable":true,"type":"string"},"leadBrief":{"nullable":true,"type":"string"},"stageChangedAt":{"nullable":true,"type":"string"},"qualifiedAt":{"nullable":true,"type":"string"},"qualifiedAgainstIcpHash":{"nullable":true,"type":"string"},"qualifiedAgainstIcpPreview":{"nullable":true,"type":"string"},"currentIcpHash":{"description":"The ICP hash in force today. Differs from qualifiedAgainstIcpHash when the ICP has moved since. Computed on /contacts/{id} only.","nullable":true,"type":"string"}},"required":["campaignId","campaignName","source","sourceAngle","addedAt"],"additionalProperties":false}},"tags":{"type":"array","items":{"type":"string"}},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"headline":{"nullable":true,"type":"string"},"currentRole":{"nullable":true,"type":"string"},"company":{"nullable":true,"type":"string"},"location":{"nullable":true,"type":"string"},"connectionDegree":{"nullable":true,"type":"string"},"hasRecentPosts":{"type":"boolean"},"hasRecentComments":{"type":"boolean"},"hasRecentReactions":{"type":"boolean"},"hasAbout":{"type":"boolean"},"educationsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visitFresh":{"description":"Whether the profile snapshot is inside the freshness window.","type":"boolean"},"visitPending":{"description":"Whether a visit is already in flight, so a caller does not queue a second.","type":"boolean"}},"required":["id","linkedinUrl","profileUrn","publicIdentifier","name","lifecycleStage","hotScore","qualificationNotes","leadBrief","notes","stageChangedAt","profileUpdatedAt","conversationUpdatedAt","campaigns","tags","createdAt","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","contact","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/switch-account":{"post":{"operationId":"switchAccount","x-speakeasy-name-override":"switchAccount","summary":"Switch active LinkedIn account","description":"Switch the active LinkedIn account. All subsequent API calls will use the selected account's credentials.","tags":["profile"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"credentialsId":"clxyz1234"},"schema":{"type":"object","properties":{"credentialsId":{"type":"string","minLength":1,"description":"The LinkedIn credentials ID to switch to (from listAccounts)"}},"required":["credentialsId"]}}}},"responses":{"200":{"description":"Account switched","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"account":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"avatar":{"nullable":true,"type":"string"},"plan":{"type":"string"}},"required":["id","name","avatar","plan"],"additionalProperties":false,"description":"Switched account summary"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","account","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/connections":{"get":{"x-bereach":{"cost":"read","agents":["lead_gen"],"resultShape":"list"},"operationId":"getConnections","x-speakeasy-name-override":"listConnections","summary":"List LinkedIn connections","description":"List your LinkedIn connections (1st degree) with name, headline, profile URL, and connection date.","tags":["profile"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"start","schema":{"description":"Pagination offset","default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Pagination offset"},{"in":"query","name":"count","schema":{"description":"Results per page (max 40)","default":40,"type":"integer","minimum":1,"maximum":40},"description":"Results per page (max 40)"},{"in":"query","name":"sortType","schema":{"description":"Sort order (default RECENTLY_ADDED)","type":"string","enum":["RECENTLY_ADDED"]},"description":"Sort order (default RECENTLY_ADDED)"},{"in":"query","name":"keywords","schema":{"description":"Filter connections by name","type":"string"},"description":"Filter connections by name"}],"responses":{"200":{"description":"Connections list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"connections":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"headline":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"type":"string"},"profilePicture":{"nullable":true,"description":"Profile picture URL","type":"string"},"connectedAt":{"nullable":true,"description":"Connection date (Unix timestamp ms or ISO string)","anyOf":[{"type":"number"},{"type":"string"}]}},"required":["name","headline","profileUrl","profileUrn","publicIdentifier","profilePicture","connectedAt"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hasMore":{"type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","connections","count","start","total","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/activity":{"get":{"x-bereach":{"cost":"read","agents":["orchestrator","lead_gen"]},"operationId":"getOwnActivity","x-speakeasy-name-override":"getMyActivity","summary":"Get recent activity (comments or reactions)","description":"Get recent activity (comments or reactions) by the authenticated user. Useful for verifying authorship of actions.","tags":["profile"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"tabType","schema":{"default":"COMMENTS","description":"Type of activity to fetch","type":"string","enum":["COMMENTS","REACTIONS"]},"description":"Type of activity to fetch"},{"in":"query","name":"count","schema":{"default":20,"description":"Number of items per page (max 50)","type":"integer","minimum":1,"maximum":50},"description":"Number of items per page (max 50)"},{"in":"query","name":"start","schema":{"default":0,"description":"Pagination offset","type":"integer","minimum":0,"maximum":9007199254740991},"description":"Pagination offset"},{"in":"query","name":"paginationToken","schema":{"description":"Pagination token from previous response","type":"string"},"description":"Pagination token from previous response"}],"responses":{"200":{"description":"Activity list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"actor":{"type":"string","description":"Always 'personal' — user activity"},"tabType":{"type":"string","enum":["COMMENTS","REACTIONS"]},"items":{"type":"array","items":{},"description":"Activity items — comments or reactions depending on tabType"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paginationToken":{"nullable":true,"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","actor","tabType","items","count","total","start","paginationToken","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/linkedin/posts":{"post":{"x-bereach":{"cost":"read","excludeTool":true},"operationId":"getOwnPosts","x-speakeasy-name-override":"getMyPosts","summary":"Get the authenticated user's own posts","description":"List posts authored by the authenticated user, newest first, with pagination. Reads the user's own profile, so it costs no credits.","tags":["profile"],"security":[{"token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"description":"Number of posts to fetch (default 20, max 100).","type":"integer","minimum":1,"maximum":100},"start":{"description":"Pagination offset (default 0).","type":"integer","minimum":0,"maximum":9007199254740991},"paginationToken":{"description":"Pagination token from a previous response to fetch the next page.","type":"string"}}}}}},"responses":{"200":{"description":"The user's own posts","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"posts":{"type":"array","items":{"type":"object","properties":{"postUrl":{"type":"string","description":"Public URL of the post."},"text":{"type":"string","description":"Post text content."},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Post creation timestamp (Unix milliseconds)."},"likesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total reactions on this post."},"commentsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total top-level comments on this post."},"sharesCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total shares/reposts of this post."},"postUrn":{"type":"string","description":"LinkedIn internal URN for this post. Use with engagement tools (like, comment, collect_engagers)."},"postId":{"type":"string","description":"Numeric post identifier parsed from the URN."},"type":{"type":"string","enum":["activity","ugcPost","share"],"description":"LinkedIn post type: 'ugcPost' = standard post, 'share' = native share/repost, 'activity' = legacy format."},"isRepost":{"description":"True when the post is a repost/reshare of another post. Absent for original posts.","type":"boolean"},"media":{"description":"Media attached to the post (image, video, document, or article). Absent when the post is text-only.","type":"object","properties":{"type":{"type":"string","enum":["image","video","document","article"],"description":"Type of media attached to the post."},"urls":{"type":"array","items":{"type":"string"},"description":"Media URLs (image URLs for carousels, video streaming URL, article link, etc.)."},"title":{"description":"Title of the article or document, when available.","type":"string"},"thumbnailUrl":{"description":"Thumbnail URL for videos, articles, or document covers.","type":"string"}},"required":["type","urls"],"additionalProperties":false},"authorName":{"description":"Display name of the post's author.","type":"string"},"authorProfileUrl":{"description":"Author's profile URL.","type":"string"},"authorPublicIdentifier":{"description":"Author's vanity slug, when they have one.","nullable":true,"type":"string"},"authorProfileUrn":{"description":"Author's profile URN.","nullable":true,"type":"string"},"authorHeadline":{"description":"Author's headline as shown on the post.","type":"string"},"authorImageUrl":{"description":"Author's avatar URL.","type":"string"},"repostedFromName":{"description":"On a repost, the ORIGINAL author's name when it differs from the resharer.","type":"string"},"reactionTypeCounts":{"description":"Per-reaction-type breakdown, when LinkedIn exposes it.","type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string"},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["reactionType","count"],"additionalProperties":false}},"numImpressions":{"description":"Total impressions, exposed only on Creator-mode posts.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"highlightedReactorName":{"description":"Social-proof attribution, when LinkedIn surfaces one in the feed.","nullable":true,"type":"string"},"viewerLiked":{"description":"Whether the authenticated account has reacted to this post.","nullable":true,"type":"boolean"}},"required":["postUrl","text","date","likesCount","commentsCount","sharesCount","postUrn","postId","type"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Posts in THIS page."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Posts LinkedIn reports in total."},"start":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Offset this page started at."},"hasMore":{"type":"boolean"},"paginationToken":{"nullable":true,"description":"Cursor for the next page, or null on the last one.","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","posts","count","total","start","hasMore","paginationToken","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/search/linkedin/parameters":{"get":{"x-bereach":{"cost":"free","agents":["orchestrator","lead_gen"]},"operationId":"searchParameters","x-speakeasy-name-override":"searchParameters","summary":"Turn text into the ids LinkedIn filters take","description":"Resolve a written label (an industry, a company, a place, a school) into the identifier a search filter needs. Worth knowing why this exists: a filter given an id it does not recognise is accepted and ignored, so a search built on a guessed id quietly returns the unfiltered set and reads as a market with nobody in it. Leaving the keywords empty on a closed-value type lists every option, which is the way to answer what the available buckets are.","tags":["search"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"type","schema":{"type":"string","description":"Which kind of value to resolve. Entity kinds resolve live; the closed-value kinds resolve from a dictionary and need no connected account."},"required":true,"description":"Which kind of value to resolve. Entity kinds resolve live; the closed-value kinds resolve from a dictionary and need no connected account."},{"in":"query","name":"keywords","schema":{"description":"The text to resolve. Empty on a closed-value type lists every option.","type":"string"},"description":"The text to resolve. Empty on a closed-value type lists every option."},{"in":"query","name":"limit","schema":{"default":10,"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Matching ids, or a hint explaining why there were none","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The id LinkedIn's own filters take."},"title":{"type":"string","description":"Human-readable label for the id."},"type":{"type":"string","description":"Echo of the requested type."},"displayValue":{"description":"Present on the closed-enum types.","type":"string"},"source":{"description":"Where the id came from: LinkedIn's typeahead, the curated alias map, or a Sales Navigator enum snapshot.","type":"string"},"aliasKind":{"description":"Present when the curated alias map answered.","type":"string"}},"required":["id","title","type"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"hint":{"description":"Present ONLY when nothing matched, and it says why rather than leaving an empty array to be read as an empty world.","type":"string"},"aliasResolved":{"type":"boolean","description":"True when the curated alias map answered rather than LinkedIn."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","items","count","aliasResolved","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/resolve/linkedin/profiles":{"post":{"x-bereach":{"cost":"read","agents":["orchestrator","lead_gen"]},"operationId":"resolveProfiles","x-speakeasy-name-override":"resolveProfiles","summary":"Upgrade encrypted or Sales Navigator profile links to canonical ones","description":"Turn a mixed batch of LinkedIn identifiers into canonical profile URLs. Sales Navigator links and encrypted-id links cannot be stored or reliably matched against a contact; this is what upgrades them. Cached results cost nothing, and duplicates are removed before anything is spent.","tags":["search"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string"},"description":"Up to 50 LinkedIn identifiers to resolve. Accepts any mix of: full profile URLs (https://www.linkedin.com/in/username), vanity names (john-doe), profile URNs (urn:li:fsd_profile:ACoAAA...), bare ACoA ids, and Sales Navigator deep links. Duplicates are auto-removed."}},"required":["inputs"]}}}},"responses":{"200":{"description":"One result per distinct input, in the order submitted","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"input":{"type":"string","description":"Echo of what was submitted."},"profileUrl":{"nullable":true,"description":"Canonical /in/<slug> URL when one was found.","type":"string"},"profileUrn":{"nullable":true,"type":"string"},"publicIdentifier":{"nullable":true,"description":"The vanity slug, never the encrypted id.","type":"string"},"status":{"type":"string","description":"resolved = a canonical vanity slug; acoa_only = an encrypted id and nothing better; failed = nothing."},"error":{"nullable":true,"description":"A code, present only on failure.","type":"string"},"cached":{"type":"boolean","description":"True when served from cache, which costs nothing."}},"required":["input","profileUrl","profileUrn","publicIdentifier","status","error","cached"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["results","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/scheduled-messages":{"get":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"scheduledMessageList","x-speakeasy-name-override":"list","summary":"List scheduled messages","description":"List messages with optional filters by status, contact, or campaign. Valid status values: draft | scheduled | sending | sent | failed | cancelled. Do NOT pass outreachStatus values (like 'replied') here — to find contacts who replied to a DM, use contacts_search(outreachStatus:'replied') or inbox_list.","tags":["scheduledMessages"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"status","schema":{"type":"string","enum":["draft","scheduled","sending","sent","failed","cancelled"]}},{"in":"query","name":"contactId","schema":{"type":"string"}},{"in":"query","name":"campaignSlug","schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"default":50,"type":"integer","minimum":1,"maximum":200}},{"in":"query","name":"offset","schema":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991}}],"responses":{"200":{"description":"Messages list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"contactId":{"type":"string"},"contactName":{"description":"Contact name (included in list, absent in create)","nullable":true,"type":"string"},"contactLinkedinUrl":{"description":"Contact LinkedIn URL (included in list, absent in create)","nullable":true,"type":"string"},"message":{"type":"string"},"status":{"type":"string","enum":["draft","scheduled","sending","sent","failed","cancelled"]},"scheduledSendAt":{"nullable":true,"type":"string"},"sentAt":{"nullable":true,"type":"string"},"campaignSlug":{"nullable":true,"type":"string"},"errorMessage":{"description":"Error message if status is 'failed'","nullable":true,"type":"string"},"createdAt":{"type":"string"},"contactHeadline":{"nullable":true,"type":"string"},"contactCompany":{"nullable":true,"type":"string"},"contactLocation":{"nullable":true,"type":"string"},"contactDegree":{"description":"Network distance to this contact.","nullable":true,"type":"string"},"contactProfilePicture":{"nullable":true,"type":"string"},"contactHotScore":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contactSentDmCount":{"description":"How many DMs this account has already sent this contact, which is the number that decides whether another is appropriate.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contactQualificationNotes":{"description":"Why this contact was judged a fit.","nullable":true,"type":"string"},"contactQualNotes":{"description":"Duplicate of contactQualificationNotes, kept for older callers. Prefer the long name.","nullable":true,"type":"string"},"contactLeadBrief":{"nullable":true,"type":"string"},"contactLifecycleStage":{"description":"Where this person stands in the list: contact, lead, qualified, or rejected.","nullable":true,"type":"string"},"messageType":{"description":"What this row will send. A connection request carries no body, which is why a queue of them is not a queue of drafts.","nullable":true,"type":"string"},"priority":{"nullable":true,"type":"string"},"campaignId":{"nullable":true,"type":"string"},"campaignName":{"nullable":true,"type":"string"},"updatedAt":{"nullable":true,"type":"string"},"requeueCount":{"description":"How many times this row has been rescheduled. A high count against a closed window is the shape of a terminal failure.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resurrectionCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"linkedinCredentialsId":{"description":"Which connected account will send it.","nullable":true,"type":"string"}},"required":["id","contactId","message","status","scheduledSendAt","sentAt","campaignSlug","createdAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","messages","total","limit","offset","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"post":{"x-bereach":{"agents":["orchestrator","outreach"],"guards":["profileTargeting","contactTargetingBulk","scheduledSend","warmupBlocked"]},"operationId":"scheduledMessageCreate","x-speakeasy-name-override":"create","summary":"Create a draft DM","description":"Create a draft message for a contact. Set status to 'scheduled' with scheduledSendAt to queue for auto-send..","tags":["scheduledMessages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","description":"Internal contact ID"},"message":{"type":"string","description":"DM text"},"status":{"description":"Default 'draft'","type":"string","enum":["draft","scheduled"]},"scheduledSendAt":{"description":"ISO datetime for auto-send","type":"string"},"campaignSlug":{"description":"Which list to file the draft under. Omit it: the draft is filed with the person it is for, which is what a chat turn wants.","type":"string"}},"required":["contactId","message"]}}}},"responses":{"200":{"description":"Message created, or an existing one returned instead","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"scheduledMessage":{"type":"object","properties":{"id":{"type":"string"},"contactId":{"type":"string"},"contactName":{"description":"Contact name (included in list, absent in create)","nullable":true,"type":"string"},"contactLinkedinUrl":{"description":"Contact LinkedIn URL (included in list, absent in create)","nullable":true,"type":"string"},"message":{"type":"string"},"status":{"type":"string","enum":["draft","scheduled","sending","sent","failed","cancelled"]},"scheduledSendAt":{"nullable":true,"type":"string"},"sentAt":{"nullable":true,"type":"string"},"campaignSlug":{"nullable":true,"type":"string"},"errorMessage":{"description":"Error message if status is 'failed'","nullable":true,"type":"string"},"createdAt":{"type":"string"},"contactHeadline":{"nullable":true,"type":"string"},"contactCompany":{"nullable":true,"type":"string"},"contactLocation":{"nullable":true,"type":"string"},"contactDegree":{"description":"Network distance to this contact.","nullable":true,"type":"string"},"contactProfilePicture":{"nullable":true,"type":"string"},"contactHotScore":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contactSentDmCount":{"description":"How many DMs this account has already sent this contact, which is the number that decides whether another is appropriate.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contactQualificationNotes":{"description":"Why this contact was judged a fit.","nullable":true,"type":"string"},"contactQualNotes":{"description":"Duplicate of contactQualificationNotes, kept for older callers. Prefer the long name.","nullable":true,"type":"string"},"contactLeadBrief":{"nullable":true,"type":"string"},"contactLifecycleStage":{"description":"Where this person stands in the list: contact, lead, qualified, or rejected.","nullable":true,"type":"string"},"messageType":{"description":"What this row will send. A connection request carries no body, which is why a queue of them is not a queue of drafts.","nullable":true,"type":"string"},"priority":{"nullable":true,"type":"string"},"campaignId":{"nullable":true,"type":"string"},"campaignName":{"nullable":true,"type":"string"},"updatedAt":{"nullable":true,"type":"string"},"requeueCount":{"description":"How many times this row has been rescheduled. A high count against a closed window is the shape of a terminal failure.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resurrectionCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"linkedinCredentialsId":{"description":"Which connected account will send it.","nullable":true,"type":"string"}},"required":["id","contactId","message","status","scheduledSendAt","sentAt","campaignSlug","createdAt"],"additionalProperties":false},"contactName":{"nullable":true,"type":"string"},"duplicate":{"description":"True when an existing message was returned rather than a new one created.","type":"boolean"},"cooldown":{"description":"True when a recent message to this contact is holding a new one back.","type":"boolean"},"cooldownReason":{"description":"Why the cooldown applies.","type":"string"},"campaignNote":{"description":"Present when the requested list matched nothing and the draft was filed with the person instead; names where it landed.","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","scheduledMessage","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/scheduled-messages/schedule":{"post":{"x-bereach":{"agents":["orchestrator","outreach"],"guards":["scheduledSend","warmupBlocked"]},"operationId":"draftSchedule","x-speakeasy-name-override":"batchSchedule","summary":"Batch-schedule drafts for auto-send","description":"Schedule existing draft messages for auto-send at a specific time..","tags":["scheduledMessages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactIds":{"description":"Schedule all drafts for these contacts","type":"array","items":{"type":"string"}},"messageIds":{"description":"Schedule specific messages","type":"array","items":{"type":"string"}},"scheduledSendAt":{"type":"string","description":"ISO datetime for sending"},"editedMessages":{"description":"Map of messageId → new content for last-minute edits before scheduling","type":"object","additionalProperties":{"type":"string"}}},"required":["scheduledSendAt"]}}}},"responses":{"200":{"description":"Messages scheduled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"scheduled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Messages scheduled."},"triggerFailures":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Messages that failed to schedule and were reverted to draft."},"retriesPending":{"description":"Messages whose first trigger failed and are on a delayed retry. Still in flight, not lost.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scheduledSendAt":{"type":"string","description":"ISO datetime for the first send."},"scheduleShifted":{"description":"True when the server moved the requested send time, so a caller does not report a time that will not happen.","type":"boolean"},"staggerMinutesMin":{"description":"Shortest gap between two staggered sends. 0 for a single message.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"staggerMinutesMax":{"description":"Longest gap between two staggered sends. The real gap is jittered between the two.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lastSendAt":{"type":"string","description":"ISO datetime the last staggered message is due."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","scheduled","triggerFailures","scheduledSendAt","lastSendAt","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/scheduled-messages/update":{"patch":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"scheduledMessageUpdate","x-speakeasy-name-override":"update","summary":"Edit a draft DM","description":"Edit the text or scheduled-send time of a draft DM. Only rows in `draft` status are editable — scheduled/sending/sent/failed/cancelled are terminal for text edits. Returns `{updated, ineligible}` so the caller can distinguish missing ids from already-approved rows.","tags":["scheduledMessages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messageId":{"type":"string","description":"Scheduled message id to edit"},"message":{"description":"New DM text","type":"string"},"scheduledSendAt":{"description":"New ISO datetime, or null to clear","nullable":true,"type":"string"}},"required":["messageId"]}}}},"responses":{"200":{"description":"Message updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"updated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"contactId":{"type":"string"},"contactName":{"description":"Contact name (included in list, absent in create)","nullable":true,"type":"string"},"contactLinkedinUrl":{"description":"Contact LinkedIn URL (included in list, absent in create)","nullable":true,"type":"string"},"message":{"type":"string"},"status":{"type":"string","enum":["draft","scheduled","sending","sent","failed","cancelled"]},"scheduledSendAt":{"nullable":true,"type":"string"},"sentAt":{"nullable":true,"type":"string"},"campaignSlug":{"nullable":true,"type":"string"},"errorMessage":{"description":"Error message if status is 'failed'","nullable":true,"type":"string"},"createdAt":{"type":"string"},"contactHeadline":{"nullable":true,"type":"string"},"contactCompany":{"nullable":true,"type":"string"},"contactLocation":{"nullable":true,"type":"string"},"contactDegree":{"description":"Network distance to this contact.","nullable":true,"type":"string"},"contactProfilePicture":{"nullable":true,"type":"string"},"contactHotScore":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contactSentDmCount":{"description":"How many DMs this account has already sent this contact, which is the number that decides whether another is appropriate.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"contactQualificationNotes":{"description":"Why this contact was judged a fit.","nullable":true,"type":"string"},"contactQualNotes":{"description":"Duplicate of contactQualificationNotes, kept for older callers. Prefer the long name.","nullable":true,"type":"string"},"contactLeadBrief":{"nullable":true,"type":"string"},"contactLifecycleStage":{"description":"Where this person stands in the list: contact, lead, qualified, or rejected.","nullable":true,"type":"string"},"messageType":{"description":"What this row will send. A connection request carries no body, which is why a queue of them is not a queue of drafts.","nullable":true,"type":"string"},"priority":{"nullable":true,"type":"string"},"campaignId":{"nullable":true,"type":"string"},"campaignName":{"nullable":true,"type":"string"},"updatedAt":{"nullable":true,"type":"string"},"requeueCount":{"description":"How many times this row has been rescheduled. A high count against a closed window is the shape of a terminal failure.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"resurrectionCount":{"nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"linkedinCredentialsId":{"description":"Which connected account will send it.","nullable":true,"type":"string"}},"required":["id","contactId","message","status","scheduledSendAt","sentAt","campaignSlug","createdAt"],"additionalProperties":false}},"ineligible":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"currentStatus":{"type":"string"}},"required":["id","currentStatus"],"additionalProperties":false}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","updated","ineligible","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/scheduled-messages/cancel":{"patch":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"scheduledMessageCancel","x-speakeasy-name-override":"cancel","summary":"Cancel scheduled or draft messages","description":"Cancel messages by ID or by contact..","tags":["scheduledMessages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"messageIds":{"description":"Cancel specific messages","type":"array","items":{"type":"string"}},"contactIds":{"description":"Cancel all pending for these contacts","type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"Messages cancelled","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"cancelled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","cancelled","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/context":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contextList","x-speakeasy-name-override":"listEntries","summary":"List context entries","description":"List user-managed context entries (user profile, ICP, Messaging Playbook). By default returns a 200-char content preview per entry to stay within context budget — pass fullContent=true to retrieve complete content for a specific entry. Use scope and type filters to narrow results; fetching all entries without filters can return hundreds of rows. context_get returns the full session snapshot (expensive, session-init only). To read specific contexts (ICP, playbook), use this tool with type, scope, and fullContent:true. Never call context_get mid-conversation to read one entry. Never call this tool without scope/type filters.","tags":["context"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"scope","schema":{"description":"Filter by scope, prefix-matched: \"user\" for owner context, \"user:icp:\" for every saved ICP, \"campaign:<id>\" for one list.","type":"string"},"description":"Filter by scope, prefix-matched: \"user\" for owner context, \"user:icp:\" for every saved ICP, \"campaign:<id>\" for one list."},{"in":"query","name":"type","schema":{"description":"Filter by type (e.g. \"icp\", \"playbook\")","type":"string"},"description":"Filter by type (e.g. \"icp\", \"playbook\")"},{"in":"query","name":"limit","schema":{"default":20,"description":"Max entries to return (default 20, max 50). Paginate with offset for more.","type":"integer","minimum":1,"maximum":50},"description":"Max entries to return (default 20, max 50). Paginate with offset for more."},{"in":"query","name":"offset","schema":{"default":0,"description":"Pagination offset","type":"integer","minimum":0,"maximum":9007199254740991},"description":"Pagination offset"},{"in":"query","name":"fullContent","schema":{"default":false,"description":"Return full content instead of 200-char preview. Use only when retrieving a specific entry (combine with type+scope filters).","type":"boolean"},"description":"Return full content instead of 200-char preview. Use only when retrieving a specific entry (combine with type+scope filters)."}],"responses":{"200":{"description":"Context entries","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"entries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Unique entry ID"},"type":{"type":"string"},"label":{"nullable":true,"type":"string"},"content":{"type":"string","description":"Full content (present when fullContent=true) or a 200-char preview"},"contentPreview":{"description":"First 200 chars of content — present when fullContent is not requested","type":"string"},"scope":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","type","label","content","scope","updatedAt"],"additionalProperties":false}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total matching entries"},"hasMore":{"type":"boolean"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","entries","total","hasMore","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"put":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contextSet","x-speakeasy-name-override":"set","summary":"Create or update a context entry","description":"Save context (ICP, Messaging Playbook, user profile). POST is accepted as an alias for PUT on this path. Each write REPLACES the full content — merge new info with the existing entry first. Pass real newline characters, not escaped \\n strings. If LITERAL_NEWLINE_IN_CONTEXT error, retry the same turn with real newlines. Each type takes exactly one scope shape and the server rejects the others, so read the scope field before writing. Save immediately when the user says save/remember; identity facts → type:\"user-profile\".","tags":["context"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"Context type — closed set (server rejects anything else with 400 INVALID_CONTEXT_TYPE). Pick the canonical slot that matches the content; free-form \"custom:*\" slugs are rejected. Per-slot contracts:\n• \"user-profile\" — Who the operator is — name, role, company, background. Saved once globally; personalises every message.\n• \"offering\" — What the operator sells — products, services, agencies, anything they deliver to clients. Saved once globally.\n• \"icp\" — Who this chat targets — titles, industries, seniority, geography, company size. Guides discovery and qualification.\n• \"playbook\" — How outreach is WRITTEN for this chat — strategy, angle, value-prop, voice/tone, and the first DM. Follow-up sequences are not part of this chat; use the Claude connector for multi-step waits."},"content":{"default":"","description":"Markdown content.","type":"string"},"scope":{"description":"One shape per type; the \"user\" default is rejected for icp and playbook. user-profile, offering, operator-context → \"user\". icp → \"user:icp:<slug>\", slug being a short kebab-case name for that audience. playbook → \"campaign:<id>\", the id of one list. In chat, omit scope: the server attaches it to the list of this conversation.","type":"string"},"label":{"description":"Display label","type":"string"},"postTicketId":{"description":"Internal ticket id from a prior tool result. Omit unless a result supplied it.","type":"string"}},"required":["type"]}}}},"responses":{"200":{"description":"Context saved","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"entry":{"type":"object","properties":{"id":{"type":"string","description":"Unique entry ID"},"type":{"type":"string"},"label":{"nullable":true,"type":"string"},"content":{"type":"string","description":"Full content (present when fullContent=true) or a 200-char preview"},"contentPreview":{"description":"First 200 chars of content — present when fullContent is not requested","type":"string"},"scope":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","type","label","content","scope","updatedAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","entry","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"delete":{"x-bereach":{"agents":["orchestrator"]},"operationId":"contextDelete","x-speakeasy-name-override":"delete","summary":"Delete a context entry","description":"Delete a context entry by type and scope..","tags":["context"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"type","schema":{"type":"string","description":"Context type to delete"},"required":true,"description":"Context type to delete"},{"in":"query","name":"scope","schema":{"description":"Scope (defaults to \"user\")","type":"string"},"description":"Scope (defaults to \"user\")"}],"responses":{"200":{"description":"Context deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/events/feed":{"get":{"x-bereach":{"agents":["orchestrator"]},"operationId":"eventsFeed","x-speakeasy-name-override":"eventsFeed","summary":"Poll for events","description":"Returns recent user events (task completions, replies, connections, campaign milestones). Use the cursor for pagination. Events expire after 48 hours..","tags":["tasks"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"since","schema":{"description":"ISO timestamp or epoch ms (default: 2 hours ago)","type":"string"},"description":"ISO timestamp or epoch ms (default: 2 hours ago)"},{"in":"query","name":"limit","schema":{"default":20,"type":"integer","minimum":1,"maximum":50}}],"responses":{"200":{"description":"Events","content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["task:completed","task:failed","reply:received","connection:accepted","campaign:completed","campaign:paused","campaign:blocked","campaign:rate_limited","campaign:linkedin_expired","credential:llm_error","credential:linkedin_long_broken","campaign:resumed","campaign:actions_cancelled","contact:handover","drafts:pending","system:cache_warning"]},"campaignId":{"type":"string"},"campaignName":{"type":"string"},"summary":{"type":"string","description":"Human-readable one-line summary"},"metadata":{"type":"object","additionalProperties":{}},"timestamp":{"type":"number","description":"Unix epoch ms"}},"required":["id","type","summary","metadata","timestamp"],"additionalProperties":false}},"cursor":{"description":"Timestamp of most recent event (pass as 'since' for next poll)","type":"number"}},"required":["events"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/drafts/review":{"post":{"x-bereach":{"agents":["orchestrator","outreach"]},"operationId":"reviewDrafts","x-speakeasy-name-override":"reviewDrafts","summary":"Batch approve/reject draft DMs","description":"Approve or reject draft messages. Approved drafts are scheduled for immediate send. Optionally edit message text before approval.","tags":["scheduledMessages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"campaignId":{"description":"The list the drafts belong to. Optional: when omitted it is read from the message ids, which must all belong to one list.","type":"string"},"approved":{"description":"Message IDs to approve and send","type":"array","items":{"type":"string"}},"rejected":{"description":"Message IDs to reject/cancel","type":"array","items":{"type":"string"}},"editedMessages":{"description":"Map of messageId to new text (applied before approval)","type":"object","additionalProperties":{"type":"string"}}}}}}},"responses":{"200":{"description":"Review applied","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"approved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["success","approved","rejected"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/agent/snapshot":{"get":{"x-bereach":{"agents":["orchestrator","lead_gen","outreach"]},"operationId":"contextGet","x-speakeasy-name-override":"agentSnapshot","summary":"Agent session snapshot","description":"FULL SESSION SNAPSHOT for initialization only — returns everything in one call: credits, pipeline, every saved context, pending drafts, accounts, events. NOT a targeted context lookup. To retrieve specific context entries (ICP, playbook, and the rest), use context_list with type= and scope= filters — not context_get.","tags":["tasks"],"security":[{"token":[]}],"responses":{"200":{"description":"Session snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"credits":{"description":"Credit balance and usage","nullable":true},"pipeline":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"People counts: fit, in the list, not a fit"},"contexts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"label":{"nullable":true,"type":"string"},"content":{"type":"string"},"scope":{"type":"string"}},"required":["type","label","content","scope"],"additionalProperties":false}},"pendingDrafts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failedDrafts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pendingSentInvitations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"activeAccount":{"nullable":true,"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true,"type":"string"},"plan":{"type":"string"},"headline":{"nullable":true,"type":"string"},"status":{"type":"string","enum":["connected","expired"]},"isUnlimited":{"type":"boolean"},"creditsLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"simulateWrites":{"type":"boolean"},"isCurrent":{"type":"boolean"}},"required":["id","name","plan","headline","status","isUnlimited","creditsLimit","creditsCount","simulateWrites","isCurrent"],"additionalProperties":false},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true,"type":"string"},"plan":{"type":"string"},"headline":{"nullable":true,"type":"string"},"status":{"type":"string","enum":["connected","expired"]},"isUnlimited":{"type":"boolean"},"creditsLimit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"simulateWrites":{"type":"boolean"},"isCurrent":{"type":"boolean"}},"required":["id","name","plan","headline","status","isUnlimited","creditsLimit","creditsCount","simulateWrites","isCurrent"],"additionalProperties":false}},"activeCampaigns":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"stageCounts":{"type":"object","properties":{"contact":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"qualified":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["contact","lead","qualified","rejected","total"],"additionalProperties":false}},"required":["id","name","stageCounts"],"additionalProperties":false}},"sessionMeta":{"nullable":true},"onboardingState":{"nullable":true},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["task:completed","task:failed","reply:received","connection:accepted","campaign:completed","campaign:paused","campaign:blocked","campaign:rate_limited","campaign:linkedin_expired","credential:llm_error","credential:linkedin_long_broken","campaign:resumed","campaign:actions_cancelled","contact:handover","drafts:pending","system:cache_warning"]},"campaignId":{"type":"string"},"campaignName":{"type":"string"},"summary":{"type":"string","description":"Human-readable one-line summary"},"metadata":{"type":"object","additionalProperties":{}},"timestamp":{"type":"number","description":"Unix epoch ms"}},"required":["id","type","summary","metadata","timestamp"],"additionalProperties":false}},"llmStatus":{"description":"Set when the LLM circuit breaker has tripped for this credential.","nullable":true,"type":"string"},"llmFirstTrippedAt":{"description":"Epoch ms the breaker first tripped, so a caller can say how long it has been paused.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["pipeline","contexts","pendingDrafts","failedDrafts","pendingSentInvitations","activeAccount","accounts","activeCampaigns","recentEvents"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/me/settings":{"get":{"x-bereach":{"excludeTool":true},"operationId":"getSettings","x-speakeasy-name-override":"getSettings","summary":"Get account settings","description":"Returns user profile, location, proxy, subscription, LinkedIn accounts, and pending invites..","tags":["profile"],"security":[{"token":[]}],"responses":{"200":{"description":"Account settings","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"isAdmin":{"type":"boolean","description":"Whether this workspace has BeReach-staff admin-panel access. The SAME value for every member of a workspace — not a per-member role."},"user":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string"},"image":{"nullable":true,"type":"string"},"phone":{"nullable":true,"type":"string"},"createdAt":{"type":"string"}},"required":["id","name","email","image","phone","createdAt"],"additionalProperties":false},"location":{"type":"object","properties":{"country":{"nullable":true,"type":"string"},"city":{"nullable":true,"type":"string"}},"required":["country","city"],"additionalProperties":false},"proxy":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"description":"Which pool the account egresses through.","type":"string"},"country":{"description":"Exit country, ISO alpha-2, uppercase on this surface.","type":"string"},"rotationHours":{"description":"How long an exit is held before rotating.","type":"number"}},"required":["enabled"],"additionalProperties":false},"subscription":{"type":"object","properties":{"plan":{"type":"string"},"tier":{"type":"string"},"proSeatsIncluded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proSeatsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"nullable":true,"type":"string"},"currentPeriodEnd":{"nullable":true,"type":"string"},"hasStripe":{"type":"boolean"},"trialUsed":{"type":"boolean"},"trialEndsAt":{"nullable":true,"type":"string"},"aiIncluded":{"description":"Whether this plan generation includes AI. No longer affects the credit pool size (every tier gets one pool regardless); this is an entitlement/generation marker only.","type":"boolean"},"isUnlimited":{"type":"boolean"},"isOwner":{"description":"Whether the caller owns the workspace (the billing payer), as opposed to being a member of it. Gates billing UI only.","type":"boolean"},"canManageAllAccounts":{"description":"Whether the caller can see and act as every LinkedIn account in the workspace (AccountPicker + acting-as) — true for the owner, or any member with workspaceRole=\"admin\" (the default).","type":"boolean"},"limitMultiplier":{"description":"Scales the daily and weekly action caps.","type":"number"},"referralBoostActive":{"type":"boolean"},"referralBoostExpiresAt":{"nullable":true,"type":"string"}},"required":["plan","tier","proSeatsIncluded","proSeatsUsed","status","currentPeriodEnd","hasStripe"],"additionalProperties":false},"linkedinAccounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"nullable":true,"type":"string"},"isDefault":{"type":"boolean"},"linkedinName":{"nullable":true,"type":"string"},"linkedinEmail":{"nullable":true,"type":"string"},"profilePic":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"isValid":{"type":"boolean"},"isActive":{"type":"boolean"},"validationError":{"nullable":true,"type":"string"},"accountPlan":{"nullable":true,"type":"string"},"isUnlimited":{"type":"boolean"},"ownedByCaller":{"description":"True when this account belongs to the caller rather than to another member of the workspace.","type":"boolean"},"proxy":{"type":"object","properties":{"enabled":{"type":"boolean"},"mode":{"description":"Which pool the account egresses through.","type":"string"},"country":{"description":"Exit country, ISO alpha-2, uppercase on this surface.","type":"string"},"rotationHours":{"description":"How long an exit is held before rotating.","type":"number"}},"required":["enabled"],"additionalProperties":false},"apiKey":{"nullable":true,"type":"object","properties":{"partialKey":{"type":"string"},"createdAt":{"type":"string"}},"required":["partialKey","createdAt"],"additionalProperties":false},"createdAt":{"type":"string"}},"required":["id","label","isDefault","linkedinName","linkedinEmail","profilePic","profileUrl","headline","isValid","isActive","validationError","accountPlan","isUnlimited","proxy","apiKey","createdAt"],"additionalProperties":false}},"pendingInvites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"},"code":{"type":"string"},"maxUses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"useCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","name","code","maxUses","useCount","expiresAt","createdAt"],"additionalProperties":false}},"workspaceMembers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string"},"isOwner":{"type":"boolean"},"role":{"type":"string","enum":["admin","member"]}},"required":["id","name","email","isOwner","role"],"additionalProperties":false}}},"required":["success","isAdmin","user","location","proxy","subscription","linkedinAccounts","pendingInvites","workspaceMembers"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"patch":{"x-bereach":{"excludeTool":true},"operationId":"patchSettings","x-speakeasy-name-override":"patchSettings","summary":"Update account settings","description":"Update user country, city, or phone. Location changes propagate to proxy config..","tags":["profile"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"description":"ISO country code","type":"string","minLength":1,"maxLength":10},"city":{"type":"string","minLength":1,"maxLength":100},"phone":{"nullable":true,"type":"string","maxLength":30}}}}}},"responses":{"200":{"description":"Settings updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}},"required":["success"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/settings/dm-polling":{"get":{"x-bereach":{"excludeTool":true},"operationId":"getDmPollingSettings","x-speakeasy-name-override":"getDmPollingSettings","summary":"Get DM polling settings","description":"Get DM and connection polling settings for the active LinkedIn account..","tags":["settings"],"security":[{"token":[]}],"responses":{"200":{"description":"Polling settings","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"settings":{"type":"object","properties":{"dmWebhookUrl":{"nullable":true,"type":"string"},"connectionLastPolledAt":{"nullable":true,"type":"string"}},"required":["dmWebhookUrl","connectionLastPolledAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","settings","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"patch":{"x-bereach":{"excludeTool":true},"operationId":"patchDmPollingSettings","x-speakeasy-name-override":"patchDmPollingSettings","summary":"Update DM polling settings","description":"Set the webhook URL that receives connection + DM events..","tags":["settings"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"dmWebhookUrl":{"description":"Webhook URL for connection_accepted + conversation_updated events","nullable":true,"type":"string"}}}}}},"responses":{"200":{"description":"Settings updated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"settings":{"type":"object","properties":{"dmWebhookUrl":{"nullable":true,"type":"string"},"connectionLastPolledAt":{"nullable":true,"type":"string"}},"required":["dmWebhookUrl","connectionLastPolledAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","settings","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/workspace/accounts/{id}":{"delete":{"x-bereach":{"excludeTool":true},"operationId":"deleteWorkspaceAccount","x-speakeasy-name-override":"deleteWorkspaceAccount","summary":"Remove a LinkedIn account","description":"Remove a LinkedIn account from the workspace. Cannot remove the default account. Cancels in-flight tasks, releases proxy IPs, and decrements Pro seats if applicable.","tags":["workspace"],"security":[{"token":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"LinkedIn credentials ID"}],"responses":{"200":{"description":"Account removed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","message","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/workspace/accounts/upgrade":{"post":{"x-bereach":{"excludeTool":true},"operationId":"upgradeWorkspaceAccount","x-speakeasy-name-override":"upgradeWorkspaceAccount","summary":"Upgrade or downgrade account plan","description":"Upgrade a LinkedIn account from Free to Pro (assigns proxy, unlimited credits) or downgrade from Pro to Free. Requires available Pro seats.","tags":["workspace"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"credentialsId":{"type":"string","description":"LinkedIn credentials ID"},"action":{"type":"string","enum":["upgrade","downgrade"]}},"required":["credentialsId","action"]}}}},"responses":{"200":{"description":"Plan changed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"seatsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"seatsIncluded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","message","seatsUsed","seatsIncluded","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/workspace/invites":{"post":{"x-bereach":{"excludeTool":true},"operationId":"createWorkspaceInvite","x-speakeasy-name-override":"createWorkspaceInvite","summary":"Create or list workspace invites","description":"Create a workspace invitation (action: \"create\") or list existing ones (action: \"list\"). Sends an email if provided. Codes expire in 14 days..","tags":["workspace"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["create","list"],"description":"\"create\" to make a new invite, \"list\" to get existing"},"email":{"description":"Invitee email (sends invite email)","type":"string"},"name":{"description":"Invitee name","type":"string"},"maxUses":{"default":1,"description":"Max times code can be used","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["action"]}}}},"responses":{"200":{"description":"Invite created or listed","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"invite":{"type":"object","properties":{"id":{"type":"string"},"email":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"},"code":{"type":"string"},"status":{"type":"string"},"maxUses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"useCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","name","code","maxUses","useCount","expiresAt","createdAt"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","invite","creditsUsed","retryAfter"],"additionalProperties":false},{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"invites":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"},"code":{"type":"string"},"status":{"type":"string"},"maxUses":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"useCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"expiresAt":{"nullable":true,"type":"string"},"createdAt":{"type":"string"}},"required":["id","email","name","code","maxUses","useCount","expiresAt","createdAt"],"additionalProperties":false}},"workspace":{"type":"object","properties":{"tier":{"type":"string"},"proSeatsIncluded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"proSeatsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["tier","proSeatsIncluded","proSeatsUsed"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","invites","workspace","creditsUsed","retryAfter"],"additionalProperties":false}]}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"delete":{"x-bereach":{"excludeTool":true},"operationId":"deleteWorkspaceInvite","x-speakeasy-name-override":"deleteWorkspaceInvite","summary":"Delete a workspace invite","description":"Delete an invitation by ID..","tags":["workspace"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inviteId":{"type":"string","description":"Invite ID to delete"}},"required":["inviteId"]}}}},"responses":{"200":{"description":"Invite deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits consumed by this call. 0 for free endpoints, cached results, duplicates, and for every query that does not touch LinkedIn."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."},"_meta":{"description":"Credit balance carried on every response so a caller never has to ask for it separately. Absent when the caller has no connected account.","type":"object","properties":{"credits":{"type":"object","properties":{"current":{"type":"number","description":"Credits spent this period."},"limit":{"nullable":true,"description":"Period allowance, or null when unlimited.","type":"number"},"remaining":{"nullable":true,"description":"Allowance left, or null when unlimited.","type":"number"},"percentage":{"type":"number","description":"Share of the allowance spent, 0 to 100."},"isUnlimited":{"type":"boolean"}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false}},"required":["credits"],"additionalProperties":false}},"required":["success","creditsUsed","retryAfter"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/api-token":{"get":{"x-bereach":{"excludeTool":true},"operationId":"getApiToken","x-speakeasy-name-override":"getApiToken","summary":"Get API token","description":"Decrypt and return the full API token for a specific LinkedIn account.","tags":["profile"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"accountId","schema":{"description":"LinkedIn credentials ID (defaults to current account)","type":"string"},"description":"LinkedIn credentials ID (defaults to current account)"}],"responses":{"200":{"description":"Token returned","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"nullable":true,"type":"string"},"partialKey":{"type":"string"},"createdAt":{"type":"string"},"accountId":{"type":"string"}},"required":["token"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"post":{"x-bereach":{"excludeTool":true},"operationId":"createApiToken","x-speakeasy-name-override":"createApiToken","summary":"Create API token","description":"Generate a new API token scoped to a specific LinkedIn account. Only one token per account allowed.","tags":["profile"],"security":[{"token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"description":"LinkedIn credentials ID (defaults to current account)","type":"string"}}}}}},"responses":{"200":{"description":"Token created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"token":{"type":"string","description":"Full API token (brc_...) - only shown once"},"partialKey":{"type":"string"},"accountId":{"type":"string"}},"required":["success","token","partialKey","accountId"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}},"delete":{"x-bereach":{"excludeTool":true},"operationId":"deleteApiToken","x-speakeasy-name-override":"deleteApiToken","summary":"Delete API token","description":"Delete the API token for a specific LinkedIn account.","tags":["profile"],"security":[{"token":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"accountId":{"description":"LinkedIn credentials ID (defaults to current account)","type":"string"}}}}}},"responses":{"200":{"description":"Token deleted","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]}},"required":["success"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}}},"components":{"responses":{"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_request","message":"The server cannot or will not process the request due to something that is perceived to be a client error.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"401":{"description":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","content":{"application/json":{"example":{"success":false,"error":{"code":"unauthorized","message":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\". Authenticate to continue. NOTE: 401 is also returned with code \"linkedin_not_connected\" when the caller IS authenticated but has no connected LinkedIn account — connect LinkedIn (not re-authenticate) to continue.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"403":{"description":"The client does not have access rights to the content.","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The client does not have access rights to the content.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"404":{"description":"The server cannot find the requested resource.","content":{"application/json":{"example":{"success":false,"error":{"code":"not_found","message":"The server cannot find the requested resource.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"409":{"description":"The request conflicts with the current state of the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"conflict","message":"The request conflicts with the current state of the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"410":{"description":"The requested content has been permanently deleted from the server.","content":{"application/json":{"example":{"success":false,"error":{"code":"invite_expired","message":"The requested content has been permanently deleted from the server.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"422":{"description":"The request was well-formed but was unable to be followed due to semantic errors.","content":{"application/json":{"example":{"success":false,"error":{"code":"unprocessable_entity","message":"The request was well-formed but was unable to be followed due to semantic errors.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"429":{"description":"Rate limit exceeded. Read error.retryAfter for the wait time in seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded","docs":"https://bereach.ai","retryAfter":4,"daily":{"current":25,"limit":150},"weekly":null}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"]},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before retrying."},"daily":{"nullable":true,"description":"Current and max daily usage (null if no daily cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"weekly":{"nullable":true,"description":"Current and max weekly usage (null if no weekly cap).","type":"object","properties":{"current":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"limit":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["current","limit"],"additionalProperties":false},"quotaKind":{"description":"Structured classification so clients can route to the right banner without keyword matching.","type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message","retryAfter","daily","weekly"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"500":{"description":"The server encountered a situation it does not know how to handle.","content":{"application/json":{"example":{"success":false,"error":{"code":"internal_server_error","message":"The server encountered a situation it does not know how to handle.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"502":{"description":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"LinkedIn returned a server error or the proxy connection failed. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}},"503":{"description":"Proxy capacity temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Proxy capacity temporarily exceeded. Retry after a few seconds.","docs":"https://bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}},"securitySchemes":{"token":{"type":"http","description":"Default authentication mechanism","scheme":"bearer","x-speakeasy-example":"BEREACH_API_KEY"}}}}