Limits
Rate limits control how many actions each LinkedIn account can perform per time period. For general Admin API information, see the Admin overview.
In the Node SDK these endpoints are methods of admin.limits on the admin client: getDefaults(), get(), getUsage(), set(), delete() and resetToDefaults(). Each section below shows its call in the Node tab.
In the Python SDK these endpoints are methods of admin.limits on the admin client: get_defaults(), get(), get_usage(), set(), delete() and reset_to_defaults(). Each section below shows its call in the Python tab.
In the CLI these endpoints are the commands linkedin admin limits defaults, get, usage, set, delete and reset. Each section below shows its command in the CLI tab.
Limit categories
| Category | Description |
|---|---|
stPersonProfileViews | Standard LinkedIn profile views |
stCompanyPageViews | Standard LinkedIn company page views |
stConnectionRequests | Connection requests sent |
stMessages | Messages sent |
stSearchQueries | LinkedIn search queries |
stReactions | Post reactions |
stEndorsements | Skill endorsements |
stComments | Post comments |
stPosts | Posts and reposts created |
nvPersonProfileViews | Sales Navigator profile views |
nvCompanyPageViews | Sales Navigator company page views |
nvMessages | Sales Navigator messages |
Periods: daily, weekly, monthly
Endorsement limits
stEndorsements counts every st.endorsePersonSkill execution, including each skill endorsed through st.doForSkills. Only successful executions count, and an execution where the skill was already endorsed is successful too. Its default limits are:
| Period | maxValue | isEnabled |
|---|---|---|
daily | 50 | true |
weekly | 350 | false |
monthly | 1500 | false |
These defaults are applied wherever default limits are: when an account is connected with the defaults limits mode, and when its limits are reset with limits.resetToDefaults. An account has no endorsement limit unless limits.get returns an enabled stEndorsements entry for it. This is the case for accounts connected before endorsements became available, which have no stEndorsements entries at all. It can also be the case for accounts connected in the ask limits mode while the limits editor did not show endorsement limits: it saved them with isEnabled: false unless the user chose the recommended limits. To cap endorsements, set them with limits.set, or reset the account to defaults, which also replaces its custom limits in every other category.
limits.getDefaults
Get the system default limits. These are applied when an account is connected with the defaults limits mode, and when its limits are reset to defaults.
curl -X POST https://api.linkedapi.io/admin/limits.getDefaults \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here"Response:
{
"success": true,
"result": {
"limits": [
{
"category": "stMessages",
"period": "daily",
"maxValue": 50,
"isEnabled": true
},
{
"category": "stConnectionRequests",
"period": "daily",
"maxValue": 10,
"isEnabled": true
}
]
}
}limits.get
Get the current limits for a specific account.
curl -X POST https://api.linkedapi.io/admin/limits.get \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{"accountId": "f9b4346a-..."}'Body:
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account UUID |
Response:
{
"success": true,
"result": {
"limits": [
{
"category": "stMessages",
"period": "daily",
"maxValue": 25,
"isEnabled": true
}
]
}
}limits.getUsage
Get the current usage against limits for a specific account.
curl -X POST https://api.linkedapi.io/admin/limits.getUsage \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{"accountId": "f9b4346a-..."}'Body:
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account UUID |
Response:
{
"success": true,
"result": {
"usage": [
{
"category": "stMessages",
"period": "daily",
"maxValue": 50,
"currentUsage": 12,
"isEnabled": true
}
]
}
}| Field | Type | Description |
|---|---|---|
maxValue | number | Maximum allowed actions |
currentUsage | number | Actions performed in the current period |
isEnabled | boolean | Whether this limit is enforced |
limits.set
Set or update limits for an account. Only the specified limits are created or updated; other limits remain unchanged.
curl -X POST https://api.linkedapi.io/admin/limits.set \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{
"accountId": "f9b4346a-...",
"limits": [
{
"category": "stMessages",
"period": "daily",
"maxValue": 25,
"isEnabled": true
},
{
"category": "stConnectionRequests",
"period": "weekly",
"maxValue": 30
}
]
}'linkedin admin limits set <accountId> sets one limit per call, from these flags, all required:
| Flag | Body field | Values |
|---|---|---|
--category | limits[].category | A limit category from the table above |
--period | limits[].period | daily, weekly, monthly |
--max | limits[].maxValue | An integer >= 0 |
It has no flag for isEnabled, so the limit is always saved as enforced.
Body:
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account UUID |
limits | array | Yes | Array of limit configurations |
limits[].category | string | Yes | Limit category (see table above) |
limits[].period | string | Yes | daily, weekly, or monthly |
limits[].maxValue | number | Yes | Maximum allowed actions (>= 0) |
limits[].isEnabled | boolean | No | Whether this limit is enforced (default: true) |
Response:
{
"success": true,
"result": {}
}limits.delete
Remove specific limits from an account. A removed limit is not replaced by its default: the account has no limit in that category for that period until you set one again with limits.set. To restore the system defaults, use limits.resetToDefaults, which replaces all of the account's limits.
curl -X POST https://api.linkedapi.io/admin/limits.delete \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{
"accountId": "f9b4346a-...",
"limits": [
{"category": "stMessages", "period": "daily"},
{"category": "stConnectionRequests", "period": "weekly"}
]
}'linkedin admin limits delete <accountId> removes one limit per call, named by --category and --period, both required.
Body:
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account UUID |
limits | array | Yes | Array of limits to remove |
limits[].category | string | Yes | Limit category |
limits[].period | string | Yes | Limit period |
Response:
{
"success": true,
"result": {}
}limits.resetToDefaults
Reset all limits for an account to the system defaults.
curl -X POST https://api.linkedapi.io/admin/limits.resetToDefaults \
-H "Content-Type: application/json" \
-H "linked-api-token: linked_your_token_here" \
-d '{"accountId": "f9b4346a-..."}'Body:
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | Account UUID |
Response:
{
"success": true,
"result": {}
}