as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Ring

API Reference

This section provides a comprehensive reference for all Ring Partner API endpoints, including request/response formats, parameters, and examples.

Base URL

All API requests should be made to:

https://api.amazonvision.com

Authentication

All API requests require authentication using OAuth 2.0 Bearer tokens:

Authorization: Bearer <access_token>

Rate Limiting

  • Default rate: 100 requests per second (TPS) per partner
  • Scope: Rate limits apply per partner client_id across all endpoints

Rate Limit Headers

Header Description
X-RateLimit-Limit Maximum requests allowed per time window
X-RateLimit-Remaining Remaining requests in the current window
Retry-After Seconds to wait before retrying (included with 429 responses)

When you exceed the rate limit, the API returns HTTP 429 Too Many Requests. Use exponential backoff starting at 1 second and respect the Retry-After header.

Content Types

  • JSON APIs: application/json
  • Media streaming: application/sdp
  • Media downloads: Binary content with appropriate MIME types

Authentication Endpoints

Exchange Authorization Code

POST https://oauth.ring.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
client_id=<partner_client_id>
code=<authorization_code>
client_secret=<partner_client_secret>

Response:

{
  "access_token": "xxxxx",
  "refresh_token": "yyyyy",
  "scope": "<scope>",
  "expires_in": 14400,
  "token_type": "Bearer"
}

Refresh Access Token

POST https://oauth.ring.com/oauth/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
refresh_token=<refresh_token>
client_id=<partner_client_id>
client_secret=<partner_client_secret>

Response:

{
  "access_token": "xxxxx",
  "refresh_token": "yyyyy",
  "scope": "<scope>",
  "expires_in": 14400,
  "token_type": "Bearer"
}

Endpoint Reference

All device and media endpoints require Authorization: Bearer <access_token>. Responses follow JSON:API format.

Device Endpoints

Method Endpoint Description Full Docs
GET /v1/devices List all accessible devices. Use ?include=status,capabilities,location,configurations for related data. Device Discovery
GET /v1/devices/{device_id} Get a specific device Device Discovery
GET /v1/devices/{device_id}/status Device online/offline status Status
GET /v1/devices/{device_id}/capabilities Video codecs, motion detection, image enhancements Capabilities
GET /v1/devices/{device_id}/location Coarse location (country, state) for compliance Locations
GET /v1/devices/{device_id}/configurations Motion zones, privacy zones, image settings Configurations

Media Endpoints

Method Endpoint Description Full Docs
POST /v1/devices/{device_id}/media/streaming/whep/sessions Start WebRTC WHEP live video session (Content-Type: application/sdp) Live Video
DELETE /v1/devices/{device_id}/media/streaming/whep/sessions/{session_id} Close live video session Live Video
POST /v1/devices/{device_id}/media/video/download Download historical video as MP4 Media Clips

Account & Integration Endpoints

Method Endpoint Description Full Docs
GET /v1/users/me Get authenticated user's Account ID Users API
POST /v1/accounts/me/app-integrations Confirm account link App Integrations
PATCH /v1/accounts/me/app-integrations Update integration status App Integrations

Webhook Events

Partners receive webhook notifications at their configured endpoint. All webhooks include an HMAC-SHA256 signature in the X-Signature header. See Notifications for full details.

Event Types

Event Type Value Description
Motion Detected motion_detected Motion detected by a device camera
Button Press button_press Ring doorbell button pressed
Device Added device_added A device became accessible to the partner
Device Removed device_removed A device is no longer accessible
Device Online device_online A device came online
Device Offline device_offline A device went offline

Error Responses

All errors follow JSON:API format. See Error Handling for comprehensive details.

Common Error Codes

  • 400: Bad Request — Invalid parameters
  • 401: Unauthorized — Invalid or expired token
  • 403: Forbidden — Insufficient permissions
  • 404: Not Found — Resource not found
  • 429: Too Many Requests — Rate limit exceeded
  • 500: Internal Server Error
  • 503: Service Unavailable — Device offline

Testing Your Integration

There is no official Ring Partner SDK. Use standard HTTP libraries and tools:

Tool Use Case
curl Quick command-line testing
Postman GUI-based API exploration
Bruno Open-source, Git-friendly alternative to Postman
Standard HTTP libraries fetch (JS), requests (Python), axios (JS/TS)

Testing with curl

curl -X GET 'https://api.amazonvision.com/v1/devices?include=status,capabilities' \
  -H 'Authorization: Bearer <access_token>' \
  -H 'Content-Type: application/json' \
  -v

SDKs and Libraries

There is no official Ring Partner SDK. Use standard HTTP libraries:

JavaScript/TypeScript

const response = await fetch('https://api.amazonvision.com/v1/devices', {
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  }
});
const devices = await response.json();

Python

import requests

headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
}
response = requests.get('https://api.amazonvision.com/v1/devices', headers=headers)
devices = response.json()