AngelCam website screenshot

AngelCam

Angelcam is a cloud video-surveillance platform that connects any IP camera to the cloud — via ONVIF and the open-source Arrow connector — for live viewing, cloud recording, clip creation and sharing, two-way audio, sensors, and Remote Technical Surveillance (RTS) event notifications. The Angelcam RESTful API (HTTPS-only JSON, organised around Spaces, secured with OAuth2 or a Personal Access Token) exposes 90+ endpoints across cameras, recordings, clips, events, Arrow clients, notifications, speakers, and services.

AngelCam publishes 29 APIs on the APIs.io network, including active-service API, angelcameras API, arrow-clients API, and 26 more. Tagged areas include Company, Video Surveillance, Cameras, IP Camera, and Cloud Recording.

The AngelCam catalog on APIs.io includes 1 event-driven AsyncAPI specification.

AngelCam’s developer surface includes documentation, API reference, getting-started guide, authentication, support, engineering blog, and 21 more developer resources.

51.6/100 developing ▬ flat Agent 78/100 agent native Full breakdown ↓
scored 2026-07-27 · rubric v0.5
AccessSelf serve
29 APIs 1 MCP Servers
CompanyVideo SurveillanceCamerasIP CameraCloud RecordingVideo StreamingIoTONVIFSecurityWebhooks

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-07-27 · rubric v0.5
Composite quality — 51.6/100 · developing
Contract Quality 17.2 / 25
Developer Ergonomics 13.5 / 20
Commercial Clarity 6.8 / 20
Operational Transparency 4.8 / 13
Governance 0.0 / 12
Discoverability 9.3 / 10
Agent readiness — 78/100 · agent native
Machine-Readable Contract 18 / 18
Agentic Access Contract 15 / 15
MCP Server 12 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 8 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 6 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/angelcam: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs 29

Individual APIs this provider publishes, each with its own machine-readable definition.

AngelCam active-service API

Endpoints for managing your activated services and assigning them to cameras. A service must first be activated (purchased) for your account, then assigned to a specific camera ...

AngelCam angelcameras API

The angelcameras API from AngelCam — 1 operation(s) for angelcameras.

AngelCam arrow-clients API

