{"openapi":"3.2.0","info":{"title":"LinkedIn API","description":"Read-only REST API for LinkedIn people, company, job, and post data.","version":"1.0.0"},"servers":[{"url":"https://linkedin.jojapi.net"}],"security":[{"ApiKeyAuth":[]}],"tags":[{"name":"Person"},{"name":"Companies"},{"name":"Jobs"},{"name":"Posts"}],"x-agent-commerce":{"catalog_url":"https://linkedin.jojapi.net/_jojapi/agent/plans","discovery_url":"https://linkedin.jojapi.net/.well-known/x402","directory_url":"https://agents.jojapi.net/apis/linkedin","docs":"https://docs.jojapi.com/consumers/agents"},"paths":{"/person-profile":{"get":{"operationId":"get_person_profile","summary":"Get a person's profile","description":"Returns a full profile including experience, education, and skills.\n\nObtain a `memberId` from `/people/search` or `/company/{companyId}/employees`.\nNote that profiles which are private or outside your network cannot be retrieved;\nthese appear in listings with the name `LinkedIn Member`.","tags":["Person"],"responses":{"200":{"description":"The person's profile.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"object","properties":{"fullName":{"type":["string","null"]},"headline":{"type":["string","null"],"description":"The person's professional headline.","example":"Software Engineer at Example"},"location":{"type":["string","null"]},"profileImage":{"type":["string","null"],"format":"uri"},"about":{"type":["string","null"],"description":"The free-text summary from the profile's About section."},"currentPosition":{"type":["string","null"]},"currentCompany":{"type":["string","null"]},"experience":{"type":"array","items":{"type":"object","properties":{"company":{"type":["string","null"]},"position":{"type":["string","null"]},"startDate":{"type":["string","null"],"description":"Start date, as `YYYY-MM` or `YYYY` depending on what the profile specifies.\n","examples":["2022-03","2018"]},"endDate":{"type":["string","null"],"description":"End date, or `null` if this is a current position."},"location":{"type":["string","null"]},"description":{"type":["string","null"]}}}},"education":{"type":"array","items":{"type":"object","properties":{"school":{"type":["string","null"]},"degree":{"type":["string","null"]},"field":{"type":["string","null"]},"startDate":{"type":["string","null"],"example":"2015"},"endDate":{"type":["string","null"],"example":"2019"}}}},"skills":{"type":"array","items":{"type":"string"},"example":["Python","Docker"]},"certifications":{"type":"array","items":{"type":"string"}},"languages":{"type":"array","items":{"type":"string"}},"profileUrl":{"type":["string","null"],"format":"uri"},"memberId":{"type":"string"}},"required":["fullName","memberId"]}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"memberId","in":"query","description":"A LinkedIn member identifier, returned by `/people/search` and\n`/company/{companyId}/employees`.","required":true,"schema":{"type":"string","example":"ACoAAAEkwwAB9KEc2TrQgOLEQ-vzRyZeCDyc6DQ"}}]}},"/person-profile/posts":{"get":{"operationId":"get_person_profile_posts","summary":"List a person's posts","description":"Returns an empty list if the person has not posted.","tags":["Person"],"responses":{"200":{"description":"A page of posts.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"activityId":{"type":"string","description":"The post's activity identifier."},"ugcPostId":{"type":["string","null"],"description":"Pass this as `postId` to `/posts/{postId}/comments` and\n`/posts/{postId}/reactions`. Not available for every post type.\n"},"text":{"type":["string","null"]},"authorName":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"description":"How long ago the post was published, as a display string.","example":"2 gün önce"},"permalink":{"type":["string","null"],"format":"uri"},"images":{"type":"array","items":{"type":"string","format":"uri"}},"likeCount":{"type":["integer","null"]},"commentCount":{"type":["integer","null"]},"shareCount":{"type":["integer","null"]}},"required":["activityId"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"memberId","in":"query","description":"A LinkedIn member identifier, returned by `/people/search` and\n`/company/{companyId}/employees`.","required":true,"schema":{"type":"string","example":"ACoAAAEkwwAB9KEc2TrQgOLEQ-vzRyZeCDyc6DQ"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of posts per page.","required":false,"schema":{"type":"integer","default":10}}]}},"/people/search":{"get":{"operationId":"get_people_search","summary":"Search people","description":"All filters are optional and can be combined. Returns the same person structure as\n`/company/{companyId}/employees`. Returns an empty list when nothing matches.","tags":["Person"],"responses":{"200":{"description":"A page of people. May be empty.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"A person as returned by search and employee listings.","properties":{"name":{"type":"string","description":"The person's name, or `LinkedIn Member` when the profile is private or outside\nyour network. Full profiles cannot be retrieved for those records.\n"},"headline":{"type":["string","null"]},"location":{"type":["string","null"]},"currentCompany":{"type":["string","null"]},"profileImage":{"type":["string","null"],"format":"uri"},"profileUrl":{"type":["string","null"],"format":"uri"},"memberId":{"type":"string","description":"Pass this to `/person-profile` to retrieve the full profile."}},"required":["name","memberId"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"keyword","in":"query","description":"Free-text search term.","required":false,"schema":{"type":"string","example":"software engineer"}},{"name":"companyId","in":"query","description":"Restrict results to people at this company.","required":false,"schema":{"type":"string"}},{"name":"geoUrn","in":"query","description":"Location code. Türkiye is `102105699`.","required":false,"schema":{"type":"string","example":"102105699"}},{"name":"title","in":"query","description":"Restrict results by job title.","required":false,"schema":{"type":"string","example":"engineer"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}},"/company":{"get":{"operationId":"get_company","summary":"Get a company profile","description":"Provide either `slug` or `companyId`. If neither is given, the request fails with\n`400 VALIDATION_ERROR`.\n\nTake the `slug` from a `/company/search` result rather than guessing it from the\ncompany name — a company's slug often differs from its display name.","tags":["Companies"],"responses":{"200":{"description":"The company profile.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":["string","null"]},"description":{"type":["string","null"]},"industry":{"type":["string","null"],"example":"Yazılım Geliştirme"},"website":{"type":["string","null"],"format":"uri"},"headquarters":{"type":["string","null"]},"companySize":{"type":["string","null"],"description":"Employee count band as published by the company.","example":"10001+"},"employeeCount":{"type":["integer","null"]},"foundedYear":{"type":["integer","null"]},"specialties":{"type":"array","items":{"type":"string"}},"followerCount":{"type":["integer","null"]},"logo":{"type":["string","null"],"format":"uri"},"locations":{"type":"array","items":{"type":"string"}},"linkedinUrl":{"type":["string","null"],"format":"uri"},"companyId":{"type":["string","null"]},"slug":{"type":["string","null"]}}}}}]}}}},"400":{"description":"A required parameter is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"VALIDATION_ERROR","message":"slug or companyId required","retryAfter":null,"details":null}}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"slug","in":"query","description":"The company's short name, as it appears in its LinkedIn URL.\nRequired unless `companyId` is provided.","required":false,"schema":{"type":"string","example":"intel-corporation"}},{"name":"companyId","in":"query","description":"The company's numeric identifier. Required unless `slug` is provided.","required":false,"schema":{"type":"string","example":"1035"}}]}},"/company/search":{"get":{"operationId":"get_company_search","summary":"Search companies","description":"Use the `slug` or `companyId` from a result to fetch full details from `/company`,\nthe employee list, or the job list.","tags":["Companies"],"responses":{"200":{"description":"A page of companies.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"industry":{"type":["string","null"]},"location":{"type":["string","null"]},"logo":{"type":["string","null"],"format":"uri"},"linkedinUrl":{"type":["string","null"],"format":"uri"},"companyId":{"type":"string","description":"Use with `/company`, `/company/{companyId}/employees`, or `/company/{companyId}/jobs`."},"slug":{"type":"string","description":"Use with `/company` or `/company/posts`."}},"required":["name","companyId","slug"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"keyword","in":"query","description":"Free-text search term.","required":true,"schema":{"type":"string","example":"teknoloji"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}},"/company/{companyId}/employees":{"get":{"operationId":"get_company_companyId_employees","summary":"List a company's employees","description":"Returns people who list this company as their employer.\n\nResults may include private or out-of-network profiles, which appear with the name\n`LinkedIn Member`. Full profiles cannot be retrieved for those records, so check\nthe name before calling `/person-profile` with the returned `memberId`.","tags":["Companies"],"responses":{"200":{"description":"A page of people. May be empty.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","description":"A person as returned by search and employee listings.","properties":{"name":{"type":"string","description":"The person's name, or `LinkedIn Member` when the profile is private or outside\nyour network. Full profiles cannot be retrieved for those records.\n"},"headline":{"type":["string","null"]},"location":{"type":["string","null"]},"currentCompany":{"type":["string","null"]},"profileImage":{"type":["string","null"],"format":"uri"},"profileUrl":{"type":["string","null"],"format":"uri"},"memberId":{"type":"string","description":"Pass this to `/person-profile` to retrieve the full profile."}},"required":["name","memberId"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"companyId","in":"path","description":"The company's numeric identifier, from `/company/search` or `/company`.","required":true,"schema":{"type":"string","example":"1035"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}},"/company/{companyId}/jobs":{"get":{"operationId":"get_company_companyId_jobs","summary":"List a company's open jobs","description":"Returns an empty list if the company has no open postings.\nUse the `jobId` from a result with `/jobs/detail/{jobId}`.","tags":["Companies"],"responses":{"200":{"description":"A page of job postings. May be empty.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"jobId":{"type":"string","description":"Pass to `/jobs/detail/{jobId}` for the full posting."},"jobTitle":{"type":"string"},"company":{"type":["string","null"],"description":"The hiring company's name."},"location":{"type":["string","null"],"example":"İstanbul, Türkiye (Uzaktan)"}},"required":["jobId","jobTitle"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"companyId","in":"path","description":"The company's numeric identifier, from `/company/search` or `/company`.","required":true,"schema":{"type":"string","example":"1035"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}},"/company/posts":{"get":{"operationId":"get_company_posts","summary":"List a company's posts","description":"Returns the same post structure as `/person-profile/posts`.\nThis endpoint is addressed by `slug` only.","tags":["Companies"],"responses":{"200":{"description":"A page of posts.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"activityId":{"type":"string","description":"The post's activity identifier."},"ugcPostId":{"type":["string","null"],"description":"Pass this as `postId` to `/posts/{postId}/comments` and\n`/posts/{postId}/reactions`. Not available for every post type.\n"},"text":{"type":["string","null"]},"authorName":{"type":["string","null"]},"publishedAt":{"type":["string","null"],"description":"How long ago the post was published, as a display string.","example":"2 gün önce"},"permalink":{"type":["string","null"],"format":"uri"},"images":{"type":"array","items":{"type":"string","format":"uri"}},"likeCount":{"type":["integer","null"]},"commentCount":{"type":["integer","null"]},"shareCount":{"type":["integer","null"]}},"required":["activityId"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"slug","in":"query","description":"The company's short name, as it appears in its LinkedIn URL.","required":true,"schema":{"type":"string","example":"microsoft-azure"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of posts per page.","required":false,"schema":{"type":"integer","default":10}}]}},"/jobs/search":{"get":{"operationId":"get_jobs_search","summary":"Search job postings","description":"Use the `jobId` from a result with `/jobs/detail/{jobId}`.","tags":["Jobs"],"responses":{"200":{"description":"A page of job postings.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"jobId":{"type":"string","description":"Pass to `/jobs/detail/{jobId}` for the full posting."},"jobTitle":{"type":"string"},"company":{"type":["string","null"],"description":"The hiring company's name."},"location":{"type":["string","null"],"example":"İstanbul, Türkiye (Uzaktan)"}},"required":["jobId","jobTitle"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"keyword","in":"query","description":"Search term for the job title or description.","required":true,"schema":{"type":"string","example":"backend"}},{"name":"geoId","in":"query","description":"Location code. Türkiye is `102105699`; worldwide is `92000000`.","required":false,"schema":{"type":"string","example":"102105699"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}},"/jobs/detail/{jobId}":{"get":{"operationId":"get_jobs_detail_jobId","summary":"Get a job posting","description":"Returns the full description for a posting. Several fields are only present on some\npostings; the company name is most reliably taken from the search result that\nprovided the `jobId`.","tags":["Jobs"],"responses":{"200":{"description":"The job posting.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"object","properties":{"jobId":{"type":"string"},"jobTitle":{"type":"string"},"company":{"type":["string","null"],"description":"The hiring company's name. Not populated on every posting — take it from the\nsearch result that provided the `jobId` when it is absent here.\n"},"companyUrl":{"type":["string","null"],"format":"uri"},"location":{"type":["string","null"]},"workplaceType":{"description":"Where the role is performed. Returned either as a display string or as one or\nmore LinkedIn workplace-type identifiers, depending on the posting.\n","oneOf":[{"type":"null"},{"type":"string"},{"type":"array","items":{"type":"string"}}],"examples":["Uzaktan",["urn:li:fs_workplaceType:1"]]},"employmentType":{"type":["string","null"],"description":"Employment basis, such as full-time or contract. May be returned as a LinkedIn\nemployment-status identifier.\n","examples":["FULL_TIME","urn:li:fs_employmentStatus:FULL_TIME"]},"seniorityLevel":{"type":["string","null"],"example":"MID_SENIOR"},"jobDescription":{"type":["string","null"],"description":"The full posting text."},"publishDate":{"type":["integer","null"],"description":"Unix timestamp in milliseconds.","example":1740000000000},"applicantCount":{"type":["integer","null"]},"applyUrl":{"type":["string","null"],"format":"uri"}},"required":["jobId"]}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"jobId","in":"path","description":"The posting's identifier, from `/jobs/search` or `/company/{companyId}/jobs`.","required":true,"schema":{"type":"string","example":"4458090637"}}]}},"/posts/{postId}/comments":{"get":{"operationId":"get_posts_postId_comments","summary":"List comments on a post","description":"Returns an empty list when the post has no comments.","tags":["Posts"],"responses":{"200":{"description":"A page of comments. May be empty.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"commentId":{"type":"string"},"text":{"type":["string","null"]},"authorName":{"type":["string","null"]},"authorHeadline":{"type":["string","null"]},"authorProfileId":{"type":["string","null"],"description":"The commenter's member identifier, usable with `/person-profile`."},"authorProfileUrl":{"type":["string","null"],"format":"uri"},"createdAt":{"type":["integer","null"],"description":"Unix timestamp in milliseconds.","example":1740000000000},"isPostAuthor":{"type":["boolean","null"],"description":"Whether the commenter is the author of the post."}},"required":["commentId"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"postId","in":"path","description":"The post's `ugcPostId`, taken from `/person-profile/posts` or `/company/posts`.\nUse `ugcPostId` here, not `activityId`.","required":true,"schema":{"type":"string","example":"7499133701344083968"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}},"/posts/{postId}/reactions":{"get":{"operationId":"get_posts_postId_reactions","summary":"List reactions on a post","description":"Returns an empty list when the post has no reactions.","tags":["Posts"],"responses":{"200":{"description":"A page of reactions. May be empty.","content":{"application/json":{"schema":{"allOf":[{"type":"object","description":"The standard wrapper around every successful response.","properties":{"success":{"type":"boolean","const":true},"data":{"description":"The payload — an object or an array, depending on the endpoint."},"cursor":{"type":["string","null"],"description":"Pass this as `start` to fetch the next page. `null` on the last page.","example":"25"},"hasMore":{"type":"boolean","description":"Whether more results are available."}},"required":["success","data","cursor","hasMore"]},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"reactionType":{"type":"string","enum":["LIKE","PRAISE","EMPATHY","INTEREST","APPRECIATION","ENTERTAINMENT"]},"memberId":{"type":"string","description":"Usable with `/person-profile`."},"name":{"type":["string","null"]},"headline":{"type":["string","null"]},"profileUrl":{"type":["string","null"],"format":"uri"},"networkDistance":{"type":["string","null"],"description":"How far the reacting member is from the account's network.","example":"3.+"}},"required":["reactionType","memberId"]}}}}]}}}},"401":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UNAUTHORIZED","message":"Missing or invalid API key","retryAfter":null,"details":null}}}}},"403":{"description":"The record exists but is not publicly accessible — for example a private profile or\none outside the account's network. Retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn denied access to this resource","retryAfter":null,"details":{"upstream_status":403}}}}}},"404":{"description":"No record exists for the identifier you supplied. Verify the `slug`, `companyId`,\n`memberId`, `jobId`, or `postId` — retrying will not succeed.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NOT_FOUND","message":"Requested resource does not exist on LinkedIn","retryAfter":null,"details":null}}}}},"422":{"description":"A query parameter failed validation — for example a missing required parameter, or\na `count` outside its allowed range. This response is not wrapped in the standard\nenvelope, so handle it separately from envelope-based errors.","content":{"application/json":{"schema":{"type":"object","description":"Parameter validation failure. Unlike other errors, this response is not wrapped in\nthe standard envelope.\n","properties":{"detail":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"missing"},"loc":{"type":"array","items":{"type":"string"},"description":"Path to the offending parameter, for example `[\"query\", \"memberId\"]`."},"msg":{"type":"string"},"input":{},"ctx":{"type":"object"}}}}},"required":["detail"]},"example":{"detail":[{"type":"missing","loc":["query","memberId"],"msg":"Field required","input":null}]}}}},"429":{"description":"Too many requests. Wait `error.retryAfter` seconds before retrying.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"RATE_LIMITED","message":"Rate limit exceeded","retryAfter":30,"details":null}}}}},"502":{"description":"LinkedIn returned an unexpected response. This is usually transient — retry a few\ntimes with increasing delay. `error.details.upstream_status` carries the status\nLinkedIn returned, when available.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"UPSTREAM_ERROR","message":"LinkedIn returned an unexpected response","retryAfter":null,"details":{"upstream_status":500}}}}}},"503":{"description":"The service is temporarily unavailable. Wait `error.retryAfter` seconds, then retry\nwith exponential backoff.","content":{"application/json":{"schema":{"type":"object","description":"The standard wrapper around a failed response.","properties":{"success":{"type":"boolean","const":false},"data":{"type":"null"},"cursor":{"type":"null"},"hasMore":{"type":"boolean","const":false},"error":{"type":"object","properties":{"code":{"type":"string","description":"Machine-readable error code.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `VALIDATION_ERROR` | 400 | A parameter is missing or invalid |\n| `UNAUTHORIZED` | 401 | The API key is missing or invalid |\n| `CAPTCHA_BLOCKED` | 403 | The source blocked the request |\n| `NOT_FOUND` | 404 | No such record |\n| `RATE_LIMITED` | 429 | Too many requests |\n| `UPSTREAM_ERROR` | 502 | The source returned an unexpected response |\n| `NO_HEALTHY_ACCOUNT` | 503 | The service is temporarily unavailable |\n| `TIMEOUT` | 504 | The request timed out |\n","enum":["VALIDATION_ERROR","UNAUTHORIZED","CAPTCHA_BLOCKED","NOT_FOUND","RATE_LIMITED","UPSTREAM_ERROR","NO_HEALTHY_ACCOUNT","TIMEOUT"]},"message":{"type":"string","description":"Human-readable description of the failure."},"retryAfter":{"type":["integer","null"],"description":"Seconds to wait before retrying. Present on `RATE_LIMITED` and `NO_HEALTHY_ACCOUNT`."},"details":{"type":["object","null"],"description":"Additional context. On `UPSTREAM_ERROR`, carries the source's status code.","properties":{"upstream_status":{"type":"integer","description":"The HTTP status LinkedIn returned."},"body_preview":{"type":"string"}}}},"required":["code","message","retryAfter","details"]}},"required":["success","data","cursor","hasMore","error"]},"example":{"success":false,"data":null,"cursor":null,"hasMore":false,"error":{"code":"NO_HEALTHY_ACCOUNT","message":"No healthy LinkedIn account available","retryAfter":60,"details":null}}}}}},"parameters":[{"name":"postId","in":"path","description":"The post's `ugcPostId`, taken from `/person-profile/posts` or `/company/posts`.\nUse `ugcPostId` here, not `activityId`.","required":true,"schema":{"type":"string","example":"7499133701344083968"}},{"name":"start","in":"query","description":"Offset of the first result. Pass the `cursor` value from the previous response to\nfetch the next page.","required":false,"schema":{"type":"integer","default":0}},{"name":"count","in":"query","description":"Number of results per page.","required":false,"schema":{"type":"integer","default":25}}]}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-JoJAPI-Key","description":"Your JoJ API key."}}}}