Overview
Admin endpoints let you programmatically manage your Linked API subscription status, seats, connected LinkedIn accounts, and rate limits.
In the Node SDK the Admin API is its own client, LinkedApiAdmin, with the namespaces admin.subscription, admin.accounts, admin.limits and admin.webhooks – see Authentication and Endpoints.
In the Python SDK the Admin API is its own client, LinkedApiAdmin, with the namespaces admin.subscription, admin.accounts, admin.limits and admin.webhooks – see Authentication and Endpoints.
In the CLI the Admin API is the linkedin admin commands – subscription, accounts, limits and webhook – see Authentication and Endpoints.
While the main API endpoints (workflows, inbox, statistics) operate on behalf of a specific LinkedIn account, admin endpoints manage your Linked API account itself. They are synchronous (direct request-response, no workflows) and need only your Linked API token – no identification token. You can find the token in the platform dashboard.
The Admin API keeps its names on every surface: the endpoint subscription.getStatus is the SDK method admin.subscription.getStatus, the CLI command linkedin admin subscription status and the MCP tool admin_get_subscription_status. Pick your surface with the switch above.
Authentication
Send the linked-api-token header – the same token used for all other API requests. Account-specific operations take accountId in the request body instead of the identification-token header.
Admin endpoints are not methods of the main LinkedApi client. They have their own client, LinkedApiAdmin, created with your Linked API token only:
Admin commands use the Linked API token that linkedin setup saved for the current account and send no identification token, so they do not depend on the state of that LinkedIn account. They take no --account flag: to use the token of another saved account, switch to it with linkedin account switch. Account-specific commands take the account ID as an argument.
curl -X POST https://api.linkedapi.io/admin/subscription.getStatus \
-H "Content-Type: application/json" \
-H "linked-api-token: your-linked-api-token"Account-specific methods take accountId in their parameters instead of an identification token.
Request format
All endpoints use the POST method with a JSON body. The URL pattern is:
POST https://api.linkedapi.io/admin/<resource>.<action>| Header | Required | Description |
|---|---|---|
linked-api-token | Yes | Your Linked API token |
Content-Type | Yes | application/json |
The endpoint <resource>.<action> is the method <action> of the admin.<resource> namespace: admin.subscription, admin.accounts (accounts and connection sessions), admin.limits and admin.webhooks.
For example, subscription.setSeats:
A method takes the request body as one object:
Methods are in snake_case, and a method that takes parameters takes them as a params model imported from linkedapi:
The endpoint <resource>.<action> is a command under linkedin admin <resource>, and the body fields are flags or arguments:
curl -X POST https://api.linkedapi.io/admin/subscription.setSeats \
-H "Content-Type: application/json" \
-H "linked-api-token: your-linked-api-token" \
-d '{"quantity": 5, "billingPeriod": "year", "seatType": "plus"}'Response format
Success:
{
"success": true,
"result": { ... }
}Error:
{
"success": false,
"error": {
"type": "errorType",
"message": "Human-readable error description"
}
}A request with an invalid token, and the response it gets:
Admin methods are direct request-response, not workflows: there is no execute() / result(). A method returns the endpoint's result, or nothing when that result is empty, and throws LinkedApiError with the type and message of the error response. A network failure throws it with the type httpError.
Admin commands accept --json, --fields, --quiet and --no-color, and print the endpoint's result as data, except that subscription seats and limits defaults, get and usage print the array itself, accounts session prints the session object, and commands with an empty result print a confirmation, or "data": null in JSON.
Errors are written to stderr as a JSON object with error and message, with the usual exit codes: 2 for token errors, 5 for accountIdRequired, accountNotFound, sessionNotFound, noAvailableSeats, dailyConnectionAttemptsExceeded and invalidRequestPayload, and 6 for tooManyRequests.
curl -i -X POST https://api.linkedapi.io/admin/subscription.getStatus \
-H "Content-Type: application/json" \
-H "linked-api-token: invalid-token"
# HTTP/2 401
# {"success":false,"error":{"type":"invalidLinkedApiToken","message":"The provided 'linked-api-token' is invalid."}}Common errors
The error type is the same on every surface: error.type in the HTTP response, type of LinkedApiError in the SDKs, error in the CLI output.
| Type | HTTP Status | Description |
|---|---|---|
linkedApiTokenRequired | 401 | Missing linked-api-token header |
invalidLinkedApiToken | 401 | Token is invalid or expired |
accountIdRequired | 401 | Missing or invalid accountId |
accountNotFound | 401 | Account does not exist or does not belong to you |
sessionNotFound | 404 | Connection session not found |
tooManyRequests | 429 | Rate limit exceeded (100 requests per 60 seconds) |
Endpoints
| Endpoint | What it does |
|---|---|
subscription.getStatus | Get the subscription status |
subscription.getSeats | Get the active seats |
subscription.setSeats | Set the number of seats, or get a checkout link |
accounts.getAll | List connected accounts and pending connection sessions |
accounts.reparseAccountInfo | Refresh an account's stored profile information |
accounts.disconnect | Disconnect an account |
accounts.regenerateIdentificationToken | Issue a new identification token |
accounts.createConnectionSession | Start connecting a new account |
accounts.createReconnectionSession | Start reconnecting an account |
accounts.getConnectionSession | Check a connection session |
accounts.cancelConnectionSession | Cancel a connection session |
limits.getDefaults | Get the system default limits |
limits.get | Get an account's limits |
limits.getUsage | Get an account's usage against its limits |
limits.set | Set or update an account's limits |
limits.delete | Remove an account's limits |
limits.resetToDefaults | Reset an account's limits to the defaults |
Webhook endpoints are listed on their own page.
| Method | What it does |
|---|---|
admin.subscription.getStatus() | Get the subscription status |
admin.subscription.getSeats() | Get the active seats |
admin.subscription.setSeats() | Set the number of seats, or get a checkout link |
admin.accounts.getAll() | List connected accounts and pending connection sessions |
admin.accounts.reparseAccountInfo() | Refresh an account's stored profile information |
admin.accounts.disconnect() | Disconnect an account |
admin.accounts.regenerateIdentificationToken() | Issue a new identification token |
admin.accounts.createConnectionSession() | Start connecting a new account |
admin.accounts.createReconnectionSession() | Start reconnecting an account |
admin.accounts.getConnectionSession() | Check a connection session |
admin.accounts.cancelConnectionSession() | Cancel a connection session |
admin.limits.getDefaults() | Get the system default limits |
admin.limits.get() | Get an account's limits |
admin.limits.getUsage() | Get an account's usage against its limits |
admin.limits.set() | Set or update an account's limits |
admin.limits.delete() | Remove an account's limits |
admin.limits.resetToDefaults() | Reset an account's limits to the defaults |
The webhook methods are under admin.webhooks.
| Method | What it does |
|---|---|
admin.subscription.get_status() | Get the subscription status |
admin.subscription.get_seats() | Get the active seats |
admin.subscription.set_seats() | Set the number of seats, or get a checkout link |
admin.accounts.get_all() | List connected accounts and pending connection sessions |
admin.accounts.reparse_account_info() | Refresh an account's stored profile information |
admin.accounts.disconnect() | Disconnect an account |
admin.accounts.regenerate_identification_token() | Issue a new identification token |
admin.accounts.create_connection_session() | Start connecting a new account |
admin.accounts.create_reconnection_session() | Start reconnecting an account |
admin.accounts.get_connection_session() | Check a connection session |
admin.accounts.cancel_connection_session() | Cancel a connection session |
admin.limits.get_defaults() | Get the system default limits |
admin.limits.get() | Get an account's limits |
admin.limits.get_usage() | Get an account's usage against its limits |
admin.limits.set() | Set or update an account's limits |
admin.limits.delete() | Remove an account's limits |
admin.limits.reset_to_defaults() | Reset an account's limits to the defaults |
The webhook methods are under admin.webhooks.
| Command | What it does |
|---|---|
linkedin admin subscription status | Get the subscription status |
linkedin admin subscription seats | Get the active seats |
linkedin admin subscription set-seats | Set the number of seats, or get a checkout link |
linkedin admin accounts list | List connected accounts and pending connection sessions |
linkedin admin accounts reparse | Refresh an account's stored profile information |
linkedin admin accounts disconnect | Disconnect an account |
linkedin admin accounts regenerate-token | Issue a new identification token |
linkedin admin accounts connect | Start connecting a new account |
linkedin admin accounts reconnect | Start reconnecting an account |
linkedin admin accounts session | Check a connection session |
linkedin admin accounts cancel-session | Cancel a connection session |
linkedin admin limits defaults | Get the system default limits |
linkedin admin limits get | Get an account's limits |
linkedin admin limits usage | Get an account's usage against its limits |
linkedin admin limits set | Set or update an account's limits |
linkedin admin limits delete | Remove an account's limits |
linkedin admin limits reset | Reset an account's limits to the defaults |
The webhook commands are under linkedin admin webhook.
In the MCP server each of these endpoints is an admin_* tool; the MCP server has no webhook tools.
Next steps
- Subscription – manage subscription status and seats
- Accounts – list, refresh, disconnect, and monitor LinkedIn accounts
- Connection Sessions – connect and reconnect accounts, and customize the completion screen
- Limits – configure and monitor rate limits
- Webhooks – register an endpoint to receive workflow and account events