Manage [Arrow clients](https://github.com/angelcam/arrow-client) — pair them with your account, inspect exposed services, and send commands. **Pairing:** restart the device (pai...

AngelCam audio-message API

Endpoints for managing audio messages. Audio messages are pre-recorded audio clips that can be played through [speakers](#tag/speakers). Audio files are uploaded as Base64-encod...

AngelCam broadcasting API

Endpoints for managing broadcasting settings and retrieving broadcasting streams. If a camera doesn't have the Broadcasting service activated, all camera broadcasting endpoints ...

AngelCam camera API

Manage your cameras and access live streams, snapshots, and recordings. Supported codecs: H.264, H.265 (experimental), MJPEG. Live streams are limited to 10 concurrent consumers...

AngelCam camera-guest API

You can share your camera with a guest, this means, you allow guests to view stream from your camera. There is also an option to share also recordings together with live stream....

AngelCam camera-stream-detection API

Using these endpoints you can verify if there are camera streams available on specified network address. Detection is asynchronous. For this reason there is one endpoint for ini...

AngelCam client API

Endpoints for reseller users to manage their clients. A reseller can create two types of client accounts: * **Full account** — the client has full control over their cameras and...

AngelCam clip API

A clip is a permanent, downloadable excerpt of recorded footage. Unlike a recording stream — which is a temporary playback session — a clip is processed into a file that can be ...

AngelCam event API

Events represent detections reported by cameras or sensors — typically motion detected by a camera or a trigger from an external sensor. Events are the building blocks for [RTS ...

AngelCam incidents API

Endpoints for managing Real Time Security (RTS) incidents. An incident is a security event that has been detected and may require attention. Incidents are created automatically ...

AngelCam location API

Endpoints for accessing and managing locations. Locations are used to organize cameras into groups. Every camera belongs to exactly one location, and every user has a root locat...

AngelCam order API

The order API from AngelCam — 3 operation(s) for order.

AngelCam public-camera API

Endpoints for browsing cameras that are publicly accessible. A camera appears here if it has the Broadcasting service active and has been marked as public — either because it us...

AngelCam recording API

Cloud Recording endpoints. Requires the Cloud Recording service to be active on the camera — otherwise all endpoints return 404. A camera can have multiple simultaneous recordin...

AngelCam rts_messages API

Endpoints for managing notifications. Base object is message. We create a message when something important happens. For example, when a camera goes offline, when a sensor detect...

AngelCam rts_notification_methods API

Manage notification methods — email and HTTP webhook. HTTP methods send a signed POST to your URL with a JSON payload on each notification. See the [Webhooks guide](/guides/webh...

AngelCam rts_notification_rules API

Endpoints for managing notification rules. Notification rule is a rule that defines when and how we should send message to user. For example, we can create rule that says: "When...

AngelCam rts_settings API

Global Real Time Security (RTS) settings for your account. The main setting is `incident_ttl`, which controls how long (in [ISO 8601 duration format](#section/Angelcam-API/Time-...

AngelCam sensor API

With sensor endpoints you can view, manage and connect sensors to the user account. Sensor can be bind to one particular already connected [camera](#tag/camera) to mark received...

AngelCam service API

A catalog of services available for purchase. Use these endpoints to discover service `code` values before activating a service via the [My services](#tag/active-service) endpoi...

AngelCam shared-camera API

For access to cameras which somebody shared with you. In general everything is same as in my cameras section, see above, there is only one difference. Together with cameras info...

AngelCam shared-camera-clip API

Recording clips on cameras shared with you. Everything works the same as [My recording clips](#tag/clip) — just replace `cameras` with `shared-cameras` in the endpoint URLs.

AngelCam shared-camera-recording API

Everything is same as in recording for my own cameras. Just replace `cameras` by `shared-cameras` in every endpoints url.

AngelCam space API

A **space** is the organisational unit in Angelcam — it owns all resources: cameras, locations, recordings, services, and billing. Every API request operates within a space cont...

AngelCam speakers API

Manage speakers and trigger audio playback. See the [Speakers guide](/guides/speakers/) for setup instructions, including how to configure an AngelBox as a speaker.

AngelCam stream-controls API

You normally don't have to know the `streamer_domain` and `stream_id` path parameter, but use the generated endpoint URLs as reported by the `stream_controls` field in a create-...

AngelCam user API

The user API from AngelCam — 1 operation(s) for user.

Scroll for all 29

Arazzo Workflows 3

Multi-step API workflows described with the Arazzo specification.

_Index

ARAZZO

Angelcam — create and share a clip

From a camera, list recordings, read a timeline, create a clip, and share it by email.

ARAZZO

Angelcam — watch a live camera

List cameras and retrieve the live-stream URLs for one.

ARAZZO

MCP Servers 1

Model Context Protocol servers that expose these APIs to AI agents.

angelcam-mcp.yml

MCP SERVER

Rate Limits 1

Documented rate limits and quota policies.

Angelcam Rate Limits

0 limits

RATE LIMITS

Event Specifications 1

AsyncAPI definitions for this provider's event-driven and streaming APIs.

Security Posture 2

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Angelcam Authentication

apiKey/oauth2 · 2 schemes

SECURITY

Angelcam Domain Security

TLSv1.2 · HSTS · DMARC

SECURITY

Scopes 1

OAuth scopes governing access to this provider's APIs.

Angelcam Scopes

51 scopes · authorizationCode/password

51 scopes

SCOPES

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Angelcam Agentic Access

124 operations · 53 acting · 8 human-in-the-loop

124 operations · 53 acting

AGENTIC

Resources

Get Started 3

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 4

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 6

Pagination, idempotency, versioning, errors, and events

Build 1

SDKs, sample code, and the tooling you integrate with

Access & Security 3

Authentication, authorization, and security posture

Operate 4

Status, limits, changes, and where to get help

Commercial 2

Pricing, plans, and the legal terms of use

Company 2

The organization behind the API

Source (apis.yml)

apis.yml Raw ↑
aid: angelcam
name: AngelCam
description: Angelcam is a cloud video-surveillance platform that connects any IP camera to the cloud — via ONVIF and the
  open-source Arrow connector — for live viewing, cloud recording, clip creation and sharing, two-way audio, sensors, and
  Remote Technical Surveillance (RTS) event notifications. The Angelcam RESTful API (HTTPS-only JSON, organised around Spaces,
  secured with OAuth2 or a Personal Access Token) exposes 90+ endpoints across cameras, recordings, clips, events, Arrow clients,
  notifications, speakers, and services.
url: https://raw.githubusercontent.com/api-evangelist/angelcam/refs/heads/main/apis.yml
x-type: company
x-source: vc-portfolio
x-backed-by:
- 500-global
x-tier: stub
x-tier-reason: portfolio-lead
accessModel:
  pricing: unknown
  onboarding: self-serve
  trial: false
  try_now: false
  public: false
  label: Self-serve signup
  confidence: medium
  source:
  - authentication
  generated: '2026-07-22'
  method: derived
image: https://developers.angelcam.com/assets/logo-angelcam.svg
specificationVersion: '0.20'
created: '2026-07-17'
modified: '2026-07-17'
tags:
- Company
- Video Surveillance
- Cameras
- IP Camera
- Cloud Recording
- Video Streaming
- IoT
- ONVIF
- Security
- Webhooks
apis:
- aid: angelcam:angelcam-active-service-api
  name: AngelCam active-service API
  description: 'Endpoints for managing your activated services and assigning them to cameras.

    A service must first be activated (purchased) for your account, then assigned to a specific camera before it takes effect
    on that camera.


    ## Service lifecycle

    1. **Find a service code.** Browse [available services](#operation/services) to get the `code` of the service you want.

    2. **Activate the service** by calling [`POST /billing/active-services/`](#operation/activate-service). Provide the service
    `code` and a billing `period` — `P1M` for monthly or `P1Y` for annual billing.

    3. **Assign to a camera** by calling [`PUT /billing/active-services/{id}/usage/`](#operation/my-service-usage-update)
    with the `camera_id`. Set `camera_id` to `null` to unassign.

    4. **Upgrade or downgrade** at any time via [`PUT /billing/active-services/{id}/`](#operation/my-service-update). A downgrade
    takes effect at the end of the current billing period by default. Set `force_downgrade: true` to apply it immediately
    with prorated credit.

    5. **Cancel** via [`DELETE /billing/active-services/{id}/`](#operation/my-service-cancel).'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - active-service
  properties:
  - type: OpenAPI
    url: openapi/angelcam-active-service-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-angelcameras-api
  name: AngelCam angelcameras API
  description: The angelcameras API from AngelCam — 1 operation(s) for angelcameras.
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - angelcameras
  properties:
  - type: OpenAPI
    url: openapi/angelcam-angelcameras-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-arrow-clients-api
  name: AngelCam arrow-clients API
  description: 'Manage [Arrow clients](https://github.com/angelcam/arrow-client) — pair them with your account, inspect exposed
    services, and send commands.

    **Pairing:** restart the device (pairing mode is active for the first 20 minutes after start), POST to `arrow-clients/`
    to get the UUID, then poll `arrow-clients/{uuid}/` until status is `online`.

    **Arrow proxy:** use the transparent HTTP proxy or HTTP CONNECT proxy to reach services behind an Arrow client. Both require
    a `Host: {SERVICE_ID}-{ARROW_UUID}` header and a `Proxy-Authorization: Bearer` token from the Arrow client detail endpoint.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - arrow-clients
  properties:
  - type: OpenAPI
    url: openapi/angelcam-arrow-clients-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-audio-message-api
  name: AngelCam audio-message API
  description: 'Endpoints for managing audio messages. Audio messages are pre-recorded audio clips that can be played through
    [speakers](#tag/speakers).

    Audio files are uploaded as Base64-encoded content. Supported formats: AAC (`audio/aac`), MP3 (`audio/mpeg`), WAV (`audio/wav`),
    OGG (`audio/ogg`), and WebM audio (`audio/webm`).

    Keep audio files short — a few seconds is ideal. Large files will increase upload time and may affect playback reliability.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - audio-message
  properties:
  - type: OpenAPI
    url: openapi/angelcam-audio-message-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-broadcasting-api
  name: AngelCam broadcasting API
  description: 'Endpoints for managing broadcasting settings and retrieving broadcasting streams. If a camera doesn''t have
    the Broadcasting service activated, all camera broadcasting endpoints will return HTTP 404.


    The broadcasting service can be used whenever you need more concurrent stream consumers. It does not necessarily mean
    that the stream from your camera has to be public.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - broadcasting
  properties:
  - type: OpenAPI
    url: openapi/angelcam-broadcasting-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-camera-api
  name: AngelCam camera API
  description: 'Manage your cameras and access live streams, snapshots, and recordings. Supported codecs: H.264, H.265 (experimental),
    MJPEG. Live streams are limited to 10 concurrent consumers per camera — use the [broadcasting service](#tag/broadcasting)
    for higher concurrency.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - camera
  properties:
  - type: OpenAPI
    url: openapi/angelcam-camera-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-camera-guest-api
  name: AngelCam camera-guest API
  description: 'You can share your camera with a guest, this means, you allow guests to view stream from your camera. There
    is also an option to share also recordings together with live stream.


    When you adding new guest, you just need their email. Then we send them an email informing them that you share camera
    with them. In case when there was no account with given email we precreate an account for these guest.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - camera-guest
  properties:
  - type: OpenAPI
    url: openapi/angelcam-camera-guest-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-camera-stream-detection-api
  name: AngelCam camera-stream-detection API
  description: Using these endpoints you can verify if there are camera streams available on specified network address. Detection
    is asynchronous. For this reason there is one endpoint for initializing stream detection and one for retrieving result
    of detection.
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - camera-stream-detection
  properties:
  - type: OpenAPI
    url: openapi/angelcam-camera-stream-detection-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-client-api
  name: AngelCam client API
  description: 'Endpoints for reseller users to manage their clients.

    A reseller can create two types of client accounts:

    * **Full account** — the client has full control over their cameras and services. * **Limited account** — the client has
    read-only access. They can view their cameras and streams but cannot make any changes. A client can upgrade from limited
    to full at any time, which also revokes the reseller''s access to their space.

    A reseller automatically has access to their clients'' spaces (cameras, recordings, streams). A client — whether full
    or limited — can revoke this access at any time.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - client
  properties:
  - type: OpenAPI
    url: openapi/angelcam-client-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-clip-api
  name: AngelCam clip API
  description: 'A clip is a permanent, downloadable excerpt of recorded footage. Unlike a recording stream — which is a temporary
    playback session — a clip is processed into a file that can be downloaded or shared with others.

    **Prerequisite:** The camera must have the Cloud Recording service active. If not, recording endpoints return 404.


    ## Creating a clip

    1. **Check available footage.** Use [`recording/{recording_id}/timeline/`](#operation/my-cameras-recording-timeline) to
    confirm that footage exists for the time range you want.

    2. **Submit the clip request** via [`POST cameras/{camera_id}/clips/`](#operation/my-cameras-clips-create) with a `name`,
    `start`, and `end`. The maximum clip length is **3 hours**.

    3. **Poll for completion.** Clip processing is asynchronous. Status progresses from `PENDING` → `BUILDING` → `READY` (or
    `ERROR`). Poll [`cameras/{camera_id}/clips/{clip_id}/`](#operation/my-cameras-clips-detail) until the status is `READY`.

    4. **Download or share.** A `READY` clip includes a `download_url` (a time-limited direct download link) and a `sharing_token`
    for unauthenticated sharing via the clip share endpoint.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - clip
  properties:
  - type: OpenAPI
    url: openapi/angelcam-clip-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-event-api
  name: AngelCam event API
  description: 'Events represent detections reported by cameras or sensors — typically motion detected by a camera or a trigger
    from an external sensor. Events are the building blocks for [RTS incidents](#tag/incidents) and camera timeline markers.


    ## Sending events to Angelcam

    When a camera or sensor detects something, it reports it to Angelcam by calling the event endpoint with its unique `hash`
    (found in the Angelcam dashboard or via the [Sensor](#tag/sensor) endpoints). Use `POST /v1/events/` in all cases where
    possible. A `GET /v1/events/` alternative exists solely for devices that are technically incapable of making POST requests
    (some older cameras). The rate limit for event submission is 10 requests per minute per hash.


    ## Listing events

    Pagination for event list endpoints works differently from other list endpoints: there is no `offset` parameter. Instead:

    - Use the `next` link in the response to move to the next page. - Pagination is one-directional (forward only). - Use
    the `start` and `end` filters to narrow down the time range.

    Events are returned ordered by `occurred_at` (newest first).'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - event
  properties:
  - type: OpenAPI
    url: openapi/angelcam-event-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-incidents-api
  name: AngelCam incidents API
  description: 'Endpoints for managing Real Time Security (RTS) incidents.

    An incident is a security event that has been detected and may require attention. Incidents are created automatically
    when sensor events or camera status changes match an active [notification rule](#tag/rts_notification_rules).

    Incidents go through the following states:

    * **Open** — the incident has been created and not yet reviewed. * **Verified** — acknowledged as a genuine security event
    (`verified_at` is set). * **Closed** — the incident has been resolved (`closed_at` is set). An incident can be closed
    without being verified first (e.g. a false alarm).'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - incidents
  properties:
  - type: OpenAPI
    url: openapi/angelcam-incidents-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-location-api
  name: AngelCam location API
  description: 'Endpoints for accessing and managing locations. Locations are used to organize cameras into groups. Every
    camera belongs to exactly one location, and every user has a root location whose ID is available from the [Current User
    Info](#tag/user) endpoint.

    Locations can be **armed** or **disarmed**. When a location is armed, Real Time Security (RTS) will generate notifications
    for events on cameras in that location. Each location supports scheduled arming/disarming so notifications can be active
    only during certain hours.

    > **Note:** Creating, editing, and deleting locations is currently only possible through the [My Angelcam](https://my.angelcam.com/)
    web UI. These API endpoints provide read access only.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - location
  properties:
  - type: OpenAPI
    url: openapi/angelcam-location-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-order-api
  name: AngelCam order API
  description: The order API from AngelCam — 3 operation(s) for order.
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - order
  properties:
  - type: OpenAPI
    url: openapi/angelcam-order-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-public-camera-api
  name: AngelCam public-camera API
  description: 'Endpoints for browsing cameras that are publicly accessible. A camera appears here if it has the Broadcasting
    service active and has been marked as public — either because it uses free public broadcasting, or because the camera
    owner has explicitly enabled public access.

    > **Access restricted:** These endpoints are available only to partners who have arranged access with Angelcam. Please
    contact [support](https://www.angelcam.com/support/) if you are interested in using them.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - public-camera
  properties:
  - type: OpenAPI
    url: openapi/angelcam-public-camera-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-recording-api
  name: AngelCam recording API
  description: 'Cloud Recording endpoints. Requires the Cloud Recording service to be active on the camera — otherwise all
    endpoints return 404.

    A camera can have multiple simultaneous recordings (e.g. continuous + event-only) with different retentions. The timeline
    endpoint returns _segments_ (continuous blocks of recorded video) for a given time range; maximum range per request is
    24 hours.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - recording
  properties:
  - type: OpenAPI
    url: openapi/angelcam-recording-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-rts-messages-api
  name: AngelCam rts_messages API
  description: Endpoints for managing notifications. Base object is message. We create a message when something important
    happens. For example, when a camera goes offline, when a sensor detects motion, etc. When a message is created, we can
    send it to user using different notification methods based on notification rules.
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - rts_messages
  properties:
  - type: OpenAPI
    url: openapi/angelcam-rts-messages-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-rts-notification-methods-api
  name: AngelCam rts_notification_methods API
  description: Manage notification methods — email and HTTP webhook. HTTP methods send a signed POST to your URL with a JSON
    payload on each notification. See the [Webhooks guide](/guides/webhooks/) for payload fields and signature verification.
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - rts_notification_methods
  properties:
  - type: OpenAPI
    url: openapi/angelcam-rts-notification-methods-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-rts-notification-rules-api
  name: AngelCam rts_notification_rules API
  description: 'Endpoints for managing notification rules. Notification rule is a rule that defines when and how we should
    send message to user. For example, we can create rule that says: "When camera goes offline, send me an email".'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - rts_notification_rules
  properties:
  - type: OpenAPI
    url: openapi/angelcam-rts-notification-rules-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-access/angelcam-agentic-access.yml
  - type: Webhooks
    url: asyncapi/angelcam-webhooks.yml
  - type: Arazzo
    url: arazzo/angelcam-watch-live-camera.yml
  - type: Arazzo
    url: arazzo/angelcam-create-and-share-clip.yml
- aid: angelcam:angelcam-rts-settings-api
  name: AngelCam rts_settings API
  description: 'Global Real Time Security (RTS) settings for your account.

    The main setting is `incident_ttl`, which controls how long (in [ISO 8601 duration format](#section/Angelcam-API/Time-and-duration-formats))
    an open incident stays active before it is automatically closed when no new events are received.'
  humanURL: https://developers.angelcam.com/
  baseURL: https://api.angelcam.com/v1
  tags:
  - rts_settings
  properties:
  - type: OpenAPI
    url: openapi/angelcam-rts-settings-api-openapi.yml
  - type: Authentication
    url: authentication/angelcam-authentication.yml
  - type: OAuthScopes
    url: scopes/angelcam-scopes.yml
  - type: Conventions
    url: conventions/angelcam-conventions.yml
  - type: ErrorCatalog
    url: errors/angelcam-problem-types.yml
  - type: RateLimits
    url: rate-limits/angelcam-rate-limits.yml
  - type: Lifecycle
    url: lifecycle/angelcam-lifecycle.yml
  - type: DataModel
    url: data-model/angelcam-data-model.yml
  - type: Conformance
    url: conformance/angelcam-conformance.yml
  - type: AgenticAccess
    url: agentic-acce

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/angelcam/refs/heads/main/apis.yml