API authentication
Authenticate to the ReadyLinks REST API with your organization ID and API key, from curl, Python or any HTTP client.
Every call to the ReadyLinks REST API at https://api.readylinks.io is authenticated with two values from ReadyView: your organization ID and your API key. Send them with HTTP Basic authentication. The organization ID is the username and the API key is the password.
#Get your organization ID and API key
- Sign in to ReadyView.
- Open Profile, then Your Account.
- Under Organization Details:
- Organization ID: choose Copy.
- API Key: choose Show to see it, or Copy.
#Make a request
This example lists the organization's offline switches. The examples read the two values from the same environment variables the readyview Python library uses.
export READYVIEW_DASHBOARD_ORG_ID="your-organization-id"
export READYVIEW_DASHBOARD_API_KEY="your-api-key"curl -u "$READYVIEW_DASHBOARD_ORG_ID:$READYVIEW_DASHBOARD_API_KEY" \
"https://api.readylinks.io/v2/devices?device_type=Switch&status=Offline"GET /v2/devices returns a JSON array with one object per device. Every endpoint, its parameters and its response are in the API reference.
#With the Python library
The readyview library reads READYVIEW_DASHBOARD_ORG_ID and READYVIEW_DASHBOARD_API_KEY from the environment and authenticates every call for you:
# pip install --upgrade readyview
import readyview
dashboard = readyview.Dashboard()
networks = dashboard.network.get_networks()#Clients that only send bearer tokens
If your HTTP client can only send a bearer token, base64-encode organization-id:api-key and send it as Authorization: Bearer <encoded value>. The API reads it exactly as it reads Basic authentication.
TOKEN=$(printf '%s:%s' "$READYVIEW_DASHBOARD_ORG_ID" "$READYVIEW_DASHBOARD_API_KEY" | base64)
curl -H "Authorization: Bearer $TOKEN" "https://api.readylinks.io/v2/devices?status=Offline"#Which organization a request acts in
- The organization ID chooses the organization. If your account belongs to several organizations, your API key is the same in all of them. Send another organization's ID to work there.
- Requests run with your roles in that organization. A call your roles do not allow is refused with
403, and the response names the missing permission. See Roles and permissions.
#Use a dedicated member for integrations
For a script or integration that runs unattended, invite a separate member for it (Profile → Team → Invite people). Give that member a role with only the permissions the integration needs, and use its API key rather than your own. The integration then can never do more than its role allows, and it keeps working when people leave your team.
#Turn a key off
- Remove the member. Removing a member from your organization (Profile → Team) removes their API key from it. Requests with that key are refused within about five minutes.
- A key that may have leaked. There is no self-service way to replace an API key yet. Contact ReadyLinks support.
#Errors
Every error has the same shape:
{"code": 401, "success": false, "message": "Invalid organization", "content": {}, "response_type": "UNAUTHORIZED"}| Status | message | What it means |
|---|---|---|
401 | Not authenticated | No credentials were sent. Add the Authorization header. |
401 | Invalid organization | No organization has that ID. Copy it again from Your Account. |
401 | Invalid organization document please contact readylinks inc | The API key is not valid for that organization: it was mistyped, the member was removed, or the account is not a member of this organization. Copy both values again. |
403 | Names the permission | Your roles in that organization do not include the permission this call needs. response_type is PERMISSION_DENIED, content.permission_name names the permission, and content.resolution says what to ask an administrator for. |
429 | Rate limit message | Too many calls in a short time. Wait for the number of seconds in the Retry-After header, then try again. |
#Rate limits
Each endpoint has its own per-minute limit, counted per API key. GET /v2/devices, for example, allows 15 calls a minute, so a dashboard that refreshes every minute or two stays well inside it. Over the limit, the API answers 429 with a Retry-After header. The readyview library reports that wait as retry_after when it raises ReadyViewAPIError.
#AI assistants
To use ReadyView from Claude, ChatGPT or another AI assistant, connect the ReadyView MCP server at https://api.readylinks.io/mcp instead of handing the assistant an API key. You sign in with your ReadyView account, and the assistant gets the same tools as ReadyView's Network Assistant. See api.readylinks.io/mcp/docs.
#Related
Last updated November 10, 2026