{"openapi":"3.0.3","info":{"title":"BeReach API","description":"BeReach | Agentic lead generation and outreach API","version":"3.5.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":"Public data: people, companies and posts from our search"},{"name":"search","description":"Find posts, people, companies and jobs, and turn a written label into the id a filter takes."},{"name":"salesNav","description":"Sales Navigator searches 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":"engagement","description":"People engaging with a post (likes, comments) and a profile's posts"},{"name":"actions","description":"Connection requests and messages from your own LinkedIn account"},{"name":"chat","description":"Endpoints for LinkedIn inbox: list conversations, search, read messages"},{"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":"Everyone who reacted to or commented on up to 10 posts, replies included, saved as contacts and into the caller's list. Any public post works. One call reads one page of each list per post; untilCount reads page after page until that many people are saved or every list has ended, and more true continues where the last call stopped. Each person comes with their name, headline, profile and photo, and their reaction or what they wrote, up to date, in 1 to 2 seconds a page of up to 100 people. Cost: 1 credit a page of up to 100 people, nothing for a page that brought nobody, and a post already read again costs nothing. creditsUsed says what the call spent.","tags":["engagement"],"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 articles, Sales Navigator or company pages."},"more":{"description":"Next page of the same posts, set only when they asked for more people.","type":"boolean"},"untilCount":{"description":"Target size they named, at most 500: the call reads page after page until that many people are saved or every list has ended. 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 in the chat, which always saves to its own list, and on the public preview path.","type":"string"}},"required":["postUrls"]}}}},"responses":{"200":{"description":"The people collected, with their run id","content":{"application/json":{"example":{"success":true,"runId":"rec-0123456789abcdef01234567","status":"completed","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","description":"False when the posts could not be read now: `error` says why, `retryAfter` when to try again."},"error":{"description":"Why nothing could be read, when success is false.","type":"string"},"message":{"type":"string"},"runPeople":{"description":"With more: the people the whole run has saved, the same number as `count`. This call's own new people are the `people` list.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"runId":{"description":"Present when the people were collected. 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 collection ran: 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"},"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 shown 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 under the comments read so far.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsShown":{"description":"The comment number shown 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 when the posts' badges were read.","type":"string"},"count":{"description":"People saved by this run so far, every call on it included. 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"},"note":{"description":"A caveat about this result in words ready to relay, when one applies.","type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 person or a company page, newest first, each with its text, date, reaction, comment and share counts and its author. Set more true only if the user asked for another page or tapped Load more. For their posts on one subject, give topic. Full reads the recent posts a page at a time, newest first, up to date, in about 2 seconds a page; preview reads the latest few, with likes only, in about 3 seconds. Cost: on full, 1 credit a page of posts; on preview, 1 credit; a topic is priced as a post search; nothing when nothing was read. creditsUsed says what the call spent.","tags":["engagement"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"profileUrl":"https://www.linkedin.com/in/username"},"schema":{"type":"object","properties":{"profileUrl":{"type":"string","minLength":1,"description":"LinkedIn profile or company page URL, vanity name, or URN."},"more":{"description":"Next page of the same profile. Set only when the user asked for more posts or tapped Load more.","type":"boolean"},"detail":{"description":"\"preview\": a quick look; it can miss older posts and every count but likes. \"full\" (default): every detail we have. Keep full for every recent post with every count, page after page.","type":"string","enum":["preview","full"]},"topic":{"description":"Only their posts about this subject, found by a post search by them on it, priced as that search: the answer is its rows. Leave it out to read their recent posts in order.","type":"string"}},"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":{"description":"Collect-run id. Posts arrive on the run record; this response holds the pages collected so far, and with more only the new page. Absent when the public page's latest few answered.","type":"string"},"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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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 could not be read. 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"required":["success","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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. This is the current-employee list, so it is the way to answer a request about one organisation's people, including whoever holds a role there: give the organisation and put the role in `keywords`. Cost: 1 credit for every 20 results returned, at least 1 when any come back, nothing when none.","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":"Short context lines, such as 'X mutual connections', 'Follows {company}', 'Worked at {company}'. Use them directly in personalised openers.","type":"array","items":{"type":"string"}},"lane":{"description":"Present when this row is public data: some fields 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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\nFind 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 names or ids, resolved for you |\n| `authorCompany` | string[] | Author's company names or ids, resolved for you |\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: 20, 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\nCost: 1 credit for every 20 results returned, at least 1 when any come back, nothing when none.","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 an open search.","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).","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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 by name, title, company, location, industry, and more. Returns structured profile data including name, headline, current positions, connection degree, profile picture, **plus**: `nameMatch` (true when the result matched on the literal name), `badgeText` (Top Voice / Premium / Verified / Influencer), `ringStatus` (OPEN_TO_WORK / HIRING: open intent signals you can directly target), `summary` (additional snippet beyond headline), `actorInsights` (short context lines such as 'X mutual connections' or 'Follows {company}': use them directly in personalised 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\nCost: 1 credit for every 20 results returned, at least 1 when any come back, nothing when none.","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 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:ACoAAB1234...'). 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 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 IDs of the company HEADQUARTERS, 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. Resolve ids via /search/linkedin/parameters.","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). Results come about ten per page; use multiples of ten to skip whole pages.","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"How many people to return in total (default 10, max 50).","type":"integer","minimum":1,"maximum":50}}}}}},"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":"Short context lines, such as 'X mutual connections', 'Follows {company}', 'Worked at {company}'. Use them directly in personalised openers.","type":"array","items":{"type":"string"}},"lane":{"description":"Present when this row is public data: some fields 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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 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\nCost: 1 credit for every 20 results returned, at least 1 when any come back, nothing when none.","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). Results come about ten per page; use multiples of ten to skip whole pages.","type":"integer","minimum":0,"maximum":9007199254740991},"count":{"description":"How many companies to return in total (default 10, max 50).","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 is public data.","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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 by keywords, location, job type, experience level, and workplace type. Returns lightweight job rows (title, company, companyUrl, companyLogo, location, workplaceType, postedAt, jobUrl, listingId).\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: 50, max 100\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\nCost: 1 credit for every 20 results returned, at least 1 when any come back, nothing when none.","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).","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."}},"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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"],"agentDescription":"Run a LinkedIn or Sales Navigator search link the person pasted, and save the people it returns to the list, unless the link only looks up one named person."},"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\nCost: 1 credit for every 20 results returned, at least 1 when any come back, nothing when none.","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 or Sales Navigator search results link, exactly as the person pasted it. Its keywords, filters and page are read from it."},"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":"How many results to return.","type":"integer","minimum":1,"maximum":25}},"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:ACoAAB1234567890ExampleProfileId0001","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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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":"Short context lines, such as 'X mutual connections', 'Follows {company}', 'Worked at {company}'. Use them directly in personalised openers.","type":"array","items":{"type":"string"}},"lane":{"description":"Present when this row is public data: some fields 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 is public data.","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."}},"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"},"count":{"description":"How many items this page returned.","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},"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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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>`. |\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\nCost: 1 credit for every 10 results returned, at least 1 when any come back, nothing when none.\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. 'ACwAAB1234…'), 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.","type":"string"}}}}}},"responses":{"200":{"description":"Sales Navigator people search results","content":{"application/json":{"example":{"success":true,"category":"people","items":[{"type":"PEOPLE","id":"ACwAAB1234567890ExampleLeadId0000001","name":"Jane Smith","firstName":"Jane","lastName":"Smith","memberUrn":"urn:li:member:12345678","profileUrn":"urn:li:fsd_profile:ACoAAB1234567890ExampleLeadId0000001","publicIdentifier":"jane-smith","profileUrl":"https://www.linkedin.com/in/jane-smith","salesNavUrl":"https://www.linkedin.com/sales/lead/ACwAAB1234567890ExampleLeadId0000001,NAME_SEARCH,AbCd","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.","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: this search reached its monthly limit, so the set is TRUNCATED and not the whole market. PARSE_EMPTY: no rows could be read and the market was not reported 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 carry 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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_by_url` via its `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_by_url via its `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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"},"operationId":"visitProfile","x-speakeasy-name-override":"visitProfile","summary":"Read one person's public profile (kept for existing callers)","description":"Read one person; no LinkedIn account needed. detail \"preview\" (default): a quick look; it can miss the current title and older posts. \"full\": every detail we have. Choose full for one person when the job title, how long they have held it, or the whole dated career matters. Preview gives the name, current employer, place, photo, follower count, the opening of the About and the latest posts, in about 3 seconds. Full gives the real headline, the current title with its start date, the dated career, schools, place and country, the About, languages and the connection and follower counts, usually live (readAt says when an older copy was used), in about 2 seconds a person. Cost: 1 credit a person on preview and at most 1 credit a person on full; nothing for a person a search already returned or one not read. creditsUsed says what the call spent. New callers use publicProfile.","tags":["engagement"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"profile":{"type":"string","description":"The person: a profile URL, a vanity slug, or a member URN; a contact id or a name unique among your contacts is resolved to that person."},"detail":{"description":"\"preview\" (default): a quick look; it can miss the current title and older posts. \"full\": every detail we have. Choose full for one person when the job title, how long they have held it, or the whole dated career matters.","type":"string","enum":["preview","full"]}},"required":["profile"]}}}},"responses":{"200":{"description":"The person, in this address's own answer shape","content":{"application/json":{"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 About section, when the profile shows one.","type":"string"},"publicIdentifier":{"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"profileUrn":{"nullable":true,"description":"The member URN when we hold it: the one you asked with, or the one saved on your contact. Otherwise null.","type":"string"},"imageUrl":{"nullable":true,"type":"string"},"email":{"nullable":true,"description":"A work email already found for this contact, otherwise null; to find one, use the email door.","type":"string"},"phone":{"nullable":true,"description":"Always null.","type":"string"},"location":{"nullable":true,"type":"string"},"company":{"nullable":true,"description":"Current company name.","type":"string"},"position":{"nullable":true,"description":"Current job title; usually null on preview (the public page shows the employer only).","type":"string"},"memberDistance":{"nullable":true,"description":"0 for your own profile, 1 once an invitation from one of your accounts to this person was accepted, otherwise null (not known).","type":"number"},"connectionsCount":{"nullable":true,"type":"number"},"followersCount":{"nullable":true,"type":"number"},"isVerified":{"type":"boolean"},"pendingConnection":{"type":"string","enum":["pending","none"],"description":"'pending' when an invitation to this person went out in the last 7 days, otherwise 'none'."},"positions":{"type":"array","items":{"type":"object","properties":{"companyName":{"nullable":true,"type":"string"},"title":{"nullable":true,"type":"string"},"description":{"description":"Position description / responsibilities text. Null when there is none or the read did not answer.","nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"companyLogo":{"nullable":true,"type":"string"},"companyDescription":{"description":"Short description of the company. 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":{"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":"The latest posts the page shows; empty can mean the page showed none.","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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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":"Always empty: kept for the shape.","type":"array","items":{}},"lastReactions":{"description":"Always empty: kept for the shape.","type":"array","items":{}},"aboutFetched":{"type":"boolean"},"cached":{"type":"boolean"},"cachedAt":{"nullable":true,"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"]},"operationId":"connectProfile","x-speakeasy-name-override":"connectProfile","summary":"Queue LinkedIn connection requests","description":"Invite named people from your own LinkedIn 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. When the user says send about the people found or in their list, they mean connection requests: never ask whether they mean messages. Cost: 1 credit for each invitation, once it is sent.","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":"Where each person named now stands: queued, sent in this call, or skipped with the reason","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."},"wouldQueue":{"description":"Only on a dryRun: who a real call would put in line.","type":"array","items":{"type":"object","properties":{"profile":{"type":"string"},"reason":{"type":"string"}},"required":["profile","reason"],"additionalProperties":false}},"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 or no moment can be named.","type":"object","properties":{"kind":{"type":"string","description":"Which kind of block, as a stable code: challenge, session_dead, no_credit, invite_cap, warming_up, 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"7100000000000000003","sharedSecret":"AbCd1234","entityUrn":"urn:li:fs_relInvitation:7100000000000000003","sentAt":"2026-02-20T14:30:00.000Z","senderProfileId":"ACoAAB1234567890ExampleSenderId00000001","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:ACoAAB1234567890"}}],"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"7100000000000000003","sharedSecret":"AbCd1234","senderProfileId":"ACoAAB1234567890ExampleSenderId00000001","firstName":"Cindy","lastName":"Singer"},"schema":{"type":"object","properties":{"invitationId":{"type":"string","minLength":1,"description":"Invitation ID (from the list invitations endpoint)"},"sharedSecret":{"type":"string","minLength":1,"description":"Shared secret / validation token (from the list invitations endpoint)"},"senderProfileId":{"description":"Sender's profile ID (from the list invitations endpoint, e.g. 'ACoAAB1234...'). 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"]},"operationId":"sendMessage","x-speakeasy-name-override":"sendMessage","summary":"Send LinkedIn message","description":"Send a message to the specified recipient from your own LinkedIn account. Cost: 1 credit for each message, once it is sent.","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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 what is stored only and costs 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":"Your stored profile","content":{"application/json":{"example":{"success":true,"linkedinProfileId":"jane-doe","linkedinName":"Jane Doe","linkedinEmail":"jane@example.com","profileUrn":"urn:li:fsd_profile:ACoAAB1234567890","headline":"Building cool stuff","profilePic":null,"profileUrl":"https://www.linkedin.com/in/jane-doe","positions":[{"companyName":"Acme","title":null,"companyUrl":"https://www.linkedin.com/company/acme/","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":"Example University","degreeName":null,"fieldOfStudy":null,"schoolUrl":"https://www.linkedin.com/school/example-university/","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":"The account's numeric LinkedIn member id, an internal key. Not a URL segment; use profileUrl.","type":"string"},"linkedinName":{"nullable":true,"description":"Full name on the connected account","type":"string"},"linkedinEmail":{"nullable":true,"description":"Email on the connected account","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. Null when there is none or the read did not answer.","nullable":true,"type":"string"},"companyUrl":{"nullable":true,"type":"string"},"companyLogo":{"nullable":true,"type":"string"},"companyDescription":{"description":"Short description of the company. 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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 signed out 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Turn this LinkedIn account on or off. Turning it off pauses its connection requests and messages; it stays connected until 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 static IPv4 address."},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 the optional degree details and the check before an invitation."},"scraping":{"type":"object","properties":{"uncapped":{"type":"boolean","description":"True when no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 searches and for reading your own network and posts."},"post":{"description":"Limits for posts on your own profile","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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},"withdraw_invitation":{"description":"Limits for withdrawing sent connection invitations","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 profile actions.","type":"object","properties":{"uncapped":{"type":"boolean","description":"True when no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 no fixed daily or weekly ceiling is configured for this action, so only minIntervalSeconds limits the volume. Connection requests have none: never state a daily or weekly maximum from this field. A new account with a small network is on a weekly warm-up allowance instead, which connection status reports as blocked kind warming_up."},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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","window","blocked","not-on-list"],"description":"next is first in line, not sent; waiting names the place; window means the account's sending hours are shut and opensAt says when they start again; 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"},"opensAt":{"nullable":true,"description":"Only while window: when the account's sending hours start again. A field rather than a sentence, so every reader says the hour in its own words.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["status","detail","clearsItself","fixUrl","kind","opensAt"],"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 at most. 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},"notes":{"type":"object","properties":{"usedUp":{"type":"boolean","description":"LinkedIn's monthly allowance of personal notes is used up, so invitations are sent without their note"},"nextTryAt":{"nullable":true,"description":"When an invitation is next tried with its note, while notes are used up","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"},"maxLength":{"nullable":true,"description":"The longest note this account accepts, known once LinkedIn has refused a longer one","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sentWithoutNote30d":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Invitations sent without the note that was written for them, in the last 30 days"},"message":{"nullable":true,"description":"One sentence saying all of this, suitable to show as written","type":"string"}},"required":["usedUp","nextTryAt","maxLength","sentWithoutNote30d","message"],"additionalProperties":false,"description":"This account's personal notes on invitations. A note LinkedIn will not take is left off and the invitation is still sent, so this is never a block."},"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."},"weeklyAllowance":{"nullable":true,"description":"A new account with a small network sends at most this many invitations in a rolling 7 days while it warms up. Null when no allowance applies.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"allowanceLeft":{"nullable":true,"description":"How many of this week's warm-up allowance are left. capacityPerDay and expectedNext24h never exceed it. Null when no allowance applies.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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. No fixed daily or weekly cap is configured, so this is the ceiling of an established account; a new account with a small network is on a weekly warm-up allowance, which shows as blocked kind warming_up once it is used. 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","notes","waitingTotal","oldestWaitingHours","awaitingResponse","sentLast24h","acceptedLast24h","sentLast7d","weeklyAllowance","allowanceLeft","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","window","blocked","not-on-list"],"description":"next is first in line, not sent; waiting names the place; window means the account's sending hours are shut and opensAt says when they start again; 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"},"opensAt":{"nullable":true,"description":"Only while window: when the account's sending hours start again. A field rather than a sentence, so every reader says the hour in its own words.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}[Tt]\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?([Zz]|[+-]\\d{2}:\\d{2})$"}},"required":["status","detail","clearsItself","fixUrl","kind","opensAt"],"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 staff removed the monthly limit on this workspace. When true, limit and remaining are null."}},"required":["current","limit","remaining","percentage","isUnlimited"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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":"Monthly limit removed by staff","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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 professional profile, or up to 25 in one call, and save each as an enriched contact. One profile is read on preview and several in full, unless detail says otherwise. Preview gives the name, current employer, place, photo, follower count, the opening of the About and the latest posts, in about 3 seconds. Full gives the real headline, the current title with its start date, the dated career, schools, place and country, the About, languages and the connection and follower counts, usually live (readAt says when an older copy was used), in about 2 seconds a person. Your own profile is read in full and never saved. This is the default way to look up or enrich a person. Cost: 1 credit a person on preview and at most 1 credit a person on full; nothing for a person a search already returned or one not read. creditsUsed says what the call spent.","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"},"profileUrls":{"description":"Several profile URLs or slugs, read in one call. Each comes back as its own row, in the order asked, with whether it was found.","minItems":1,"maxItems":25,"type":"array","items":{"type":"string"}},"me":{"description":"Your own profile, read in full and never saved. No profileUrl or slug needed.","type":"boolean"},"country":{"description":"ISO alpha-2 country of the person, when known.","type":"string"},"save":{"default":true,"description":"When true, the fetched profile is saved to your contacts.","type":"boolean"},"detail":{"description":"How much of each person to read. \"preview\" (default for one profile): a quick look; it can miss the current title and older posts. \"full\" (default for several): every detail we have. Choose full for one person when the job title, how long they have held it, or the whole dated career matters. A person a search already returned is not read again.","type":"string","enum":["preview","full"]}}}}}},"responses":{"200":{"description":"Public profile data","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"readFrom":{"description":"Where a profile read in full was read: the record a search of yours already saved, a public record read today, our index, or the live public page.","type":"string","enum":["search","records","index","page"]},"readAt":{"description":"For a profile read from our index or a saved search record: when it was read, so how old the profile is.","type":"string"},"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 profile data."}},"required":["source","creditsUsed","completeness","saved","profile"],"additionalProperties":false},{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"saved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many people were saved to your contacts."},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many distinct people were found."},"notFound":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unreadable":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"profiles":{"type":"array","items":{"type":"object","properties":{"asked":{"type":"string","description":"The address as it was asked."},"outcome":{"type":"string","enum":["found","not_found","unreadable"],"description":"found: read. not_found: the address names no readable profile. unreadable: not read this time; asking again may reach it."},"readFrom":{"description":"How fresh the profile is: from a search of yours (search), read today (records, page), or stored earlier (index); readAt says when.","type":"string","enum":["search","records","index","page"]},"readAt":{"description":"For a profile read from our index or a saved search record: when it was read, so how old the profile is.","nullable":true,"type":"string"},"reason":{"description":"Why an unreadable row was not read.","type":"string","enum":["rate_limited","credits","timed_out","failed"]},"saved":{"type":"boolean"},"contactId":{"type":"string"},"profile":{"type":"object","additionalProperties":{}},"employer":{"description":"The current employer, from the company's own record.","type":"object","additionalProperties":{}},"employerUnread":{"description":"Why the row carries no employer facts.","type":"string"}},"required":["asked","outcome"],"additionalProperties":false},"description":"One row per address asked, in the order asked."},"employerNote":{"description":"What the employer facts on the rows came to.","type":"string"}},"required":["source","creditsUsed","saved","found","notFound","unreadable","profiles"],"additionalProperties":false}]}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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","agentDescription":"Find somebody in particular from public profiles: one person by name, or the people who work at the companies named, one or many at a time, optionally only those in a role. Pass the user's words as sentence. They are saved to the list unless save is skip. For prospects described by role, kind of company and place, use plan_searches. For people like someone, name the companies a company search returns for their company, with their role and perCompany.","agentInput":{"def":{"type":"object","shape":{"limit":{"def":{"type":"default","innerType":{"def":{"type":"number","checks":[{"def":{"type":"number","check":"number_format","abort":false,"format":"safeint"},"type":"number","isFinite":true},{},{}]},"type":"number","isFinite":true},"defaultValue":15},"type":"default"},"perCompany":{"def":{"type":"optional","innerType":{"def":{"type":"number","checks":[{"def":{"type":"number","check":"number_format","abort":false,"format":"safeint"},"type":"number","isFinite":true},{},{}]},"type":"number","isFinite":true}},"type":"optional"},"like":{"def":{"type":"optional","innerType":{"def":{"type":"literal","values":["list"]},"type":"literal","values":{}}},"type":"optional"},"likeCompanies":{"def":{"type":"optional","innerType":{"def":{"type":"array","element":{"def":{"type":"string","checks":[{},{}]},"type":"string"},"checks":[{},{}]},"type":"array","element":{"def":{"type":"string","checks":[{},{}]},"type":"string"}}},"type":"optional"},"save":{"def":{"type":"default","innerType":{"def":{"type":"enum","entries":{"keep":"keep","skip":"skip","ask":"ask"}},"type":"enum","enum":{"keep":"keep","skip":"skip","ask":"ask"},"options":["keep","skip","ask"]},"defaultValue":"keep"},"type":"default"},"more":{"def":{"type":"default","innerType":{"def":{"type":"boolean"},"type":"boolean"},"defaultValue":false},"type":"default"},"sentence":{"def":{"type":"optional","innerType":{"def":{"type":"string","checks":[{}]},"type":"string"}},"type":"optional"},"pastCompanies":{"def":{"type":"optional","innerType":{"def":{"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]},"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]}},"type":"optional"},"excludeProfiles":{"def":{"type":"optional","innerType":{"def":{"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]},"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]}},"type":"optional"},"filters":{"def":{"type":"default","innerType":{"def":{"type":"object","shape":{"title":{"def":{"type":"optional","innerType":{"def":{"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]},"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]}},"type":"optional"},"location":{"def":{"type":"optional","innerType":{"def":{"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]},"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]}},"type":"optional"},"company":{"def":{"type":"optional","innerType":{"def":{"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]},"type":"union","options":[{"def":{"type":"string"},"type":"string"},{"def":{"type":"array","element":{"def":{"type":"string"},"type":"string"}},"type":"array","element":{"def":{"type":"string"},"type":"string"}}]}},"type":"optional"},"countryCode":{"def":{"type":"optional","innerType":{"def":{"type":"string"},"type":"string"}},"type":"optional"}},"checks":[]},"type":"object"},"defaultValue":{}},"type":"default"}},"checks":[]},"type":"object"},"agentBody":{"lookupOnly":true}},"operationId":"publicFindPeople","x-speakeasy-name-override":"publicFindPeople","summary":"Find people from public data","description":"Find people from public profiles: 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-100, 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. When companies to leave out or a company size are set, the answer says how many people it left out: say so. The people come from our index, about 3 weeks old at the median, so a recent job move can be missing; a search answers in about 2 seconds, and one in ten takes about 10 or more. Cost: each search costs by the results it brings back: 4 credits for up to 10, 11 for 25, 49 for 100; reading the profiles adds 1 credit for every 2, and a company size check 1 credit for every 2 companies; people already saved come at no cost. creditsUsed says what the call spent.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"default":{},"description":"Search facets. Provide at least one of title, location, company, industry, or keywords.","type":"object","properties":{"title":{"description":"Role or job title.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"location":{"description":"City, region, or country.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"company":{"description":"Named employer facet: the organisation someone works for, by its own name. A word describing the KIND or MARKET of a company is not an employer name and belongs in industry; nor is its size. Write it the way the organisation spells its own name, correcting an obvious misspelling of one you know.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"industry":{"description":"The kind of company, in the person's own words.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"seniority":{"description":"Seniority words. Used as the title only when title is empty, so with a title put the seniority inside it.","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"},"employees":{"description":"Employer headcount range: only people whose current employer has between min and max employees. Only a size the person asked for in this conversation, kept while they continue that ask; never from a saved target. A company's stage or type is not a size.","type":"object","properties":{"min":{"nullable":true,"type":"integer","minimum":1,"maximum":9007199254740991},"max":{"nullable":true,"type":"integer","minimum":1,"maximum":9007199254740991}}},"monthsInRole":{"description":"Months the person has held their current role: max for a recent start, min for a long one.","type":"object","properties":{"min":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991},"max":{"nullable":true,"type":"integer","minimum":0,"maximum":9007199254740991}}},"excludeCompanies":{"description":"Companies to leave out, by kind or by name; on a people search, the people who work there.","nullable":true,"type":"object","properties":{"kinds":{"description":"Kinds of company to leave out.","nullable":true,"type":"array","items":{"type":"object","properties":{"said":{"type":"string","description":"Their own words for this kind, as written."},"industries":{"type":"array","items":{"type":"string"},"description":"The LinkedIn industry names such companies are filed under."}},"required":["said","industries"]}},"named":{"description":"Companies to leave out, by name.","nullable":true,"type":"array","items":{"type":"string"}}}}}},"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, ask again with more:true: it continues where this one stopped rather than paying for the same people twice.","type":"integer","minimum":1,"maximum":100},"perCompany":{"description":"With two or more companies named in filters.company: how many people to find at each; it replaces limit. Put every company the person listed in that one list, in their order. Each company is searched in its own country, so leave location empty unless they asked for people in one place.","type":"integer","minimum":1,"maximum":25},"like":{"description":"Look for people at companies like the ones the people in this chat's list work at, never at a company already in it; filters.title holds the roles to look for there.","type":"string","enum":["list"]},"likeCompanies":{"description":"Companies the user gives as examples, such as their clients: finds people at companies like them, never at these; filters.title holds the roles to look for there.","minItems":1,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"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"]},"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},"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":"Employers the person used to work for, by the organisation's own name: only people who have left them.","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"}}]}}}}}},"responses":{"200":{"description":"Found and enriched people","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"provider":{"type":"string","description":"Which search 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":"Present when the search could not reach the market that was asked for: everything that came back was about a different subject, so nobody is returned rather than strangers. In words ready to relay; relay it rather than presenting the answer as an empty market.","type":"string"},"laneNote":{"description":"Present when a company's people were found from public pages: it reaches part of the team rather than the full payroll. Relay it verbatim.","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. 'wants-a-plan' means an agent asked for a crowd described by role, kind of company or place, which is a plan of searches (plan-searches), not this lookup; planNote says so. None of the four is a retry, say what happened and change the request.","type":"string","enum":["nothing-to-search","wants-companies","off-topic","wants-a-plan"]},"planNote":{"description":"With wants-a-plan: where a crowd goes instead, in one sentence, to follow as written.","type":"string"},"notFound":{"description":"What you named that the search could not find: a person, a company nobody says in public they work at, or a role nobody there holds. When this is set, no result is that: say so rather than presenting the people returned as them.","type":"array","items":{"type":"string"}},"notFoundNote":{"description":"With notFound: the next step to offer.","type":"string"},"respelledNote":{"description":"Set when a company found nobody as written and was searched under the name it most likely means: which name was searched.","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 could not run. When this is high the result says nothing about the market.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"moreAvailable":{"description":"True while asking again with more can still reach people you have not seen. Absent once this ask is walked out, which is not a failure.","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 run, worth retrying. 'more-available' is the ordinary case.","type":"string","enum":["more-available","axes-exhausted","batch-failed"]},"axesTried":{"description":"Which angles this ask has already tried, one row each.","type":"array","items":{"type":"object","properties":{"axis":{"type":"string","description":"Which angle this row covers."},"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":"Angles not yet used; asking again with more uses them.","type":"array","items":{"type":"object","properties":{"axis":{"type":"string","description":"An angle not yet used."},"queries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many searches that angle could still run."}},"required":["axis","queries"],"additionalProperties":false}},"coverage":{"description":"What this ask has searched, and what it asked for but has not reached yet, over every call of it.","type":"object","properties":{"placesSearched":{"type":"array","items":{"type":"string"},"description":"Places this ask has searched so far."},"placesNotReached":{"type":"array","items":{"type":"string"},"description":"Places asked for that no search has reached yet."},"kindsSearched":{"type":"array","items":{"type":"string"},"description":"Kinds of company this ask has searched so far."},"kindsNotReached":{"type":"array","items":{"type":"string"},"description":"Kinds of company asked for that no search has reached yet; asking again with more reaches them."},"titlesSearched":{"type":"array","items":{"type":"string"},"description":"Job titles this ask has searched so far."},"titlesNotReached":{"type":"array","items":{"type":"string"},"description":"Job titles asked for that no search has reached yet."},"sentenceSearched":{"description":"The words searched exactly as the person wrote them, when they were. A place, kind of company or job title those words name is reached by them and listed in none of the lists above.","type":"string"}},"required":["placesSearched","placesNotReached","kindsSearched","kindsNotReached","titlesSearched","titlesNotReached"],"additionalProperties":false},"sizeFilter":{"description":"What the company-size band did, present whenever the ask carried one.","type":"object","properties":{"min":{"nullable":true,"description":"The smallest employer size asked, or null.","type":"number"},"max":{"nullable":true,"description":"The largest employer size asked, or null.","type":"number"},"kept":{"type":"number","description":"People kept because their employer's own record is inside the size."},"outOfBand":{"type":"number","description":"On-topic people left out because their employer is outside the size."},"sizeUnknown":{"type":"number","description":"On-topic people left out because their employer's size is not known."},"sizeCheckFailed":{"type":"number","description":"Of those, the ones whose employer could not be checked just now."},"applied":{"type":"boolean","description":"False when the size was not applied to this search; reason says why."},"reason":{"description":"Why it was not applied: the search names its answer, the size came from the saved target rather than the ask, or the request did not ask for it.","type":"string","enum":["named-company","saved-target","not-asked"]},"bandKeepsNobody":{"type":"boolean","description":"The search stopped after two searches in a row found nobody at that size."}},"required":["min","max","kept","outOfBand","sizeUnknown","sizeCheckFailed","applied","bandKeepsNobody"],"additionalProperties":false},"sizeNote":{"description":"The size filter's counts in one sentence, to relay as written.","type":"string"},"exclusionFilter":{"type":"object","properties":{"kinds":{"type":"array","items":{"type":"object","properties":{"said":{"type":"string","description":"The person's words for this kind."},"industries":{"type":"array","items":{"type":"string"},"description":"The industry names applied."},"leftOut":{"type":"number","description":"People or companies left out for this kind."}},"required":["said","industries","leftOut"],"additionalProperties":false},"description":"Each kind applied, with how many it left out."},"named":{"type":"object","properties":{"count":{"type":"number","description":"Companies named."},"leftOut":{"type":"number","description":"People or companies left out because they are at, or are, a company named."},"skippedBeforeSearch":{"type":"number","description":"Companies named that this search was about to search inside and never searched."}},"required":["count","leftOut","skippedBeforeSearch"],"additionalProperties":false,"description":"The named companies applied."},"kindUnknown":{"type":"number","description":"Kept although their company's industry is not known."},"checkFailed":{"type":"number","description":"Kept although their company could not be checked just now; asking again checks them."},"applied":{"type":"boolean","description":"False when nothing was checked because the search names its answer."},"reason":{"description":"Why it was not applied: the search names its answer.","type":"string","enum":["named-company"]},"keepsNobody":{"type":"boolean","description":"The search stopped after two searches in a row kept nobody."},"notApplied":{"description":"Exclusions taken out before the search because the person did not ask for them.","type":"array","items":{"type":"object","properties":{"said":{"type":"string"},"industries":{"type":"array","items":{"type":"string"}},"named":{"type":"string"},"reason":{"type":"string","enum":["saved-target","not-asked"],"description":"Why it was taken out: it came from the saved target rather than the ask, or the request did not ask for it."}},"required":["reason"],"additionalProperties":false}}},"required":["kinds","named","kindUnknown","checkFailed","applied","keepsNobody"],"additionalProperties":false,"description":"What the person's exclusions did, present whenever the ask carried any."},"exclusionNote":{"description":"The exclusions' counts in one sentence, to relay as written.","type":"string"},"roleStart":{"description":"What the months-in-role window did, present whenever the ask carried one.","type":"object","properties":{"min":{"nullable":true,"type":"number"},"max":{"nullable":true,"type":"number"},"kept":{"type":"number","description":"People kept whose current role started inside the window."},"outside":{"type":"number","description":"On-topic people left out because their current role started outside it."},"undated":{"type":"number","description":"On-topic people left out because their current role has no start date."},"applied":{"type":"boolean","description":"False when this search names its answer and shows every match however long they have held their role."},"reason":{"type":"string","enum":["named-company"]}},"required":["min","max","kept","outside","undated","applied"],"additionalProperties":false},"roleNote":{"description":"The window's counts in one sentence, to relay as written.","type":"string"},"employerFacts":{"description":"How many people in this answer carry their employer's facts, and why the others do not.","type":"object","properties":{"withFacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People in this answer whose row carries their employer's facts."},"noRecord":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People whose employer has no company record: their rows carry no employer facts."},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People whose employer could not be checked just now; asking again checks them."},"notChecked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People whose employer's record was not read for this answer: their rows carry no employer facts."}},"required":["withFacts","noRecord","failed","notChecked"],"additionalProperties":false},"employerNote":{"description":"Those counts in one sentence, to relay as written.","type":"string"},"namedCompanies":{"description":"A search of two or more named companies: each company's outcome, in the order asked, over every call of this search.","type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The company as its people write it when anybody works there, else as asked."},"country":{"description":"Lowercase ISO alpha-2: the country most of its people found are in.","type":"string"},"people":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People found for this company; one holding a seat at two listed companies counts on both lines and is handed back once."},"state":{"type":"string","enum":["found","nobody-holds-role","nobody-there","nobody-in-place","not-reached","failed"],"description":"found; nobody-holds-role: people work there, none in a role asked; nobody-there: nobody says in public they work there; nobody-in-place: none in the place asked; not-reached: not searched yet, asking again with more continues; failed: could not be searched just now, asking again with more retries it."},"place":{"description":"On nobody-in-place: the country or countries the place filter kept, in words.","type":"string"},"moreHolding":{"description":"People found holding a role asked beyond the number asked per company; not returned.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","people","state"],"additionalProperties":false}},"namedCompaniesNote":{"description":"Those outcomes in one sentence, to relay as written.","type":"string"},"lookalikes":{"description":"A search for people at companies like the ones in the list: what it started from and how it ended. The companies searched are namedCompanies.","type":"object","properties":{"outcome":{"type":"string","enum":["found","nobody-in-roles","no-new-companies","not-reached","waiting","examples-not-found","no-examples","no-roles"],"description":"How a search for people at companies like the ones in the list ended."},"examples":{"type":"array","items":{"type":"string"},"description":"The list's companies whose look-alikes were searched."},"examplesNotFound":{"type":"array","items":{"type":"string"},"description":"List companies no company carries exactly by name."},"examplesFailed":{"type":"array","items":{"type":"string"},"description":"List companies that could not be looked up just now."},"roles":{"type":"array","items":{"type":"string"},"description":"The roles looked for."},"rolesFromList":{"type":"boolean","description":"True when the roles are the ones most held in the list, not the ones asked."},"waiting":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Companies like them found and left for the next search."},"known":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Companies skipped because they were in the list or searched before."}},"required":["outcome","examples","examplesNotFound","examplesFailed","roles","rolesFromList","waiting","known"],"additionalProperties":false},"likeNote":{"description":"That search in one sentence, to relay as written.","type":"string"},"sizeUnknownPeople":{"description":"The on-topic people left out because their employer's size is not known: not saved and not counted in the answer, shown only when asked for.","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"},"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},"employer":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"employees":{"nullable":true,"description":"How many people the company employs, by its own record.","type":"number"},"industry":{"nullable":true,"description":"What kind of company it is, by its own record.","type":"string"},"hq":{"nullable":true,"description":"Where its headquarters are.","type":"object","properties":{"city":{"nullable":true,"type":"string"},"postcode":{"nullable":true,"type":"string"},"country":{"nullable":true,"type":"string"}},"required":["city","postcode","country"],"additionalProperties":false},"founded":{"description":"The year it was founded.","nullable":true,"type":"number"},"linkedinUrl":{"nullable":true,"description":"The company's own page, when known.","type":"string"},"website":{"nullable":true,"type":"string"},"readAt":{"nullable":true,"type":"string"}},"required":["name","employees","industry","hq","linkedinUrl","website","readAt"],"additionalProperties":false,"description":"The person's current employer, from that company's own record, when one was read for them."},"imageUrl":{"description":"The profile's display photo (from the public page's og:image), when the public page carried one. May expire over time, unlike a re-hosted avatar.","type":"string"},"publicIdentifier":{"description":"The profile's public slug, when known.","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"},"month":{"type":"number"}},"required":["year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"year":{"type":"number"},"month":{"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}},"rateLimited":{"description":"Profiles found but not yet read because reads are paced right now.","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"},"allAlreadyInList":{"description":"Every person this search found is already in the list, so nobody new was added. The search worked and the people are right: repeating it finds the same people, and only a different ask finds different ones.","type":"boolean"},"alreadyInListNote":{"description":"Plain-English form of allAlreadyInList, to be relayed rather than reworded.","type":"string"},"unreadable":{"description":"Profiles found but whose page could not be read, so they were not saved. These people exist and the search was right about them; asking again in other words, or more widely, does not change it.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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: the searches and the profiles read.","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}},"excludedCount":{"description":"Rows dropped by excludeProfiles/excludeWords before fetching, so a refinement is visible and never re-paid.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"excludedByWords":{"description":"Of excludedCount, the rows dropped by excludeWords.","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"},"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},"employer":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"employees":{"nullable":true,"description":"How many people the company employs, by its own record.","type":"number"},"industry":{"nullable":true,"description":"What kind of company it is, by its own record.","type":"string"},"hq":{"nullable":true,"description":"Where its headquarters are.","type":"object","properties":{"city":{"nullable":true,"type":"string"},"postcode":{"nullable":true,"type":"string"},"country":{"nullable":true,"type":"string"}},"required":["city","postcode","country"],"additionalProperties":false},"founded":{"description":"The year it was founded.","nullable":true,"type":"number"},"linkedinUrl":{"nullable":true,"description":"The company's own page, when known.","type":"string"},"website":{"nullable":true,"type":"string"},"readAt":{"nullable":true,"type":"string"}},"required":["name","employees","industry","hq","linkedinUrl","website","readAt"],"additionalProperties":false,"description":"The person's current employer, from that company's own record, when one was read for them."},"imageUrl":{"description":"The profile's display photo (from the public page's og:image), when the public page carried one. May expire over time, unlike a re-hosted avatar.","type":"string"},"publicIdentifier":{"description":"The profile's public slug, when known.","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"},"month":{"type":"number"}},"required":["year"],"additionalProperties":false},"endDate":{"nullable":true,"type":"object","properties":{"year":{"type":"number"},"month":{"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 from public data. Each row is the company's own identity: name, homepage, what it says it does, headcount, city, country and founding year. No people and no company page link come back. When a company size, a funding window or companies to leave out are set, the answer says how many companies it left out: say so. The companies come from our index, so a recent change to a company can be missing. Cost: each search costs by the results it brings back: 4 credits for up to 10, 11 for 25, 49 for 100; a company size check adds 1 credit for every 2 companies. creditsUsed says what the call spent.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"filters":{"type":"object","properties":{"title":{"description":"Role or job title.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"location":{"description":"City, region, or country.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"company":{"description":"Named employer facet: the organisation someone works for, by its own name. A word describing the KIND or MARKET of a company is not an employer name and belongs in industry; nor is its size. Write it the way the organisation spells its own name, correcting an obvious misspelling of one you know.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"industry":{"description":"The kind of company, in the person's own words.","anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"seniority":{"description":"Seniority words. Used as the title only when title is empty, so with a title put the seniority inside it.","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"},"employees":{"description":"Headcount range: only companies with between min and max employees. Only a size the person asked for in this conversation, kept while they continue that ask; never from a saved target. A company's stage or type is not a size.","type":"object","properties":{"min":{"nullable":true,"type":"integer","minimum":1,"maximum":9007199254740991},"max":{"nullable":true,"type":"integer","minimum":1,"maximum":9007199254740991}}},"excludeCompanies":{"description":"Companies to leave out, by kind or by name; on a people search, the people who work there.","nullable":true,"type":"object","properties":{"kinds":{"description":"Kinds of company to leave out.","nullable":true,"type":"array","items":{"type":"object","properties":{"said":{"type":"string","description":"Their own words for this kind, as written."},"industries":{"type":"array","items":{"type":"string"},"description":"The LinkedIn industry names such companies are filed under."}},"required":["said","industries"]}},"named":{"description":"Companies to leave out, by name.","nullable":true,"type":"array","items":{"type":"string"}}}},"fundedWithinMonths":{"description":"Whole months: only companies whose latest funding round is inside the last that many months. Only when the person asked for recently funded companies in this conversation, kept while they continue that ask; never from a saved target.","nullable":true,"type":"integer","minimum":1,"maximum":120}},"description":"Search facets. Provide at least one company-level facet: company, industry, location, or keywords. A company named in company finds companies like it, near its size; say what it sells in industry when you know. 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"},"sentence":{"description":"The person's own words for the companies they want. An industry, keywords or a company is still needed beside it: the companies found are checked against those.","type":"string","maxLength":300}},"required":["filters"]}}}},"responses":{"200":{"description":"Matched companies","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"provider":{"type":"string","description":"Which search 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, or its LinkedIn page when it has no other address."},"linkedin":{"description":"The company's LinkedIn page, when the index names it. Null when it does not.","nullable":true,"type":"string"},"imageUrl":{"nullable":true,"description":"The company's logo image, when the row carried one. The link can expire.","type":"string"},"description":{"nullable":true,"description":"Short blurb about the company. Free text, so it names the industry and location in prose rather than as fields, and it is what tells two same-named companies apart.","type":"string"},"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},"latestRound":{"description":"The company's latest funding round. Only on a search that carried a funding window.","type":"object","properties":{"name":{"nullable":true,"description":"The kind of round, as recorded.","type":"string"},"date":{"nullable":true,"description":"The date of the round, exactly as recorded.","type":"string"},"amount":{"nullable":true,"description":"The amount raised in US dollars, when recorded.","type":"number"}},"required":["name","date","amount"],"additionalProperties":false}},"required":["name","website","imageUrl","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},"namedNote":{"description":"Says the first row is the company named in the ask itself.","type":"string"},"sizeFilter":{"description":"What the company-size band did, present whenever the ask carried one.","type":"object","properties":{"min":{"nullable":true,"description":"The smallest company size asked, or null.","type":"number"},"max":{"nullable":true,"description":"The largest company size asked, or null.","type":"number"},"kept":{"type":"number","description":"Companies on this page inside the size."},"outOfBand":{"type":"number","description":"Companies left out because their headcount is outside the size."},"sizeUnknown":{"type":"number","description":"Companies left out because they state no headcount."}},"required":["min","max","kept","outOfBand","sizeUnknown"],"additionalProperties":false},"sizeNote":{"description":"The size filter's counts in one sentence, to relay as written.","type":"string"},"fundingFilter":{"description":"What the funding window did, present whenever the ask carried one.","type":"object","properties":{"months":{"type":"number","description":"The window asked, in months."},"kept":{"type":"number","description":"Companies on this page whose latest round is inside the window."},"outside":{"type":"number","description":"Companies left out because their latest round is older."},"unknown":{"type":"number","description":"Companies left out because no dated round is recorded for them."}},"required":["months","kept","outside","unknown"],"additionalProperties":false},"fundingNote":{"description":"The funding window's counts in one sentence, to relay as written.","type":"string"},"exclusionFilter":{"type":"object","properties":{"kinds":{"type":"array","items":{"type":"object","properties":{"said":{"type":"string","description":"The person's words for this kind."},"industries":{"type":"array","items":{"type":"string"},"description":"The industry names applied."},"leftOut":{"type":"number","description":"People or companies left out for this kind."}},"required":["said","industries","leftOut"],"additionalProperties":false},"description":"Each kind applied, with how many it left out."},"named":{"type":"object","properties":{"count":{"type":"number","description":"Companies named."},"leftOut":{"type":"number","description":"People or companies left out because they are at, or are, a company named."},"skippedBeforeSearch":{"type":"number","description":"Companies named that this search was about to search inside and never searched."}},"required":["count","leftOut","skippedBeforeSearch"],"additionalProperties":false,"description":"The named companies applied."},"kindUnknown":{"type":"number","description":"Kept although their company's industry is not known."},"checkFailed":{"type":"number","description":"Kept although their company could not be checked just now; asking again checks them."},"applied":{"type":"boolean","description":"False when nothing was checked because the search names its answer."},"reason":{"description":"Why it was not applied: the search names its answer.","type":"string","enum":["named-company"]},"keepsNobody":{"type":"boolean","description":"The search stopped after two searches in a row kept nobody."},"notApplied":{"description":"Exclusions taken out before the search because the person did not ask for them.","type":"array","items":{"type":"object","properties":{"said":{"type":"string"},"industries":{"type":"array","items":{"type":"string"}},"named":{"type":"string"},"reason":{"type":"string","enum":["saved-target","not-asked"],"description":"Why it was taken out: it came from the saved target rather than the ask, or the request did not ask for it."}},"required":["reason"],"additionalProperties":false}}},"required":["kinds","named","kindUnknown","checkFailed","applied","keepsNobody"],"additionalProperties":false,"description":"What the person's exclusions did, present whenever the ask carried any."},"exclusionNote":{"description":"The exclusions' counts in one sentence, to relay as written.","type":"string"},"note":{"description":"Present only when the page is empty because the companies found did not read as the kind asked for. Relay it; asking again in other words is the next step.","type":"string"}},"required":["source","creditsUsed","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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/employees":{"post":{"x-bereach":{"cost":"read","resultShape":"list"},"operationId":"publicFindEmployees","x-speakeasy-name-override":"publicFindEmployees","summary":"Find the people at a company from public profiles","description":"The people who work at one named company now, from public profiles. Give the company by name or page address, and a role in keywords to narrow to whoever holds it. The people come from our index, about 3 weeks old at the median, so a recent job move can be missing. Cost: each search buys the smallest page that covers the count, 4 credits for up to 10, 11 for 25, 49 for 100, and another is bought only when the first did not find enough; more pays only for the searches not bought before; nothing when nobody comes back. creditsUsed says what the call spent.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"company":{"type":"string","minLength":1,"description":"The company, by name or by its page address."},"keywords":{"description":"A role to narrow to, written the way people write it on their own profile.","type":"string"},"count":{"default":25,"description":"How many people to return.","type":"integer","minimum":1,"maximum":100},"more":{"default":false,"description":"Continue past the people already returned for this company and role.","type":"boolean"},"sentence":{"description":"The person's own words for who they want at this company. Everyone found is still checked to work at the company.","type":"string","maxLength":300}},"required":["company"]}}}},"responses":{"200":{"description":"People at the company","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"company":{"type":"string","description":"The company as it was searched."},"items":{"type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"currentTitle":{"nullable":true,"description":"Their job at this company, when they state one.","type":"string"},"location":{"nullable":true,"type":"string"},"profileUrl":{"type":"string"},"imageUrl":{"nullable":true,"type":"string"},"employer":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"employees":{"nullable":true,"description":"How many people the company employs, by its own record.","type":"number"},"industry":{"nullable":true,"description":"What kind of company it is, by its own record.","type":"string"},"hq":{"nullable":true,"description":"Where its headquarters are.","type":"object","properties":{"city":{"nullable":true,"type":"string"},"postcode":{"nullable":true,"type":"string"},"country":{"nullable":true,"type":"string"}},"required":["city","postcode","country"],"additionalProperties":false},"founded":{"description":"The year it was founded.","nullable":true,"type":"number"},"linkedinUrl":{"nullable":true,"description":"The company's own page, when known.","type":"string"},"website":{"nullable":true,"type":"string"},"readAt":{"nullable":true,"type":"string"}},"required":["name","employees","industry","hq","linkedinUrl","website","readAt"],"additionalProperties":false,"description":"The person's current employer, from that company's own record, when one was read for them."}},"required":["name","headline","currentTitle","location","profileUrl","imageUrl"],"additionalProperties":false}},"employerFacts":{"description":"How many people in this answer carry their employer's facts, and why the others do not.","type":"object","properties":{"withFacts":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People in this answer whose row carries their employer's facts."},"noRecord":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People whose employer has no company record: their rows carry no employer facts."},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People whose employer could not be checked just now; asking again checks them."},"notChecked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People whose employer's record was not read for this answer: their rows carry no employer facts."}},"required":["withFacts","noRecord","failed","notChecked"],"additionalProperties":false},"employerNote":{"description":"Those counts in one sentence, to relay as written.","type":"string"},"saved":{"nullable":true,"description":"How many of these people were written as contacts by this call. Null when that write failed.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pooled":{"description":"How many were linked into this conversation's list.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"duplicates":{"description":"People this continuation found again that an earlier call already returned. Normal bookkeeping, never a failure.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"matchingKeywords":{"description":"When a role was given: how many people at the company hold it.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"keywordNote":{"description":"Present when nobody found holds the role: the people returned are the company's, not holders of that role. Relay it.","type":"string"},"notFound":{"description":"Present when nobody states in public that they work at this company. Nobody is returned rather than people elsewhere. Relay it.","type":"string"},"publicNote":{"type":"string","description":"What these people are: the ones who say in public that they work there, a slice of the team rather than its full payroll."},"moreAvailable":{"type":"boolean","description":"Whether asking again with more can still return people not yet seen."}},"required":["source","creditsUsed","company","items","saved","publicNote","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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: identity, description, tagline, logo, follower and employee counts, website, head office, industry and founded year, recent posts, and the pages it shows beside it. Recent posts can be mined for people with collect_engagers. Up to date, with industry and founded year, in about 2 seconds, a few more when the company is named rather than given by its page address. Cost: 1 credit for the page and at most 4 more for its industry and founded year (nothing when they are already on file or not found), 4 more when the company is named rather than given by its page address; the same company again the same day is free. creditsUsed says what the call spent.","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, or the company's name: a name is looked up first. Provide this or companyUrl.","type":"string"},"country":{"description":"ISO alpha-2 country of the company, when known.","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"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"completeness":{"type":"string"},"company":{"type":"object","additionalProperties":{},"description":"Company identity, tagline, logo, follower and employee counts, website, head office, industry and founded year (null when unknown), recent posts, and similarCompanies (the pages the company page shows beside it, often what its visitors also viewed rather than its peers; empty when the company is too small). Companies like this one: publicFindCompanies with the company in filters.company."}},"required":["source","creditsUsed","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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","agentDescription":"Find public posts by topic, or by who posted: author, authorCompany, authorTitle, authorLocation."},"operationId":"publicFindPosts","x-speakeasy-name-override":"publicFindPosts","summary":"Find public posts by topic or by who posted","description":"Search public posts by topic or hashtag, by one person (author), by the people at a company (authorCompany), or by a kind of person (authorTitle, authorLocation). Each post carries who published it and when, and can be mined for people with collect_engagers. The people who wrote the posts are saved to the list unless save is skip. Cost: posts by one person cost one search by the posts it brings back: 4 credits for up to 10, 11 for 25, 24 for 50; any other post search costs by the posts it asks for and the authors it checks: 9 credits for up to 10 posts, 24 for 25, 49 for 50 (19 for 10 when a company or a place is checked), plus about 1 credit for every 2 authors checked; nothing when no post comes back; reading the posts in full adds 1 credit a page of results. creditsUsed says what the call spent.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"description":"Topic keyword or hashtag to search posts for. Optional when who posted is given.","type":"string"},"author":{"description":"One person whose own posts are wanted: their profile address, or their full name, with no search for the person first.","type":"string"},"authorCompany":{"description":"Only posts by people who work at this company now.","type":"string"},"authorTitle":{"description":"The role of the people whose posts are wanted. It steers the search; each post's authorHeadline shows the role its author states.","type":"string"},"authorLocation":{"description":"Only posts by people based in this country or city.","type":"string"},"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. Omitted, the last 30 days, or every date for one named author; pass an earlier date for older posts.","type":"string"},"until":{"description":"Only posts published on or before this date, as YYYY-MM-DD.","type":"string"},"sentence":{"description":"The person's own words for the posts they want. query is still needed beside it: the posts found are checked against it.","type":"string","maxLength":300},"includeText":{"description":"A short phrase the posts should contain, other than the words of query. Not with author or authorCompany.","type":"string"},"excludeText":{"description":"A short phrase the posts should not contain.","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"},"commenters":{"default":false,"description":"Also return the people who commented on each post: name, profile link and what they wrote.","type":"boolean"},"save":{"default":"keep","description":"keep (the default) saves the people who wrote the posts into the list; skip only when the posts are a step toward something else.","type":"string","enum":["keep","skip"]}}}}}},"responses":{"200":{"description":"Matched posts","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"provider":{"type":"string","description":"The lane that answered."},"query":{"nullable":true,"description":"The topic that was searched, so a thin result set can be read rather than guessed at. Null when only who posted was asked.","type":"string"},"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; authorKind says whether a person or a company page published it.","type":"string"},"authorKind":{"description":"Whether a person or a company page published the post, read off their own page. Null when neither page was found.","nullable":true,"type":"string","enum":["person","company"]},"authorUrl":{"description":"The publisher's own page: the person's profile or the company page. Null when neither was found.","nullable":true,"type":"string"},"authorPageMissing":{"description":"Why authorUrl is null: no public page holds the post's handle, the read of who wrote it failed, the page found carries another name than the post shows, or the handle is both a person and a company page and the post shows no name to tell them apart.","type":"string","enum":["no_public_page","read_failed","name_differs","person_or_company_unclear"]},"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"},"reactions":{"description":"Reactions on the post, when known.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"comments":{"description":"Comments on the post, when known.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commenters":{"description":"The post's top commenters, when asked for with commenters. The author answering under their own post is left out.","type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"profileUrl":{"type":"string"},"text":{"type":"string","description":"What they wrote under the post."},"reactions":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","profileUrl","text","reactions"],"additionalProperties":false}}},"required":["url","text","author","authorName","authorHeadline","publishedAt"],"additionalProperties":false}},"saved":{"description":"How many post authors this call wrote to the contact list. Absent when the write did not answer.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pooled":{"description":"How many of those authors were linked into the list.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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"},"returned":{"description":"When who posted was asked: the posts the search found before each author was checked.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"kept":{"description":"When who posted was asked: of those, the posts whose author is who was asked for.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"authorNote":{"description":"When who posted was asked: how many posts the author check kept, and on what. Relay it.","type":"string"}},"required":["source","creditsUsed","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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/signals":{"post":{"x-bereach":{"cost":"read"},"operationId":"publicFindSignals","x-speakeasy-name-override":"publicFindSignals","summary":"Find people to contact because something just happened at their company","description":"Two steps from public data. mode events returns dated events (a raise, an appointment, a job opening) for a description of the event, each with its title, date, source page and an id. mode resolve takes companies read in those events, each with a role to reach or the person the event names, and returns the company's LinkedIn page and the people found, each with their profile and the event. A company whose page is not found returns nobody. Events and people already returned never come back; an events ask with includeText keeps its own record, so it can return an event a wider ask already gave. The people found are saved to the list unless save is skip. Each event carries its date; the people come from our index, about 3 weeks old at the median, so a recent job move can be missing. Cost: each search costs by the results it brings back: 4 credits for up to 10, 11 for 25, 49 for 100; in mode resolve, each company costs its searches plus 1 credit for every 2 profiles read, and nothing when nobody comes back. creditsUsed says what the call spent.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["events","resolve"],"description":"events finds dated events; resolve turns companies read in those events into people, each with their company's page."},"description":{"description":"events: the event as a headline or a job posting would state it.","type":"string"},"kind":{"default":"any","description":"events: news for raises and appointments; any for every kind of page, job postings included.","type":"string","enum":["news","any"]},"since":{"description":"events: only events published on or after this date, as YYYY-MM-DD. Omitted, the last 30 days.","type":"string"},"includeText":{"description":"events: a phrase of at most five words every page must contain, other than the words of description.","type":"string"},"limit":{"default":20,"description":"events: how many events to return.","type":"integer","minimum":1,"maximum":25},"items":{"description":"resolve: the companies to turn into people, each with a role to reach there or the person the event names.","minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"event":{"description":"The id of the event this company was read in, as events returned it.","type":"string"},"company":{"type":"string","minLength":1,"description":"The company as the event names it."},"role":{"description":"A role to reach at the company, written the way people write it on their own profile.","type":"string"},"person":{"description":"The full name of the person the event names. Looked up by name alone: their profile can still show their previous employer. With a role too, when no profile under the name shows the company, the people who state that role there now come after them.","type":"string"},"place":{"description":"Where the company is, a country or a city.","type":"string"}},"required":["company"]}},"save":{"default":"keep","description":"resolve: keep (the default) saves the people found into the list; skip only when they are a step toward something else.","type":"string","enum":["keep","skip"]}},"required":["mode"]}}}},"responses":{"200":{"description":"Dated events, or the people they lead to","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"mode":{"type":"string","enum":["events","resolve"]},"events":{"description":"events: dated events not returned before, each with an id to pass to resolve.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"nullable":true,"type":"string"},"date":{"nullable":true,"description":"When the event was published, YYYY-MM-DD. Null when it is not known.","type":"string"},"url":{"type":"string","description":"The source page."},"text":{"nullable":true,"description":"The opening of the source page.","type":"string"}},"required":["id","title","date","url","text"],"additionalProperties":false}},"alreadyReturned":{"description":"events: events this search found again that were already returned, left out. Normal bookkeeping, never a failure.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"items":{"description":"resolve: per company, its page and the people found, not returned before.","type":"array","items":{"type":"object","properties":{"event":{"nullable":true,"description":"The event this company was read in, as it was returned. Null when no known event id was given.","type":"object","properties":{"id":{"type":"string"},"title":{"nullable":true,"type":"string"},"date":{"nullable":true,"description":"When the event was published, YYYY-MM-DD. Null when it is not known.","type":"string"},"url":{"type":"string","description":"The source page."}},"required":["id","title","date","url"],"additionalProperties":false},"company":{"type":"string"},"companyPage":{"nullable":true,"description":"The company's LinkedIn page. Null when none was found, and then nobody is returned for this company.","type":"string"},"people":{"type":"array","items":{"type":"object","properties":{"name":{"nullable":true,"type":"string"},"headline":{"nullable":true,"type":"string"},"currentTitle":{"nullable":true,"description":"Their job at the company when their profile states one, else their current job.","type":"string"},"location":{"nullable":true,"type":"string"},"profileUrl":{"type":"string"},"imageUrl":{"nullable":true,"type":"string"},"companyOnProfile":{"type":"string","enum":["now","before","no"],"description":"Whether their own profile names the company now, before, or not yet: a profile can lag the news by weeks."},"contactId":{"type":"string"},"avatarUrl":{"type":"string"}},"required":["name","headline","currentTitle","location","profileUrl","imageUrl","companyOnProfile"],"additionalProperties":false}},"note":{"description":"Why nobody came back for this company, or what the people shown are when that needs saying. Relay it.","type":"string"}},"required":["event","company","companyPage","people"],"additionalProperties":false}},"saved":{"description":"resolve: how many people this call wrote to the contact list. Null when that write failed.","nullable":true,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pooled":{"description":"resolve: how many were linked into the list.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"description":"events: present when no new event was found, and says why. Relay it.","type":"string"}},"required":["source","creditsUsed","mode"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Enrich a list of contacts","description":"Enrich 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 public_profile per person: On full (the default) each person gets the fullest record we can read: the real headline, the current title with its start date, the dated career, schools, place and country, the About and languages, usually live, in about 2 seconds a person, in the background; preview gives only the basics: name, employer, place and photo. Not for email or phone; ask which people when the target is ambiguous rather than defaulting to everyone. Cost: at most 1 credit a person, nothing for a person a search already returned or one not read; degree details add nothing. creditsUsed says what the call spent.","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"},"detail":{"description":"How much of each person to read. \"preview\": a quick look; it can miss the current title and older posts. \"full\" (default): every detail we have. Keep full unless a quick look at each person is enough. A person a search already returned is not read again.","type":"string","enum":["preview","full"]},"withDegree":{"description":"Degree details: also show how far each person is from you (1st, 2nd or 3rd). Off unless asked.","type":"boolean"}},"required":["contactIds"]}}}},"responses":{"200":{"description":"Batch result (or a stillRunning partial for a batch that outlived this call's wait)","content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"string","enum":["public"]},"batchId":{"type":"string","description":"Pass this to GET the same endpoint if stillRunning is set, to check on it later."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many contacts were actually queued (already-fresh and unreachable ones are skipped up front)."},"visited":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Successfully re-fetched."},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Could not be reached (deleted, restricted, or no public page)."},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Deferred, not attempted this call."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"What the batch has spent so far, in credits: all of it once the batch is done."},"notFound":{"description":"Contact ids in the request that are not yours, left out of the batch. When none of the ids is yours, the call answers 404 with this list and queues nothing.","type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["processing","completed","partial","failed"]},"failureReason":{"type":"string"},"degreeRead":{"description":"With withDegree: how many people's connection degree was read.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degreeMissed":{"description":"With withDegree: how many people's connection degree could not be read.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"degreeUnavailable":{"description":"With withDegree: no connection degree could be read for this batch.","type":"boolean"},"degreeUnavailableReason":{"description":"With degreeUnavailable, the degree details could not be added this time; the rest of each profile is complete.","type":"string","enum":["unavailable"]},"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","creditsUsed","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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/plan-searches":{"post":{"x-bereach":{"cost":"free","agentDescription":"Call when the user wants to find prospects or leads. Pass everything you know about who they sell to, as free text or URLs. Returns the searches to run, or questions to ask the user."},"operationId":"planSearches","x-speakeasy-name-override":"planSearches","summary":"Turn any material into a plan of searches","description":"Read what someone sells and who they want to reach, from their own words, the text of documents or pages, or page addresses read by the server, and answer with a plan of people searches: what was said and what was inferred, the segments with their kinds of company, places and job titles, the searches a run would send and what they cost. While something blocking is missing the answer carries up to five questions and no searches; call again with plan_id and the answers. Free: nothing is searched, charged or saved. In a conversation the plan is that conversation's own, and a later call changes it.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"context":{"description":"Everything known about who the user sells to and who they want to reach, as written: their own words, the text of their documents or pages, their answers to earlier questions. Pass texts whole, not summarised.","type":"string","minLength":1,"maxLength":50000},"urls":{"description":"Pages the server reads itself: the user's own website, a page about their offer or their customers. Only addresses the user gave or a tool returned.","maxItems":5,"type":"array","items":{"type":"string","minLength":1}},"plan_id":{"description":"The plan_id of the plan this call answers or changes, as it was returned.","type":"string","minLength":1},"edits":{"description":"Changes to the plan of plan_id, applied without reading it again and sent with nothing else. icp is a segment id; pick adds a place, or a role or kind that segment offered; any other change goes in context.","minItems":1,"maxItems":20,"type":"array","items":{"anyOf":[{"type":"object","properties":{"op":{"type":"string","enum":["remove"]},"field":{"type":"string","enum":["personas","variants","kinds","places","languages","keywords","size","perCompany","peopleWanted"]},"icp":{"type":"string","minLength":1,"maxLength":80},"id":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["op","field"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["pick"]},"icp":{"type":"string","minLength":1,"maxLength":80},"field":{"type":"string","enum":["roles","kinds","places"]},"value":{"type":"string","minLength":1,"maxLength":200}},"required":["op","icp","field","value"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["first"]},"icp":{"type":"string","minLength":1,"maxLength":80}},"required":["op","icp"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["drop"]},"icp":{"type":"string","minLength":1,"maxLength":80}},"required":["op","icp"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","enum":["more"]}},"required":["op"],"additionalProperties":false}]}}}}}}},"responses":{"200":{"description":"Questions to ask, a ready plan, or nothing to search","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"plan_id":{"type":"string","pattern":"^pln_[0-9a-f]{16}$"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"ready":{"type":"boolean","enum":[false]},"assumptions":{"type":"array","items":{"type":"object","properties":{"fact":{"type":"string","minLength":1},"origin":{"type":"string","enum":["said","inferred","confirmed"]},"source":{"type":"string","minLength":1},"use":{"type":"string","enum":["search","verification"]},"applied":{"type":"boolean","description":"Whether this fact acts on the search now."}},"required":["fact","origin","source","use","applied"],"additionalProperties":false}},"questions":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"question":{"type":"string","minLength":1},"options":{"maxItems":5,"type":"array","items":{"type":"string","minLength":1}},"default":{"description":"What applies when the question is skipped; absent only when nothing can stand in.","type":"string","minLength":1}},"required":["id","question","options"],"additionalProperties":false}},"segments":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"confidence":{"type":"string","enum":["high","medium","low"]},"kinds":{"type":"array","items":{"type":"string","minLength":1}},"every_industry":{"type":"boolean","enum":[true]},"example_kind":{"type":"string","minLength":1},"places":{"type":"array","items":{"type":"string","minLength":1}},"groups":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"titles":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","name"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","minLength":1},"quote":{"type":"string","minLength":1,"maxLength":200}},"required":["source","quote"],"additionalProperties":false}},"offered":{"type":"object","properties":{"roles":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1}},"kinds":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1}},"places":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1}}},"additionalProperties":false}},"required":["id","name","confidence","kinds","places","groups","evidence"],"additionalProperties":false}},"searches":{"maxItems":0,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"segment":{"type":"string","minLength":1},"language":{"type":"string","minLength":1},"where":{"type":"string","minLength":1},"queries":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","segment","language","where","queries"],"additionalProperties":false}},"unread":{"minItems":1,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1},"why":{"type":"string","minLength":1}},"required":["url","why"],"additionalProperties":false}},"next":{"type":"string","minLength":1}},"required":["plan_id","version","ready","assumptions","questions","segments","searches","next"],"additionalProperties":false},{"type":"object","properties":{"plan_id":{"type":"string","pattern":"^pln_[0-9a-f]{16}$"},"version":{"type":"integer","minimum":1,"maximum":9007199254740991},"ready":{"type":"boolean","enum":[true]},"assumptions":{"type":"array","items":{"type":"object","properties":{"fact":{"type":"string","minLength":1},"origin":{"type":"string","enum":["said","inferred","confirmed"]},"source":{"type":"string","minLength":1},"use":{"type":"string","enum":["search","verification"]},"applied":{"type":"boolean","description":"Whether this fact acts on the search now."}},"required":["fact","origin","source","use","applied"],"additionalProperties":false}},"questions":{"maxItems":0,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"question":{"type":"string","minLength":1},"options":{"maxItems":5,"type":"array","items":{"type":"string","minLength":1}},"default":{"description":"What applies when the question is skipped; absent only when nothing can stand in.","type":"string","minLength":1}},"required":["id","question","options"],"additionalProperties":false}},"segments":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"confidence":{"type":"string","enum":["high","medium","low"]},"kinds":{"type":"array","items":{"type":"string","minLength":1}},"every_industry":{"type":"boolean","enum":[true]},"example_kind":{"type":"string","minLength":1},"places":{"type":"array","items":{"type":"string","minLength":1}},"groups":{"minItems":1,"maxItems":3,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"titles":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","name"],"additionalProperties":false}},"evidence":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","minLength":1},"quote":{"type":"string","minLength":1,"maxLength":200}},"required":["source","quote"],"additionalProperties":false}},"offered":{"type":"object","properties":{"roles":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1}},"kinds":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1}},"places":{"maxItems":4,"type":"array","items":{"type":"string","minLength":1}}},"additionalProperties":false}},"required":["id","name","confidence","kinds","places","groups","evidence"],"additionalProperties":false}},"searches":{"minItems":1,"maxItems":24,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"segment":{"type":"string","minLength":1},"language":{"type":"string","minLength":1},"where":{"type":"string","minLength":1},"queries":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","segment","language","where","queries"],"additionalProperties":false}},"people_up_to":{"type":"integer","minimum":1,"maximum":5000},"cost_estimate_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The most the run may spend; it never spends more."},"cost_likely_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"What the run usually spends when the market holds the people."},"held_back":{"description":"Searches and query lines kept out of the plan to fit its bounds or the pool, ready to add.","type":"object","properties":{"searches":{"type":"integer","minimum":0,"maximum":9007199254740991},"queries":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["searches","queries"],"additionalProperties":false},"unread":{"minItems":1,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1},"why":{"type":"string","minLength":1}},"required":["url","why"],"additionalProperties":false}},"next":{"type":"string","minLength":1}},"required":["plan_id","version","ready","assumptions","questions","segments","searches","people_up_to","cost_estimate_credits","cost_likely_credits","next"],"additionalProperties":false},{"type":"object","properties":{"reason":{"type":"string","minLength":1},"searches":{"maxItems":0,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"segment":{"type":"string","minLength":1},"language":{"type":"string","minLength":1},"where":{"type":"string","minLength":1},"queries":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["id","segment","language","where","queries"],"additionalProperties":false}},"unread":{"minItems":1,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1},"why":{"type":"string","minLength":1}},"required":["url","why"],"additionalProperties":false}},"next":{"type":"string","minLength":1}},"required":["reason","searches","next"],"additionalProperties":false}]}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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/run-searches":{"post":{"x-bereach":{"cost":"read","agentDescription":"Run a plan returned by plan_searches, after the user has agreed to it. Uses credits."},"operationId":"runSearches","x-speakeasy-name-override":"runSearches","summary":"Run a plan of searches","description":"Run a ready plan returned by plan-searches, in the background, and save the people it finds into the conversation's list, or your contacts outside one. Answers within about 25 seconds with a receipt: people added so far, credits used, and each search's state. A run answers in about 6 seconds, and one in ten takes about 10 or more; the people come from our index, about 3 weeks old at the median, so a recent job move can be missing. A plan runs once: calling again with the same plan_id answers where its run stands and spends nothing more. Every search is charged to the workspace credit pool like a people search, and the run never spends more than the plan's cost_estimate_credits.","tags":["public"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"plan_id":{"type":"string","minLength":1,"description":"The plan_id of a plan the user agreed to, exactly as it was returned. A plan runs once: calling again with the same plan_id answers where its run stands and spends nothing more."}},"required":["plan_id"]}}}},"responses":{"200":{"description":"The run's receipt","content":{"application/json":{"schema":{"type":"object","properties":{"plan_id":{"type":"string","pattern":"^pln_[0-9a-f]{16}$"},"state":{"type":"string","enum":["running","done","stopped","failed","not_started","busy"]},"stopped_because":{"type":"string","enum":["plan_done","reached_target","out_of_credits","daily_limit","search_paused","market_not_reachable","round_limit","ceiling_reached","search_unavailable"]},"added":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"New rows in this list."},"already_known":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"People found again who are already in this list."},"removed":{"description":"People found whom the user removed from this list earlier: left out and not added back.","type":"integer","minimum":0,"maximum":9007199254740991},"list_total":{"description":"The list's size after this run, the only running total.","type":"integer","minimum":0,"maximum":9007199254740991},"not_saved":{"description":"People found but not saved.","type":"object","properties":{"unreadable":{"type":"integer","minimum":0,"maximum":9007199254740991},"credits_ran_out":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["unreadable","credits_ran_out"],"additionalProperties":false},"credits_used":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Credits this run has spent so far, over every call on this plan_id."},"cost_estimate_credits":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The most this run may spend: the plan's ceiling."},"searches":{"maxItems":24,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"icp":{"type":"string","minLength":1},"rank":{"type":"integer","minimum":1,"maximum":9007199254740991},"label":{"type":"string","minLength":1},"state":{"type":"string","enum":["queued","searching","done","not_reachable","stopped","failed"]},"added":{"type":"integer","minimum":0,"maximum":9007199254740991},"queries_run":{"type":"integer","minimum":0,"maximum":9007199254740991},"queries_planned":{"type":"integer","minimum":0,"maximum":9007199254740991},"note":{"type":"string","minLength":1}},"required":["id","icp","rank","label","state","added","queries_run","queries_planned"],"additionalProperties":false}},"icps":{"minItems":2,"maxItems":4,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"added":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","added"],"additionalProperties":false}},"not_applied":{"description":"Plan fields kept for verification later, which nothing checked.","minItems":1,"type":"array","items":{"type":"string","minLength":1}},"notes":{"description":"The searches' own sentences, to relay as written.","minItems":1,"type":"array","items":{"type":"string","minLength":1}},"running_plan_id":{"description":"On busy: the plan whose run is going in this list.","type":"string","pattern":"^pln_[0-9a-f]{16}$"},"next":{"type":"string","minLength":1}},"required":["plan_id","state","added","already_known","credits_used","cost_estimate_credits","searches","next"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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, newest first, each with the day it was sent. With olderThanDays, only the ones still pending after that many days: the list to withdraw from.","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},"olderThanDays":{"description":"Only invitations sent at least this many days ago; start and count then page through those","type":"integer","minimum":1,"maximum":365}}}}}},"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,"description":"When the invitation was sent (ISO 8601), read off its id","type":"string"},"sentTime":{"nullable":true,"description":"The same moment in epoch milliseconds","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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/withdraw/linkedin/invitation":{"post":{"x-bereach":{"cost":"write"},"operationId":"withdrawInvitation","x-speakeasy-name-override":"withdrawInvitation","summary":"Withdraw a sent connection invitation","description":"Withdraws a pending LinkedIn connection invitation this account sent. Take the invitation from the sent invitations list. LinkedIn then blocks inviting the same person again for three weeks.","tags":["actions"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"example":{"invitationId":"7100000000000000003","profileUrn":"ACoAAB1234567890ExampleInviteeId0000001","publicIdentifier":"cindy-singer","firstName":"Cindy","lastName":"Singer"},"schema":{"type":"object","properties":{"invitationId":{"type":"string","minLength":1,"description":"The invitation to withdraw: invitationId or invitationUrn from the sent invitations list"},"profileUrn":{"description":"toMember.profileUrn of the same entry. With publicIdentifier, firstName and lastName it saves reading the list again","type":"string"},"publicIdentifier":{"description":"toMember.publicIdentifier of the same entry","type":"string"},"firstName":{"description":"targetFirstName of the same entry","type":"string"},"lastName":{"description":"targetLastName of the same entry","type":"string"}},"required":["invitationId"]}}}},"responses":{"200":{"description":"Invitation withdrawn","content":{"application/json":{"example":{"success":true,"message":"Invitation withdrawn","invitationId":"7100000000000000003","creditsUsed":1,"retryAfter":6},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"message":{"type":"string"},"invitationId":{"type":"string"},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"required":["success","message","invitationId","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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 your home feed, most relevant (RELEVANCE) or newest first (REV_CHRON), each with its author, text and engagement counts.","tags":["engagement"],"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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. 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","inbound"]},"sourceAngle":{"description":"Which lead-gen angle found this.","type":"string"},"notes":{"type":"string"}},"required":["linkedinUrl","name","source"]},"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 left out because their URL carried no resolvable identity. Not counted in skipped.","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","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"},"whyNow":{"description":"A dated reason to write to this person now, with its source page.","type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"url":{"type":"string"}},"required":["text","at","url"],"additionalProperties":false},"fit":{"description":"The fit check's 0 to 100 score on this list, the persona it read the person as, and why.","type":"object","properties":{"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"persona":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["score","persona","note"],"additionalProperties":false},"run":{"type":"object","additionalProperties":{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 as field_asc or field_desc. Fields: updatedAt (most recently active), lastRepliedAt, lastContactedAt, createdAt, name, profileUpdatedAt. Default: createdAt_desc, newest first. With campaignId also whyNowAt_desc, the most recent reason to write first, and fitScore_desc, best fit first; people without one follow.","type":"string"},"description":"Sort key as field_asc or field_desc. Fields: updatedAt (most recently active), lastRepliedAt, lastContactedAt, createdAt, name, profileUpdatedAt. Default: createdAt_desc, newest first. With campaignId also whyNowAt_desc, the most recent reason to write first, and fitScore_desc, best fit first; people without one follow."},{"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":"fitAtLeast","schema":{"description":"With campaignId: only the people the fit check scored at least this.","type":"integer","minimum":0,"maximum":100},"description":"With campaignId: only the people the fit check scored at least this."},{"in":"query","name":"engaged","schema":{"description":"Filters the saved list by default to people outreach has reached: invited, drafted to, messaged, replied, or marked do-not-contact; pass false for every saved row including people only found, 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 by default to people outreach has reached: invited, drafted to, messaged, replied, or marked do-not-contact; pass false for every saved row including people only found, 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","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"},"whyNow":{"description":"A dated reason to write to this person now, with its source page.","type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"url":{"type":"string"}},"required":["text","at","url"],"additionalProperties":false},"fit":{"description":"The fit check's 0 to 100 score on this list, the persona it read the person as, and why.","type":"object","properties":{"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"persona":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["score","persona","note"],"additionalProperties":false},"run":{"type":"object","additionalProperties":{"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},"matched":{"description":"Present only when total is capped to the rows that can be paged: how many people matched in all.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["limit","offset","total"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 campaigns","description":"Get one saved person: profile snapshot, outreach status and the lists they are in, with their stage in each. The activity log is contacts_get_activities.","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","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"},"whyNow":{"description":"A dated reason to write to this person now, with its source page.","type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"url":{"type":"string"}},"required":["text","at","url"],"additionalProperties":false},"fit":{"description":"The fit check's 0 to 100 score on this list, the persona it read the person as, and why.","type":"object","properties":{"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"persona":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["score","persona","note"],"additionalProperties":false},"run":{"type":"object","additionalProperties":{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. Required with lifecycleStage: take it from the person's campaigns in a contacts result.","type":"string"},"description":"Scopes the write to one list. Required with lifecycleStage: take it from the person's campaigns in a contacts result."},{"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 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","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"},"whyNow":{"description":"A dated reason to write to this person now, with its source page.","type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"url":{"type":"string"}},"required":["text","at","url"],"additionalProperties":false},"fit":{"description":"The fit check's 0 to 100 score on this list, the persona it read the person as, and why.","type":"object","properties":{"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"persona":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["score","persona","note"],"additionalProperties":false},"run":{"type":"object","additionalProperties":{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"The list a list change (lifecycleStage) lands on: take it from the person's campaigns in a contacts result. Inside a conversation that has its own list, that list is used when this is left out.","type":"string"},"description":"The list a list change (lifecycleStage) lands on: take it from the person's campaigns in a contacts result. Inside a conversation that has its own list, that list is used when this is left out."}],"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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},"foundPeople":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Everyone found, each person counted once, not counting removed. The funnel counts a person once per list they are on."},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"required":["success","funnel","foundPeople","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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"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":"People on this list, not counting 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"}},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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","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"},"whyNow":{"description":"A dated reason to write to this person now, with its source page.","type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"url":{"type":"string"}},"required":["text","at","url"],"additionalProperties":false},"fit":{"description":"The fit check's 0 to 100 score on this list, the persona it read the person as, and why.","type":"object","properties":{"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"persona":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["score","persona","note"],"additionalProperties":false},"run":{"type":"object","additionalProperties":{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. 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","inbound"]},"sourceAngle":{"description":"Which lead-gen angle found this.","type":"string"},"notes":{"type":"string"}},"required":["linkedinUrl","name","source"]},"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"}},"alreadyLinked":{"description":"Of the skipped rows, the people who were already on this list.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"bucketed":{"description":"Rows left out because their URL carried no resolvable identity. Not counted in skipped.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["created","skipped","errors"],"additionalProperties":false},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 the person with the lists they are in.","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","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"},"whyNow":{"description":"A dated reason to write to this person now, with its source page.","type":"object","properties":{"text":{"type":"string"},"at":{"type":"string"},"url":{"type":"string"}},"required":["text","at","url"],"additionalProperties":false},"fit":{"description":"The fit check's 0 to 100 score on this list, the persona it read the person as, and why.","type":"object","properties":{"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"persona":{"nullable":true,"type":"string"},"note":{"nullable":true,"type":"string"}},"required":["score","persona","note"],"additionalProperties":false},"run":{"type":"object","additionalProperties":{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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/signals":{"post":{"x-bereach":{"cost":"read"},"operationId":"contactsAddSignals","x-speakeasy-name-override":"addSignals","summary":"Add signals to a list","description":"Starts, in the background, a run that gives each person on a list a dated reason to write to them now: a new role, their own recent posts, dated news about their company. Answers at once with the most the run costs; call again with start false for its progress.","tags":["contacts"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"campaignId":{"type":"string","description":"The list to read."},"start":{"description":"false reads where the last run stands and what a new one costs at most, without starting one.","type":"boolean"}},"required":["campaignId"]}}}},"responses":{"200":{"description":"Whether a run started, the last run, and the quote","content":{"application/json":{"schema":{"type":"object","properties":{"started":{"type":"boolean"},"running":{"type":"boolean"},"progress":{"nullable":true,"description":"The run this call started, else the last run, or null when the list never had one.","type":"object","properties":{"state":{"type":"string","enum":["running","done","stopped","failed"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"peopleRead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"companies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"companiesRead":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People who got a reason."},"credits":{"type":"number"},"startedAt":{"type":"string"},"endedAt":{"type":"string"}},"required":["state","total","peopleRead","companies","companiesRead","found","credits","startedAt"],"additionalProperties":false},"people":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People a run reads."},"companies":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Their distinct companies, one news search each."},"credits":{"type":"number","description":"The most a run costs, in credits."},"run":{"nullable":true,"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["reasons","fit"]},"state":{"type":"string","enum":["running","done","stopped","failed"]},"stoppedReason":{"type":"string","enum":["user","credits","vendor","lost"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"done":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"none":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"number"},"creditsMax":{"type":"number"},"startedAt":{"type":"string"},"endedAt":{"type":"string"},"announcedAt":{"type":"string"},"stopRequestedAt":{"type":"string"},"contactIds":{"type":"array","items":{"type":"string"}},"extra":{"type":"object","additionalProperties":{"type":"number"}}},"required":["id","kind","state","total","done","found","none","failed","skipped","credits","creditsMax","startedAt"],"additionalProperties":false},"quote":{"type":"object","properties":{"kind":{"type":"string","enum":["reasons","fit"]},"people":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadyDone":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"number"},"creditsLeft":{"nullable":true,"type":"number"},"confirm":{"type":"boolean"},"affordable":{"type":"boolean"},"affordablePeople":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"extra":{"type":"object","additionalProperties":{"type":"number"}}},"required":["kind","people","alreadyDone","credits","creditsLeft","confirm","affordable","affordablePeople"],"additionalProperties":false},"refused":{"type":"string","enum":["credits"]},"stopping":{"type":"boolean"},"list_url":{"description":"The list in the app, to give the user.","type":"string"}},"required":["started","running","progress","people","companies","credits","run","quote"],"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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/fit-check":{"post":{"x-bereach":{"cost":"free"},"operationId":"contactsCheckFit","x-speakeasy-name-override":"checkFit","summary":"Check fit on a list","description":"Scores each person on a list 0 to 100 against an ideal customer and its personas, with the persona each reads as and one line of why, and saves the setup on the list. Informative only: it hides and blocks nobody.","tags":["contacts"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"campaignId":{"type":"string","description":"The list to check."},"icp":{"description":"Who the ideal customer is, in the user's words. Left out, the setup saved on this list is reused, else the one its search was read as; a list with neither needs it.","type":"string"},"personas":{"description":"The personas targeted, one per entry, used with icp.","type":"array","items":{"type":"string"}},"rescore":{"description":"Check everybody again, not only the people unchecked since the setup changed.","type":"boolean"}},"required":["campaignId"]}}}},"responses":{"200":{"description":"How many people were scored","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"checked":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"scored":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failedBatches":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"People past the most one check reads."},"setup":{"type":"object","properties":{"icp":{"type":"string"},"personas":{"type":"array","items":{"type":"string"}}},"required":["icp","personas"],"additionalProperties":false,"description":"What the people were checked against."},"started":{"type":"boolean"},"running":{"type":"boolean"},"run":{"nullable":true,"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["reasons","fit"]},"state":{"type":"string","enum":["running","done","stopped","failed"]},"stoppedReason":{"type":"string","enum":["user","credits","vendor","lost"]},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"done":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"none":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"skipped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"number"},"creditsMax":{"type":"number"},"startedAt":{"type":"string"},"endedAt":{"type":"string"},"announcedAt":{"type":"string"},"stopRequestedAt":{"type":"string"},"contactIds":{"type":"array","items":{"type":"string"}},"extra":{"type":"object","additionalProperties":{"type":"number"}}},"required":["id","kind","state","total","done","found","none","failed","skipped","credits","creditsMax","startedAt"],"additionalProperties":false},"quote":{"type":"object","properties":{"kind":{"type":"string","enum":["reasons","fit"]},"people":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"alreadyDone":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"credits":{"type":"number"},"creditsLeft":{"nullable":true,"type":"number"},"confirm":{"type":"boolean"},"affordable":{"type":"boolean"},"affordablePeople":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"extra":{"type":"object","additionalProperties":{"type":"number"}}},"required":["kind","people","alreadyDone","credits","creditsLeft","confirm","affordable","affordablePeople"],"additionalProperties":false},"refused":{"type":"string","enum":["credits"]},"stopping":{"type":"boolean"},"list_url":{"description":"The list in the app, to give the user.","type":"string"}},"required":["success","checked","scored","failedBatches","skipped","setup"],"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}}}}}}},"/emails/find":{"post":{"x-bereach":{"cost":"free"},"operationId":"findEmails","x-speakeasy-name-override":"findEmails","summary":"Find work emails","description":"Find the work email of up to 25 people, saved people by contact id or anyone by profile address, and keep each email found on the saved contact. Each email found uses one email credit; email credits are bought in packs of 1,000, apart from the plan's credits. A person with no email found costs nothing. Available through the Claude connector only.","tags":["contacts"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactIds":{"description":"Saved people, by the contact ids a contacts or search result returned.","maxItems":25,"type":"array","items":{"type":"string"}},"profileUrls":{"description":"People by their profile address, saved or not. The email is kept on the contact when the person is saved.","maxItems":25,"type":"array","items":{"type":"string"}}}}}}},"responses":{"200":{"description":"One row per person, with the email credits this call spent","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"people":{"type":"array","items":{"type":"object","properties":{"contactId":{"nullable":true,"type":"string"},"profileUrl":{"nullable":true,"type":"string"},"name":{"nullable":true,"type":"string"},"email":{"nullable":true,"type":"string"},"verified":{"nullable":true,"description":"True when the mailbox was checked; null when nothing was said about it.","type":"boolean"},"status":{"type":"string","enum":["found","already_saved","already_found","not_found","not_looked_up","unavailable","unknown_contact"],"description":"found: found now, one email credit. already_saved: the email was already on the contact, free. already_found: found earlier for this person, who is not saved, free. not_found: none found, free. not_looked_up: no email credit left, free. unavailable: could not be looked up now, free. unknown_contact: no saved person has this contact id, free."},"saved":{"type":"boolean","description":"The email is on the saved contact."}},"required":["contactId","profileUrl","name","email","verified","status","saved"],"additionalProperties":false}},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"emailCreditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Email credits this call spent: one per email found now."},"buyCreditsUrl":{"description":"Where to buy a pack of email credits, when they ran out.","type":"string"},"note":{"type":"string"}},"required":["success","people","found","emailCreditsUsed"],"additionalProperties":false}}}},"400":{"description":"The server cannot or will not process the request due to something that is perceived to be a client error. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. Connection requests and messages then go from the selected account.","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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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`. `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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 suggested to you","description":"List the people suggested to your account on My Network, with name, headline, profile URL and the reason given 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 given for suggesting this person, word for word. Null when none was given, which is ordinary.","type":"string"},"connectionDegree":{"type":"string","nullable":true,"enum":[null],"description":"Always null. These people are not connections, and how far away they are is not known."}},"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 were suggested for this call. The denominator for `unresolved`, and not the same as `count`: suggestions come in fixed blocks, so asking for fewer still reads a whole block."},"unresolved":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Suggested people whose identity was not shown, 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. Up to date, newest first. Cost: at most 1 credit a page, nothing when nothing was read.","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. A start above 0 without paginationToken is refused: this feed pages by paginationToken.","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"},"profileUrl":{"description":"Your own profile address, when it is not on file yet.","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":{"nullable":true,"description":"Total reactions on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commentsCount":{"nullable":true,"description":"Total top-level comments on this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sharesCount":{"nullable":true,"description":"Total shares/reposts of this post, null when not shown.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 are looked up when asked; the closed-value kinds come from a fixed list."},"required":true,"description":"Which kind of value to resolve. Entity kinds are looked up when asked; the closed-value kinds come from a fixed list."},{"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: a lookup, our alias list, or the Sales Navigator list of values.","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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 first messages and where each stands","description":"List messages with optional filters by status, contact, or campaign. Valid status values: draft | sending | sent | failed | cancelled. The status filter is exact: `scheduled` rows are legacy first messages or approved connection requests. Each row carries `firstDm`, where that person's first message stands. Do NOT pass outreachStatus values (like 'replied') here.","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 or lead), or rejected, meaning removed.","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","window","blocked","not-on-list"]},"detail":{"type":"string"},"clearsItself":{"nullable":true,"type":"boolean"},"fixUrl":{"nullable":true,"type":"string"},"kind":{"nullable":true,"type":"string"},"opensAt":{"nullable":true,"type":"string"}},"required":["status","detail","clearsItself","fixUrl","kind","opensAt"],"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"]},"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. 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 or lead), or rejected, meaning removed.","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","window","blocked","not-on-list"]},"detail":{"type":"string"},"clearsItself":{"nullable":true,"type":"boolean"},"fixUrl":{"nullable":true,"type":"string"},"kind":{"nullable":true,"type":"string"},"opensAt":{"nullable":true,"type":"string"}},"required":["status","detail","clearsItself","fixUrl","kind","opensAt"],"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"},"line":{"description":"What approving did, present when the request asked for approval: messages that entered the line, were put back, were already there or were held, and the rows the line would not take.","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},"firstDm":{"description":"On a duplicate that was approved, the same report as `line`.","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},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"]},"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. 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."},"bumped":{"description":"Among alreadyQueued, messages moved to the front.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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, which contactIds needs. Prefer messageIds, read from the outbox","type":"array","items":{"type":"string"}},"campaignId":{"description":"The list to cancel within","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},"ineligible":{"description":"Named messages that could not be cancelled, with the status they were in.","type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"currentStatus":{"type":"string"}},"required":["id","currentStatus"],"additionalProperties":false}},"notFound":{"description":"Named message ids that match nothing.","type":"array","items":{"type":"string"}},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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, what they sell, Messaging Playbook). Filter by type and scope; results are paged. Entries come back as a 200-char preview; pass fullContent=true to read one entry in full, which is how to read a specific saved context such as a playbook.","tags":["context"],"security":[{"token":[]}],"parameters":[{"in":"query","name":"scope","schema":{"description":"Filter by scope, prefix-matched: \"user\" matches owner context and every saved playbook, \"user:playbook:\" every saved playbook.","type":"string"},"description":"Filter by scope, prefix-matched: \"user\" matches owner context and every saved playbook, \"user:playbook:\" every saved playbook."},{"in":"query","name":"type","schema":{"description":"Filter by type (e.g. \"playbook\")","type":"string"},"description":"Filter by type (e.g. \"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":{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 (Messaging Playbook, user profile, what they sell) the moment the user says save or remember, identity facts as type \"user-profile\". Who they want to find is never saved here: that is the search plan. 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. To delete a saved memory, an old ICP included, send its type and scope with remove true and no content.","tags":["context"],"security":[{"token":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","description":"One of three closed slots, user-profile, offering or playbook, chosen by what the content means for outreach (global identity or offering, or a named first-DM voice), never a free-form custom:* slug. A remove also takes icp, to delete an old saved ICP."},"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:playbook:<slug>\" (identity/offering fields keep plain \"user\", rejected for playbook); to reuse a voice already saved instead of rewriting it, send its existing scope alone with no content.","type":"string"},"label":{"description":"Display label","type":"string"},"remove":{"description":"True deletes the saved memory of this type (icp included) at this scope, or with this label, instead of saving, and unbinds it from every list that used it. Send no content.","type":"boolean"}},"required":["type"]}}}},"responses":{"200":{"description":"Context saved, or removed","content":{"application/json":{"schema":{"anyOf":[{"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"required":["success","entry","creditsUsed","retryAfter"],"additionalProperties":false},{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"removed":{"type":"object","properties":{"type":{"type":"string"},"label":{"nullable":true,"type":"string"},"scope":{"type":"string"}},"required":["type","label","scope"],"additionalProperties":false,"description":"The memory that was deleted."},"unboundFrom":{"type":"array","items":{"type":"string"},"description":"Names of the lists that used it and no longer do."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"required":["success","removed","unboundFrom","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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 alerts and activity: replies received, connections accepted, and warnings about a LinkedIn account that signed out or an AI error. Use the cursor to poll for newer ones. 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":["reply:received","connection:accepted","campaign:rate_limited","campaign:linkedin_expired","credential:llm_error","credential:linkedin_long_broken"]},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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; 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 put in line","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,"description":"Invitations put in line so these messages can follow; not in invitationsApproved."},"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."},"creditsUsed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Credits this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"required":["success","approved","rejected","ineligible","invitationsApproved","line","laneBlocked","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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Account snapshot: pipeline, every saved context, pending drafts, accounts and events in one call. Call it for any of those facts; to read one saved context use context_list by type= and scope=.","tags":["tasks"],"security":[{"token":[]}],"responses":{"200":{"description":"Session snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"pipeline":{"type":"object","additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"description":"List memberships counted by stage, with a total that includes removed. A person on two lists counts twice."},"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"},"simulateWrites":{"type":"boolean"},"isCurrent":{"type":"boolean"}},"required":["id","name","plan","headline","status","isUnlimited","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"},"simulateWrites":{"type":"boolean"},"isCurrent":{"type":"boolean"}},"required":["id","name","plan","headline","status","isUnlimited","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}},"recentEvents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["reply:received","connection:accepted","campaign:rate_limited","campaign:linkedin_expired","credential:llm_error","credential:linkedin_long_broken"]},"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}}},"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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, connection settings, 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":"Connection mode for the account.","type":"string"},"country":{"description":"Country the account connects from, ISO alpha-2, uppercase on this surface.","type":"string"},"rotationHours":{"description":"How many hours the connection location is kept before it changes.","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"},"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":"Connection mode for the account.","type":"string"},"country":{"description":"Country the account connects from, ISO alpha-2, uppercase on this surface.","type":"string"},"rotationHours":{"description":"How many hours the connection location is kept before it changes.","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. A location change also updates the connection settings of the accounts.","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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 and frees the Pro seat if the account held one.","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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 this call spent, net of anything given back. 0 when nothing was charged: a free read, a cached answer, nothing delivered."},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before another call of the same type. 0 means no wait is needed."}},"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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_...). It can be read again with the get API token operation."},"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot or will not process the request due to something that is perceived to be a client error","code":"bad_request"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Although HTTP specifies \"unauthorized\", this response means \"unauthenticated\"","code":"unauthorized"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted). The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The caller is authenticated but not allowed","code":"forbidden"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server cannot find the requested resource","code":"not_found"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request conflicts with the current state of the server","code":"conflict"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The requested content has been permanently deleted from the server","code":"invite_expired"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The request was well-formed but was unable to be followed due to semantic errors","code":"unprocessable_entity"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 retryAfter for the wait time in seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Rate limit exceeded","code":"rate_limit_exceeded"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"string"},"quotaKind":{"type":"string","enum":["credits","daily-cap","linkedin-rate","ai-model-rate","pacing"]}},"required":["code","message"],"additionalProperties":false}},"required":["success","error"],"additionalProperties":false}]}}}},"500":{"description":"The server encountered a situation it does not know how to handle. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"The server encountered a situation it does not know how to handle","code":"internal_server_error"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"An upstream service returned an error","code":"bad_gateway"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds. The body is the flat `{ error: \"<text>\" }` form, with `code` when the answer carries one; a few answers use the envelope.","content":{"application/json":{"example":{"error":"Capacity is temporarily exceeded","code":"service_unavailable"},"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"string","description":"What went wrong, in words."},"code":{"description":"A machine-readable code, when the answer carries one.","type":"string"},"message":{"type":"string"},"target":{"description":"The address the failure was about, when there is one.","type":"string"},"retryAfter":{"description":"Seconds to wait before retrying.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"upgradeUrl":{"type":"string"}},"required":["error"],"additionalProperties":false},{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","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\" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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 caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","content":{"application/json":{"example":{"success":false,"error":{"code":"forbidden","message":"The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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://api.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://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"An upstream service returned an error. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"bad_gateway","message":"An upstream service returned an error. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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":"Capacity is temporarily exceeded. Retry after a few seconds.","content":{"application/json":{"example":{"success":false,"error":{"code":"service_unavailable","message":"Capacity is temporarily exceeded. Retry after a few seconds.","docs":"https://api.bereach.ai"}},"schema":{"type":"object","properties":{"success":{"default":false,"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"docs":{"type":"string","format":"uri"},"details":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"upgradeUrl":{"type":"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"}}}}