{"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":"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 reading the agent session snapshot"},{"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 the people on a post: one page per call, likes then comments, saved into the user's list, and more true only when the user asked for another page. Without a connected account it returns an unsaved public preview of top commenters.","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 they asked for more people. Each page spends the connected account's action budget, so on a post with 500 reactions and comments or more, wait to be asked again.","type":"boolean"},"untilCount":{"description":"Target size they named, at most 500, and 100 or more means 100. Only when a size was named; one call, since the run pages itself.","type":"integer","minimum":1,"maximum":500},"surface":{"description":"Reactions, comments, or both (the default); pick the one the request names.","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 and how much of them this run has read, 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":{"description":"Top-level comments on the post. The number LinkedIn prints on a post adds the replies to this.","nullable":true,"type":"number"},"likesRead":{"description":"Reactions read so far, in the same unit as `likes`.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsRead":{"description":"Top-level comments read so far, in the same unit as `comments`.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"replies":{"description":"Replies LinkedIn counts under the comments read so far.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsShown":{"description":"The comment number LinkedIn prints on the post, comments and replies together.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false},"readNote":{"description":"How much of the posts' engagement was read, in words ready to relay, composed from `totals`. Present on a connected-account run.","type":"string"},"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},"saveFailed":{"description":"People this page read and could not save. Above 0 the count is short by that much, and those people are not absent from the post.","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":"Recent posts of a LinkedIn profile or company page, read through the connected account, one page a call. Set more true only if the user asked for another page or tapped Load more.","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":"The people who currently work at one named organisation, read through the connected LinkedIn account. This is the exact current-employee list, so it is the way to answer a request about a particular organisation's people, including one asking for whoever holds a role there: give the organisation and put the role in `keywords`. A free-text search of the open web cannot answer that question and returns people holding the same role elsewhere.","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. Each of the three is matched to one company page, and an input matching none is refused rather than searched without the filter."},"keywords":{"description":"ONE thing to look for among that organisation's people: a single role, a single name, or a single skill. Every word here has to appear on the same person, so naming several different roles at once describes nobody and returns a muddle of near misses. Several roles means one call each, and the answers are then separate and each one is right.","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). Never one, even when one person is wanted: the results come back in the organisation's own order rather than ranked against `keywords`, so the first row is often somebody whose title merely resembles the one asked for. Ask for several and say which of them is the person; asking for one turns that into a coin toss, and it lands wrong often enough to matter.","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).","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}},"saved":{"description":"People from this page written to the contact list. Null or absent means the write has not answered: report nothing saved rather than the number of rows returned.","nullable":true,"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","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), `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).","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}},"saved":{"description":"People from this page written to the contact list. Null or absent means the write has not answered: report nothing saved rather than the number of rows returned.","nullable":true,"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","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).","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}},"saved":{"description":"People from this page written to the contact list. Null or absent means the write has not answered: report nothing saved rather than the number of rows returned.","nullable":true,"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","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}},"saved":{"description":"People from this page written to the contact list. Null or absent means the write has not answered: report nothing saved rather than the number of rows returned.","nullable":true,"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","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":"Read ONE named person, addressed by profile URL, vanity slug, or URN from a list row and never by display name: it returns the richest single-profile snapshot there is, covering about, location, work history, education, connection degree and pending invitation, and the recent posts, comments and reactions that say whether the person is still active. For two or more people use public_enrich, never call it for email or phone, and do not re-read a profile visited recently.","tags":["scrapers"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profile":"https://www.linkedin.com/in/alexandre-sarfati","campaignSlug":"lead-magnet-post-12345"},"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."}},"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 from the connected account: the exact profile URL goes in profile, a dictated note in message, one call for one person and one call with the array for several. Say queued, never drafted or waiting for approval, and never sent until the result shows it left; report position, and say when each queued person is expected to go from their sendsAt as an estimate, never a time the result does not give; when blocked is set, say so before anything else.","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":"Names already known for the profiles in this call, matched by URL; omit when you only have the URL.","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 on the invitation, the same one for everyone in the call; left out it goes bare.","type":"string","maxLength":300},"now":{"description":"Attempt one real send inside this call and report what happened, instead of only reporting where they stand. It bypasses this account's sending hours, since a person asking for somebody now is not the scheduled sender; it does not bypass the gap between two invitations.","type":"boolean"},"list":{"description":"Which list to add them to; omit for this account's default one.","type":"string"},"dryRun":{"description":"Previews the call (list size, per-profile eligibility) with a hard guarantee that nothing is added, invited or sent.","type":"boolean"},"placement":{"description":"Where these people join the queue. \"front\" is ahead of everyone already waiting; \"end\" is the ordinary place among them. Naming one person defaults to front, handing over several defaults to end. Say either explicitly to override that.","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,"sendsAt":"2026-01-15T13:03:45.000Z"}],"skipped":[],"blocked":null,"holding":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"},"sendsAt":{"nullable":true,"description":"When their invitation is expected to go out, from this account's pacing and its sending hours. An estimate, not a commitment. Null while the account is blocked, because the wait then depends on it recovering.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["profile","position","sendsAt"],"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},"holding":{"nullable":true,"description":"Set when nothing went out because of this account's own schedule: it only sends during its own set hours, or it is inside the gap between two invitations. Nothing is wrong, nobody has to act, and the people named are in line. Say when they go, do not report a problem and do not call it a limit.","type":"object","properties":{"kind":{"type":"string","enum":["outside_window","paced"]},"message":{"type":"string","description":"A plain sentence explaining the wait, suitable to show as written"},"resumesAt":{"nullable":true,"description":"When sending resumes on its own","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["kind","message","resumesAt"],"additionalProperties":false},"waitingBefore":{"description":"How many OTHER people were already waiting on this account before this call, the people named here not counted. Worth saying out loud when it is not small and the placement was front.","type":"number"},"placement":{"description":"Where the people named actually joined the line, which is what happened rather than what was asked for.","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 archived. 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."}},"required":["name","isNew","totalMembers"],"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","holding","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,"totalIsExact":true,"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":"Pending invitations. Exact only when totalIsExact is true; otherwise it is the size of this page and the real figure may be larger."},"totalIsExact":{"type":"boolean","description":"Whether total is LinkedIn's own count. False means LinkedIn gave no count and total is just how many came back on this page, so never state it as the number of pending invitations: ask for another page or say it is at least that many."},"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","totalIsExact","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 holds a Pro seat. Credits are one shared workspace pool, not per account."},"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/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":{"uncapped":true,"daily":null,"weekly":null,"minIntervalSeconds":180,"nextResetDaily":null,"nextResetWeekly":null},"message":{"uncapped":false,"daily":{"current":3,"limit":70,"remaining":67},"weekly":{"current":10,"limit":280,"remaining":270},"minIntervalSeconds":180,"nextResetDaily":"2026-02-24T00:00:00.000Z","nextResetWeekly":"2026-03-02T00:00:00.000Z"},"profile_visit":{"uncapped":false,"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":{"uncapped":false,"daily":{"current":42,"limit":250,"remaining":208},"weekly":{"current":42,"limit":1500,"remaining":1458},"minIntervalSeconds":3,"nextResetDaily":"2026-02-24T00:00:00.000Z","nextResetWeekly":"2026-03-02T00:00:00.000Z"}},"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":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for sending LinkedIn connection requests"},"message":{"type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for sending DMs"},"profile_visit":{"type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for visiting LinkedIn profiles and company pages"},"scraping":{"type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false,"description":"Limits for data collection: search, collecting posts/likes/comments, listing chats"},"post":{"description":"Limits for publishing LinkedIn posts","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"accept_invitation":{"description":"Limits for accepting connection invitations","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"comment_post":{"description":"Limits for commenting on posts","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"reply_comment":{"description":"Limits for replying to comments","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"profile":{"description":"Limits for structured profile reads.","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","daily","weekly","minIntervalSeconds","nextResetDaily","nextResetWeekly"],"additionalProperties":false},"engagement":{"description":"Limits for likes and reactions.","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when this action has no daily and no weekly ceiling at all, so nothing limits the volume beyond minIntervalSeconds. Connection requests are uncapped: never state or imply a daily or weekly maximum for them."},"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":["uncapped","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":"Read-only, per connected account: whether invitations are going out, who is next, how many are waiting, and when nothing is going out, what is stopping it.","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","waiting_for_window","blocked"],"description":"What the account is doing. nothing_queued: nobody is waiting. sending: invitations are going out. spacing: between two invitations, a matter of minutes. waiting_for_window: people are waiting and this account only sends during its own set hours, so the next one goes at nextSendAt, which can be hours away and is not a fault. blocked: something is stopping it, and blocked says what."},"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 or the reason; blocked means the account is stopped."},"detail":{"type":"string","description":"A plain sentence about the wait, safe to show as written."},"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"},"kind":{"nullable":true,"type":"string"}},"required":["status","detail","clearsItself","fixUrl","kind"],"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."},"sendsAt":{"nullable":true,"description":"When their invitation is expected to go out, from this account's pacing and its sending window. An estimate, not a commitment. Null only while something is stopping the account, because the wait then depends on it recovering.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["contactId","name","avatarUrl","headline","linkedinUrl","lastActivityAt","thinProfile","why","position","sendsAt"],"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","warming_up","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},"holding":{"nullable":true,"description":"This account's own schedule, not a fault and never a limit: it is waiting for its sending hours, or for the gap between two invitations. Nothing is wrong and nobody needs to act. Null when it can send right now, and null when something IS wrong, which is blocked. Report it as a wait with a time, never as a problem.","type":"object","properties":{"kind":{"type":"string","enum":["outside_window","paced"],"description":"outside_window is this account's sending hours; paced is the gap between two invitations."},"message":{"type":"string","description":"A plain sentence explaining it, suitable to show as written"},"resumesAt":{"nullable":true,"description":"When sending resumes, without anybody doing anything","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","enum":[true],"description":"Always true. This is a schedule, so time alone clears it."},"fixUrl":{"type":"string","nullable":true,"enum":[null],"description":"Always null. There is nothing to fix and nowhere to send anybody."}},"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"},"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"},"sentLast7d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Invitations this account sent over the last 7 days. A count of what happened, which depends on how many people were put in line; it says nothing about how fast this account can go. For that, read capacityPerDay."},"capacityPerDay":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many invitations this account can send in a day: its sending hours divided by its pacing. There is no daily or weekly cap on connection requests, so this is the real ceiling and it is not configurable. Somebody sending far fewer than this has fewer people in line, not a limit. Use this to answer how many a day they can do."},"expectedNext24h":{"nullable":true,"description":"How many to expect over the next 24 hours: whichever runs out first, the people in line or the sending hours. Null only when something is stopping the account. Neither the spacing between invitations nor waiting for the sending hours suppresses 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","holding","capProbe","waitingTotal","oldestWaitingHours","awaitingResponse","sentLast24h","acceptedLast24h","sentLast7d","capacityPerDay","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},"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,"description":"Accounts sending right now, or inside the gap between two invitations"},"accountsWaitingForWindow":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Accounts with people in line that only send during their own set hours and are outside them right now. Not a fault and not a limit: they resume on their own."},"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 live, which includes an account waiting for its sending hours. With several live at once there is no single next person; read the per-account rows instead.","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 or the reason; blocked means the account is stopped."},"detail":{"type":"string","description":"A plain sentence about the wait, safe to show as written."},"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"},"kind":{"nullable":true,"type":"string"}},"required":["status","detail","clearsItself","fixUrl","kind"],"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."},"sendsAt":{"nullable":true,"description":"When their invitation is expected to go out, from this account's pacing and its sending window. An estimate, not a commitment. Null only while something is stopping the account, because the wait then depends on it recovering.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"accountLabel":{"type":"string"}},"required":["contactId","name","avatarUrl","headline","linkedinUrl","lastActivityAt","thinProfile","why","position","sendsAt","accountLabel"],"additionalProperties":false}},"required":["waitingTotal","awaitingResponse","sentLast24h","acceptedLast24h","expectedNext24h","expectedIsPartial","oldestWaitingHours","accountsSending","accountsWaitingForWindow","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-25, 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}}}}}}},"/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":"Find people through an anonymous public web search: no connected account needed, public data only, never signed-in LinkedIn details, and found profiles save as contacts and render as a people list you narrate with a one-line count. One ask is one call: every plausible title, seniority or city as an array on the SAME field, any headline signal in filters.keywords, limit (1-300, default 15) set by the number or volume word they used, sentence added when they named one person rather than a crowd, and more:true, excludeWords or excludeProfiles only to continue or refine a search that already ran. NOT for the people at ONE named organisation, whoever they are and whatever role is wanted: the open web knows who mentions an organisation, not who works there, so that ask goes to the employee search instead and comes back here only if no account is connected.","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":"Named employer facet: the organisation someone works for, by its own name. One value or a list of alternatives. A word describing the KIND, SIZE or MARKET of a company is not an employer name and belongs in industry.","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":"How many NEW profiles to fetch, up to 100 in one request; already-saved people the search also finds are added on top at no cost, so the result can run over this number without the limit having been ignored. For more than 100, read the answer and ask again: the next request continues where this one stopped rather than paying for the same people twice.","type":"integer","minimum":1,"maximum":100},"save":{"default":"keep","description":"keep (the default) when the people are the list being built, skip only when this search is certainly a step toward one person's posts or audience or a check of who somebody is, ask when unsure; narrow first rather than keep then remove; report what was actually written.","type":"string","enum":["keep","skip","ask"]},"chain":{"description":"Turns on a two-step company-discovery search, find matching companies by industry or location, then search the role inside each. ONLY for a request that names no organisation at all: once one is named, it belongs in filters.company and sending this instead searches the wrong thing. Omit it entirely rather than sending it empty.","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 an earlier search on these same filters instead of returning its people again.","type":"boolean"},"sentence":{"description":"The person's own words, sent only when they asked for somebody in particular rather than a crowd: a named person, a role at a named organisation, everyone there, or people who used to work there. Always sent alongside the facets, never instead of them, so the search can answer the named question directly rather than 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},"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 answered. '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. 'off-topic' means the index answered about a different subject, so nobody it returned was shown: that is a market this search could not reach, never an empty market. None of the three is a retry, say what happened and change the request.","type":"string","enum":["nothing-to-search","wants-companies","off-topic"]},"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.","type":"array","items":{"type":"object","properties":{"axis":{"type":"string","description":"Which search angle this row covers: title, language, city, company or lookup."},"queries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many searches this angle actually ran."},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Everybody those searches returned, before duplicates were removed."},"fresh":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People this angle contributed that no earlier angle had already named."}},"required":["axis","queries","found","fresh"],"additionalProperties":false}},"axesAvailable":{"description":"What each search angle has LEFT: the searches this ask has not bought yet, which is what asking again with more would spend. An angle already walked out does not appear. 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: title, language, city, company or lookup."},"queries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many searches that angle could still run."}},"required":["axis","queries"],"additionalProperties":false}},"rateLimited":{"description":"Profiles found but deferred because the scraping pool is busy.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"timedOut":{"description":"Profiles found but not fetched before this answer had to go back. Real matches, not the full result set: asking again fetches the rest.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"description":"Explanation when part of the result set was deferred.","type":"string"},"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},"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"}},"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":"Find companies through an anonymous public web search; no connected account is needed. Each row is the company's own identity: name, homepage, what it says it does, headcount, city, country and founding year. No company page link comes back: to open one, pass that row's name as slug to the public company lookup, along with its city and what it does, which is what makes the right page come back.","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":"Named employer facet: the organisation someone works for, by its own name. One value or a list of alternatives. A word describing the KIND, SIZE or MARKET of a company is not an employer name and belongs in industry.","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 an earlier call on this same ask instead of returning the same companies.","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"},"website":{"type":"string","description":"The company's own homepage, which is the only address a row carries."},"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"},"employees":{"nullable":true,"description":"Headcount, when the row carried one. Null when it did not.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"city":{"nullable":true,"description":"Where the company is based, when the row carried it.","type":"string"},"country":{"nullable":true,"description":"Where the company is based, as a lowercase ISO alpha-2 country code. Null when the row named a place that could not be resolved to a country: that is an unknown country, never a company outside the market asked for.","type":"string"},"foundedYear":{"nullable":true,"description":"The founding year the company states about itself, when the row carried one.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","website","description","employees","city","country","foundedYear"],"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"},"sector":{"description":"What the company does, when it is already known: it is what picks the right company out of several that share a name. Send whatever a company search row already said about it.","type":"string"},"city":{"description":"Where the company is based, when it is already known: it is what picks the right company out of several that share a name. Send whatever a company search row already said about it.","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; no connected account is needed. Each post carries who published it and when, and 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},"since":{"description":"Only posts published on or after this date, as YYYY-MM-DD. Omit for posts of any age.","type":"string"},"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 lane that answered."},"query":{"type":"string","description":"The topic that was searched, 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"},"authorName":{"nullable":true,"description":"The publisher's display name, when the post carried one. Null when it did not.","type":"string"},"authorHeadline":{"nullable":true,"description":"The publisher's headline, when the post carried one. Null when it did not.","type":"string"},"publishedAt":{"nullable":true,"description":"When the post was published, ISO 8601. Null when it is not known.","type":"string"}},"required":["url","text","author","authorName","authorHeadline","publishedAt"],"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},"note":{"description":"Present only when nobody posts about this topic and the answer is deliberately empty. Report it as a topic with no posts, not as a failure, and do not ask again for more.","type":"string"}},"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/enrich":{"post":{"x-bereach":{"cost":"read"},"operationId":"publicEnrich","x-speakeasy-name-override":"publicEnrich","summary":"Publicly re-fetch a list of contacts","description":"Re-fetch public profile data for many of your own saved contacts in one call, by contact id from a list already shown, never a raw profile URL and never one visit_profile per person. Not for email or phone; ask which people when the target is ambiguous rather than defaulting to everyone.","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"}},"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."},"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"}]},"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":"Omit when adding someone: a new person lands in the list.","type":"string","enum":["contact","lead","rejected"]},"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, removed or still in the list, outreach status, tags, 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 key for the list, defaulting to most recently active (updatedAt_desc), with the mirror ascending order and five other fields, lastRepliedAt, lastContactedAt, createdAt, name and profileUpdatedAt, each sortable either way.","type":"string"},"description":"Sort key for the list, defaulting to most recently active (updatedAt_desc), with the mirror ascending order and five other fields, lastRepliedAt, lastContactedAt, createdAt, name and profileUpdatedAt, each sortable either way."},{"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":"Filters the saved list to engaged people only by default (outreach started, replied, or in a real list); pass false for every saved row including collected residue, though the flag is ignored whenever campaignId, linkedinUrl or name already names what to return.","anyOf":[{"type":"string","enum":["true","false"]},{"type":"boolean"}]},"description":"Filters the saved list to engaged people only by default (outreach started, replied, or in a real list); pass false for every saved row including collected residue, though the flag is ignored whenever campaignId, linkedinUrl or name already names what to return."},{"in":"query","name":"omitData","schema":{"description":"Smaller row: identity and list stage only, no profile data.","anyOf":[{"type":"string","enum":["true","false"]},{"type":"boolean"}]},"description":"Smaller row: identity and list stage only, no profile data."},{"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"},"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","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":"List stage; rejected means removed from the list."},"outreachStatus":{"nullable":true,"type":"string"},"doNotContact":{"nullable":true,"type":"boolean"}},"required":["id","linkedinUrl","name","lifecycleStage","outreachStatus","doNotContact"],"additionalProperties":false,"description":"Identity and list stage 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"},"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"},"stageChangedAt":{"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","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 notes, outreach status, tags or profile data for a person, or remove them from a list and bring them back. lifecycleStage is per-list: pass campaignId to scope the write to one list, 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":"rejected removes the person from the list, contact brings them back.","type":"string","enum":["contact","lead","rejected"]},"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"},"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","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":"Remove people from the list in one call with update.lifecycleStage \"rejected\", or bring them back with \"contact\"; the write lands on this conversation's own list, so never name one. Asked to remove people by a RULE rather than by name, call filter_contacts first and write only the ids it returned: that way you are removing real rows rather than a guess, and you can say exactly who went and why, which you must. Never invent an id.","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","rejected"]},"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: people in it, people removed, 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":"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"},"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"}},"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 saved ICP this list uses.","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},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","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"}},"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"},"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"}},"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 saved ICP this list uses.","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},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","name","description","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}/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":"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"},"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","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":"Omit when adding someone: a new person lands in the list.","type":"string","enum":["contact","lead","rejected"]},"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/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"},"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"},"stageChangedAt":{"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","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":"paced-free","agents":["lead_gen"],"resultShape":"list"},"operationId":"getConnections","x-speakeasy-name-override":"listConnections","summary":"List LinkedIn connections","description":"List the people you are ALREADY connected to, first degree, newest first, with name, headline, profile URL and the date you connected, AND save each page into the contact list. This is your existing network, so use it to work people who already know you; for people you are not connected to yet ask for recommended people instead, and for where your outgoing invitations stand ask for connection status. Pages with `nextStart` and no keyword filter, because the endpoint accepts one and ignores it. `saved` reports what that write actually stored.","tags":["profile"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"start","schema":{"description":"Pagination offset. Use the `nextStart` from the previous page.","default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Pagination offset. Use the `nextStart` from the previous page."},{"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)"}],"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},"nextStart":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Where the next page starts. Pass it as `start`; do not add the row count yourself, because some rows arrive without a readable profile and are counted here but absent from the list."},"unresolved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Rows returned on this page whose profile was withheld, so they are counted by the cursor and missing from the list. This is why a fully paged list can be shorter than the connection count."},"saved":{"description":"People from this page written to the contact list. Null or absent means the write has not answered: report nothing saved rather than the number of rows returned.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newToList":{"description":"People who were not on this chat's list before this call and now are. Report this, not `saved`, as the number added: asking again re-reads from the start, so `saved` counts the same people again while only this many are new. Null or absent when there is no list or it has not answered.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"nullable":true,"description":"How many connections LinkedIn says the account has, or null when it did not say, which is ordinary here. Null means unknown: say how many people came back instead of reporting a total nobody stated.","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","nextStart","unresolved","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/recommended":{"get":{"x-bereach":{"cost":"paced-free","agents":["lead_gen"],"resultShape":"list"},"operationId":"getRecommendedPeople","x-speakeasy-name-override":"listRecommendedPeople","summary":"List the people LinkedIn recommends","description":"List the people LinkedIn suggests to your account on My Network, with name, headline, profile URL and the reason LinkedIn gives for each, AND save them into the contact list. These are people you are NOT connected to, so it answers who is worth meeting rather than who you already know; use the connections list for people already in your network. Returns one set per call and cannot continue from where it stopped, so ask once for the number wanted. `saved` reports what the write actually stored.","tags":["profile"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"limit","schema":{"description":"How many people to ask for, 1 to 96, 24 by default. This is a ceiling, not a promise: fewer can come back, because LinkedIn withholds the identity on some of the people it shows, and `unresolved` says how many. LinkedIn also answers in blocks of eight, so a smaller number still reads a whole block, and asking again re-reads from the start rather than continuing: ask once for the number actually wanted.","type":"integer","minimum":1,"maximum":96},"description":"How many people to ask for, 1 to 96, 24 by default. This is a ceiling, not a promise: fewer can come back, because LinkedIn withholds the identity on some of the people it shows, and `unresolved` says how many. LinkedIn also answers in blocks of eight, so a smaller number still reads a whole block, and asking again re-reads from the start rather than continuing: ask once for the number actually wanted."}],"responses":{"200":{"description":"Recommended people","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"people":{"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"},"insight":{"nullable":true,"description":"The reason LinkedIn gives for suggesting this person, in its own words. Null when it gave none, which is ordinary.","type":"string"},"connectionDegree":{"type":"string","nullable":true,"enum":[null],"description":"Always null. These people are not connections and LinkedIn does not say how far away they are."}},"required":["name","headline","profileUrl","profileUrn","publicIdentifier","profilePicture","insight","connectionDegree"],"additionalProperties":false}},"count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saved":{"description":"People from this page written to the contact list. Null or absent means the write has not answered: report nothing saved rather than the number of rows returned.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"newToList":{"description":"People who were not on this chat's list before this call and now are. Report this, not `saved`, as the number added: asking again re-reads from the start, so `saved` counts the same people again while only this many are new. Null or absent when there is no list or it has not answered.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"served":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people LinkedIn put in front of the account for this call. The denominator for `unresolved`, and not the same as `count`: LinkedIn answers in fixed blocks, so asking for fewer still reads a whole block."},"unresolved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People LinkedIn rendered whose identity it withheld, so they are counted here and missing from the list, out of `served`. This is why a set can come back smaller than it looks."},"hasMore":{"type":"boolean","enum":[false],"description":"Always false. There is no continuation for this list, so a second call returns the same people rather than the next ones."},"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","people","count","served","unresolved","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":"First page only. This feed pages by paginationToken, not by offset: measured live, an offset returns the first page again, so a caller following it reads the same posts forever.","type":"integer","minimum":0,"maximum":9007199254740991},"paginationToken":{"description":"The next page. Take it from the previous response; it is the only cursor this feed honours.","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 | sending | sent | failed | cancelled (`scheduled` is a legacy value, read as draft). Each row carries `firstDm`, where that person's first message stands. 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"],"description":"The row's own status. For a first message, `scheduled` is legacy, read as `draft` (see `firstDm`); for a connection request, `scheduled` means approved and in the invitation queue."},"scheduledSendAt":{"description":"Legacy. A first message has no send time: the line decides when it goes out. Absent on new rows.","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"},"contactSentDmCount":{"description":"How many messages and invitations this contact has been sent, across every account you hold, the number that decides whether another is appropriate.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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"},"campaignId":{"nullable":true,"type":"string"},"campaignName":{"nullable":true,"type":"string"},"updatedAt":{"nullable":true,"type":"string"},"linkedinCredentialsId":{"description":"Which connected account will send it.","nullable":true,"type":"string"},"firstDm":{"description":"Where this person's first message stands, from the one projection every surface reads. Present on list rows.","oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["none"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["written"]},"scheduledMessageId":{"type":"string"}},"required":["kind","scheduledMessageId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["held"]},"scheduledMessageId":{"type":"string"},"reason":{"type":"string"}},"required":["kind","scheduledMessageId","reason"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["queued"]},"scheduledMessageId":{"type":"string"},"why":{"type":"object","properties":{"status":{"type":"string","enum":["next","waiting","waiting_accept","accepted","window","blocked","not-on-list"]},"detail":{"type":"string","description":"Why it has not gone yet, in plain words."},"position":{"nullable":true,"description":"1-based place in line when ready; null while set aside.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opensAt":{"nullable":true,"description":"For `window`, when sending hours reopen; for `accepted`, when the pause before the first message lifts.","type":"string"},"clearsItself":{"nullable":true,"type":"boolean"},"fixUrl":{"nullable":true,"type":"string"},"kind":{"nullable":true,"type":"string"}},"required":["status","detail","position","opensAt","clearsItself","fixUrl","kind"],"additionalProperties":false}},"required":["kind","scheduledMessageId","why"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["sending"]},"scheduledMessageId":{"type":"string"}},"required":["kind","scheduledMessageId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["sent"]},"scheduledMessageId":{"type":"string"},"sentAt":{"nullable":true,"type":"string"}},"required":["kind","scheduledMessageId","sentAt"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["failed"]},"scheduledMessageId":{"type":"string"},"reason":{"nullable":true,"type":"string"},"canRequeue":{"type":"boolean","enum":[true]}},"required":["kind","scheduledMessageId","reason","canRequeue"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cancelled"]},"scheduledMessageId":{"type":"string"},"reason":{"nullable":true,"type":"string"}},"required":["kind","scheduledMessageId","reason"],"additionalProperties":false}],"type":"object"},"invite":{"description":"Where this person's connection request stands, from the invitation lane's own projection. Present on connection_request rows.","nullable":true,"type":"object","properties":{"status":{"type":"string","enum":["next","waiting","blocked","not-on-list"]},"detail":{"type":"string"},"clearsItself":{"nullable":true,"type":"boolean"},"fixUrl":{"nullable":true,"type":"string"},"kind":{"nullable":true,"type":"string"}},"required":["status","detail","clearsItself","fixUrl","kind"],"additionalProperties":false},"connection":{"description":"Where this account stands with them, which decides what approving does: connected means the message goes in line, invited means it waits for an acceptance, not_connected means a connection request goes out first. Null on a connection request row.","nullable":true,"type":"string","enum":["connected","invited","not_connected"]},"hold":{"description":"Why the run held this message out of the send, and the line it objected to. Present while it is held.","nullable":true,"type":"object","properties":{"reason":{"type":"string"},"quote":{"nullable":true,"type":"string"}},"required":["reason"],"additionalProperties":false}},"required":["id","contactId","message","status","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. Pass status 'scheduled' to approve it at once: it is put in line and goes out once the person is connected, paced like a person. Nothing is sent at a set time.","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'. 'scheduled' means approve at once: the message is put in line and goes out once the person is connected, at the account's pace.","type":"string","enum":["draft","scheduled"]},"scheduledSendAt":{"description":"A first message has no stored send time: the line decides when it goes out. A time within 10 minutes of now is read as an ask to approve and send at once, like status 'scheduled'; anything further out is ignored.","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"],"description":"The row's own status. For a first message, `scheduled` is legacy, read as `draft` (see `firstDm`); for a connection request, `scheduled` means approved and in the invitation queue."},"scheduledSendAt":{"description":"Legacy. A first message has no send time: the line decides when it goes out. Absent on new rows.","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"},"contactSentDmCount":{"description":"How many messages and invitations this contact has been sent, across every account you hold, the number that decides whether another is appropriate.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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"},"campaignId":{"nullable":true,"type":"string"},"campaignName":{"nullable":true,"type":"string"},"updatedAt":{"nullable":true,"type":"string"},"linkedinCredentialsId":{"description":"Which connected account will send it.","nullable":true,"type":"string"},"firstDm":{"description":"Where this person's first message stands, from the one projection every surface reads. Present on list rows.","oneOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["none"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["written"]},"scheduledMessageId":{"type":"string"}},"required":["kind","scheduledMessageId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["held"]},"scheduledMessageId":{"type":"string"},"reason":{"type":"string"}},"required":["kind","scheduledMessageId","reason"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["queued"]},"scheduledMessageId":{"type":"string"},"why":{"type":"object","properties":{"status":{"type":"string","enum":["next","waiting","waiting_accept","accepted","window","blocked","not-on-list"]},"detail":{"type":"string","description":"Why it has not gone yet, in plain words."},"position":{"nullable":true,"description":"1-based place in line when ready; null while set aside.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"opensAt":{"nullable":true,"description":"For `window`, when sending hours reopen; for `accepted`, when the pause before the first message lifts.","type":"string"},"clearsItself":{"nullable":true,"type":"boolean"},"fixUrl":{"nullable":true,"type":"string"},"kind":{"nullable":true,"type":"string"}},"required":["status","detail","position","opensAt","clearsItself","fixUrl","kind"],"additionalProperties":false}},"required":["kind","scheduledMessageId","why"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["sending"]},"scheduledMessageId":{"type":"string"}},"required":["kind","scheduledMessageId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["sent"]},"scheduledMessageId":{"type":"string"},"sentAt":{"nullable":true,"type":"string"}},"required":["kind","scheduledMessageId","sentAt"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["failed"]},"scheduledMessageId":{"type":"string"},"reason":{"nullable":true,"type":"string"},"canRequeue":{"type":"boolean","enum":[true]}},"required":["kind","scheduledMessageId","reason","canRequeue"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["cancelled"]},"scheduledMessageId":{"type":"string"},"reason":{"nullable":true,"type":"string"}},"required":["kind","scheduledMessageId","reason"],"additionalProperties":false}],"type":"object"},"invite":{"description":"Where this person's connection request stands, from the invitation lane's own projection. Present on connection_request rows.","nullable":true,"type":"object","properties":{"status":{"type":"string","enum":["next","waiting","blocked","not-on-list"]},"detail":{"type":"string"},"clearsItself":{"nullable":true,"type":"boolean"},"fixUrl":{"nullable":true,"type":"string"},"kind":{"nullable":true,"type":"string"}},"required":["status","detail","clearsItself","fixUrl","kind"],"additionalProperties":false},"connection":{"description":"Where this account stands with them, which decides what approving does: connected means the message goes in line, invited means it waits for an acceptance, not_connected means a connection request goes out first. Null on a connection request row.","nullable":true,"type":"string","enum":["connected","invited","not_connected"]},"hold":{"description":"Why the run held this message out of the send, and the line it objected to. Present while it is held.","nullable":true,"type":"object","properties":{"reason":{"type":"string"},"quote":{"nullable":true,"type":"string"}},"required":["reason"],"additionalProperties":false}},"required":["id","contactId","message","status","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":"Put drafts in line to be sent","description":"Put written drafts in line to be sent. The line decides when: each message goes out once the person is connected on this account, paced like a person. A message that could not be sent re-enters the line the same way. No time can be chosen.","tags":["scheduledMessages"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactIds":{"description":"Put every draft of these contacts in line, within ONE list: campaignId or campaignSlug is required with this, or the call is refused. Prefer messageIds, read from the outbox","type":"array","items":{"type":"string"}},"messageIds":{"description":"Put these messages in line","type":"array","items":{"type":"string"}},"sendNow":{"description":"Move these to the front of the line. They still wait for the person to be connected.","type":"boolean"},"scheduledSendAt":{"description":"A time within 10 minutes of now is read the same as sendNow; anything later is ignored.","type":"string"},"editedMessages":{"description":"Map of messageId to new content for last-minute edits before approving","type":"object","additionalProperties":{"type":"string"}}}}}}},"responses":{"200":{"description":"Messages put in line","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"scheduled":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total now in line: messages (queued, put back, or already there) plus connection requests among them, counted in invitationsScheduled below."},"invitationsScheduled":{"description":"Connection requests among the ids, handed to the invitation line.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"queued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Messages that entered the line."},"requeued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Messages that could not be sent before and are back in line."},"alreadyQueued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Messages that were already in line."},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Messages held for a read; release the hold first."},"skipped":{"type":"array","items":{"type":"object","properties":{"contactId":{"type":"string"},"scheduledMessageId":{"type":"string"},"reason":{"type":"string"}},"required":["contactId","scheduledMessageId","reason"],"additionalProperties":false},"description":"Rows the line would not take, each with the reason."},"invitesQueued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Invitations put in line for people not connected yet."},"accounts":{"type":"array","items":{"type":"string"},"description":"The connected accounts whose lines gained a message."},"note":{"description":"Present when a send time was passed: it was ignored, and this says why.","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","scheduled","queued","requeued","alreadyQueued","held","skipped","invitesQueued","accounts","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 of a draft DM, in line or not. Only rows in `draft` status are editable: sending, sent, failed and cancelled rows are not. Returns `{updated, ineligible}` so the caller can distinguish missing ids from rows that cannot be edited.","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":"Accepted and ignored: a first message has no send time.","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":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many rows were edited."},"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 messages","description":"Cancel messages by ID or by contact. A cancelled message leaves the line and is never sent.","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 everything still waiting for these contacts, within the list named by campaignId or campaignSlug when one is given. Prefer messageIds, read from the outbox","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 saved context entries (user profile, ICP, Messaging Playbook). Always filter by type and scope; unfiltered reads return hundreds of rows. Entries come back as a 200-char preview to protect the context budget; pass fullContent=true to read one entry in full, which is how to read a specific saved context such as an ICP or playbook. context_get is the expensive full session snapshot, session-init only: never call it mid-conversation to read one entry.","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, \"user:playbook:\" for every saved playbook.","type":"string"},"description":"Filter by scope, prefix-matched: \"user\" for owner context, \"user:icp:\" for every saved ICP, \"user:playbook:\" for every saved playbook."},{"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"},"offset":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Where this page started. Add the row count to it for the next page."},"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","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}}}}}},"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) the moment the user says save or remember, identity facts as type \"user-profile\". A playbook write AMENDS the saved document: send the fields that change, a field left out is kept, a field sent as null is removed. Every other type replaces the whole entry, so merge the new information into what is already saved. Renaming is not a rewrite, send the type and the saved scope with the new label and no content.","tags":["context"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"One of four closed slots, user-profile, offering, icp or playbook, chosen by what the content means for outreach (global identity or offering, per-chat targeting, or a named first-DM voice), never a free-form custom:* slug."},"content":{"description":"Markdown content, or the document itself when it is structured.","type":"string"},"scope":{"description":"Omit scope and pass label so the server derives and attaches \"user:icp:<slug>\" or \"user:playbook:<slug>\" (identity/offering fields keep plain \"user\", rejected for icp/playbook); to reuse an asset already saved instead of rewriting it, send its existing scope alone with no content.","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:rate_limited","campaign:linkedin_expired","credential:llm_error","credential:linkedin_long_broken","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. An approved first message is put in line and goes out once the person is connected on this account, paced like a person; an approved connection request joins the invitation line. A message that could not be sent is approved again to put it back in line. 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,"description":"Rows now in line: first messages queued, put back or already there, plus connection requests approved."},"rejected":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"ineligible":{"type":"object","properties":{"approved":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"currentStatus":{"nullable":true,"type":"string"}},"required":["id","currentStatus"],"additionalProperties":false}},"rejected":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"currentStatus":{"nullable":true,"type":"string"}},"required":["id","currentStatus"],"additionalProperties":false}}},"required":["approved","rejected"],"additionalProperties":false,"description":"Ids that were not in draft, with the status they were in."},"invitationsApproved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Connection requests among the approved ids, handed to the invitation line."},"line":{"nullable":true,"description":"What the line did with the approved first messages. Null when nothing was approved.","type":"object","properties":{"queued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"requeued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadyQueued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"array","items":{"type":"object","properties":{"contactId":{"type":"string"},"scheduledMessageId":{"type":"string"},"reason":{"type":"string"}},"required":["contactId","scheduledMessageId","reason"],"additionalProperties":false}},"invitesQueued":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"accounts":{"type":"array","items":{"type":"string"}}},"required":["queued","requeued","alreadyQueued","held","skipped","invitesQueued","accounts"],"additionalProperties":false},"laneBlocked":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"messageType":{"type":"string"},"task":{"type":"string"}},"required":["id","messageType","task"],"additionalProperties":false},"description":"Rows not approved because their lane is switched off for the list."}},"required":["success","approved","rejected","ineligible","invitationsApproved","line","laneBlocked"],"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, initialization only: credits, pipeline, every saved context, pending drafts, accounts and events in one call. Not a targeted lookup: read specific context entries with context_list by type= and scope=.","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: in the list, removed"},"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,"description":"The workspace's shared credit limit, the same on every account row."},"creditsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits the workspace has used this cycle, the same on every account row."},"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,"description":"The workspace's shared credit limit, the same on every account row."},"creditsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits the workspace has used this cycle, the same on every account row."},"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:rate_limited","campaign:linkedin_expired","credential:llm_error","credential:linkedin_long_broken","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 a residential proxy) 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"}}}}