{"id":18498039,"url":"https://github.com/apivideo/api.video-android-client","last_synced_at":"2025-04-09T00:30:56.011Z","repository":{"id":40263563,"uuid":"428690200","full_name":"apivideo/api.video-android-client","owner":"apivideo","description":"The official Android client library for api.video ","archived":false,"fork":false,"pushed_at":"2025-01-27T13:57:31.000Z","size":22476,"stargazers_count":17,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T19:44:45.984Z","etag":null,"topics":["android","android-api","api-client","video"],"latest_commit_sha":null,"homepage":"https://api.video","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apivideo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-16T14:32:55.000Z","updated_at":"2025-02-25T09:23:21.000Z","dependencies_parsed_at":"2023-09-26T14:59:54.530Z","dependency_job_id":"dbee79a4-8588-436f-a78b-dc2ab74643b9","html_url":"https://github.com/apivideo/api.video-android-client","commit_stats":null,"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apivideo%2Fapi.video-android-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apivideo","download_url":"https://codeload.github.com/apivideo/api.video-android-client/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247949722,"owners_count":21023374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-api","api-client","video"],"created_at":"2024-11-06T13:37:19.116Z","updated_at":"2025-04-09T00:30:51.001Z","avatar_url":"https://github.com/apivideo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\u003cdocumentation_excluded\u003e--\u003e\n[![badge](https://img.shields.io/twitter/follow/api_video?style=social)](https://twitter.com/intent/follow?screen_name=api_video) \u0026nbsp; [![badge](https://img.shields.io/github/stars/apivideo/api.video-android-client?style=social)](https://github.com/apivideo/api.video-android-client) \u0026nbsp; [![badge](https://img.shields.io/discourse/topics?server=https%3A%2F%2Fcommunity.api.video)](https://community.api.video)\n![](https://github.com/apivideo/.github/blob/main/assets/apivideo_banner.png)\n\u003ch1 align=\"center\"\u003eapi.video Android API client\u003c/h1\u003e\n\n[api.video](https://api.video) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n\n## Table of contents\n\n- [Project description](#project-description)\n- [Getting started](#getting-started)\n  - [Requirements](#requirements)\n  - [Installation](#installation)\n    - [Maven users](#maven-users)\n    - [Gradle users](#gradle-users)\n    - [Others](#others)\n  - [Code sample](#code-sample)\n  - [Upload options](#upload-options)\n  - [Permissions](#permissions)\n- [Documentation](#documentation)\n  - [API Endpoints](#api-endpoints)\n    - [AnalyticsApi](#analyticsapi)\n    - [CaptionsApi](#captionsapi)\n    - [ChaptersApi](#chaptersapi)\n    - [LiveStreamsApi](#livestreamsapi)\n    - [PlayerThemesApi](#playerthemesapi)\n    - [SummariesApi](#summariesapi)\n    - [TagsApi](#tagsapi)\n    - [UploadTokensApi](#uploadtokensapi)\n    - [VideosApi](#videosapi)\n    - [WatermarksApi](#watermarksapi)\n    - [WebhooksApi](#webhooksapi)\n  - [Models](#models)\n  - [Authorization](#documentation-for-authorization)\n    - [API key](#api-key)\n    - [Public endpoints](#public-endpoints)\n  - [Recommendation](#recommendation)\n- [Have you gotten use from this API client?](#have-you-gotten-use-from-this-api-client-)\n- [Contribution](#contribution)\n\u003c!--\u003c/documentation_excluded\u003e--\u003e\n\u003c!--\u003cdocumentation_only\u003e\n---\ntitle: Android API client\nmeta: \n  description: The official Android API client for api.video. [api.video](https://api.video/) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n---\n\n# api.video Android API client\n\n[api.video](https://api.video/) is the video infrastructure for product builders. Lightning fast video APIs for integrating, scaling, and managing on-demand \u0026 low latency live streaming features in your app.\n\u003c/documentation_only\u003e--\u003e\n\n## Project description\n\napi.video's Android API client streamlines the coding process. Chunking files is handled for you, as is pagination and refreshing your tokens.\n\n## Getting started\n\n### Requirements\n\nBuilding the API client library requires:\n1. Java 1.8+\n2. Maven/Gradle\n\n### Installation\n\n#### Maven users\n\nAdd this dependency to your project's POM:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003evideo.api\u003c/groupId\u003e\n  \u003cartifactId\u003eandroid-api-client\u003c/artifactId\u003e\n  \u003cversion\u003e1.6.6\u003c/version\u003e\n  \u003cscope\u003ecompile\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\n#### Gradle users\n\nAdd this dependency to your project's build file:\n\n```groovy\nimplementation \"video.api:android-api-client:1.6.6\"\n```\n\n#### Others\n\nAt first generate the JAR by executing:\n\n```shell\nmvn clean package\n```\n\nThen manually install the following JARs:\n\n* `target/android-api-client-1.6.6.jar`\n* `target/lib/*.jar`\n\n### Code sample\n\nPlease follow the [installation](#installation) instruction and execute the following Kotlin code:\n\n```kotlin\n// If you want to upload a video with an upload token (uploadWithUploadToken):\nVideosApiStore.initialize()\n// if you rather like to use the sandbox environment:\n// VideosApiStore.initialize(environment = Environment.SANDBOX)\n\nval myVideoFile = File(\"my-video.mp4\")\n\nval workManager = WorkManager.getInstance(context) // WorkManager comes from package \"androidx.work:work-runtime\"\nworkManager.uploadWithUploadToken(\"MY_UPLOAD_TOKEN\", myVideoFile) // Dispatch the upload with the WorkManager\n```\n\n### Example\n\nExamples that demonstrate how to use the API is provided in folder `examples/`.\n\n## Upload methods\n\nTo upload a video, you have 3 differents methods:\n* `WorkManager`: preferred method: Upload with Android WorkManager API. It supports progress notifications, upload in background, queue, reupload after lost connections. Directly use, WorkManager extensions. See [example](https://github.com/apivideo/api.video-android-client/blob/main/examples/workmanager) for more details.\n* `UploadService`: Upload with an Android Service. It supports progress notifications, upload in background, queue. You have to extend the `UploadService` and register it in your `AndroidManifest.xml`. See [example](https://github.com/apivideo/api.video-android-client/blob/main/examples/service) for more details.\n* Direct call with `ApiClient`: Do not call API from the main thread, otherwise you will get an `android.os.NetworkOnMainThreadException`. Dispatch API calls with Thread, Executors or Kotlin coroutine to avoid this.\n\n## Permissions\n\nIf your video files are located in the media store, you have to add the following permissions in your `AndroidManifest.xml`:\n\n```xml\n    \u003cuses-permission android:name=\"android.permission.INTERNET\" /\u003e\n\n    \u003c!-- The application requires READ_EXTERNAL_STORAGE or READ_MEDIA_VIDEO to access video to upload them` --\u003e\n    \u003cuses-permission\n        android:name=\"android.permission.READ_EXTERNAL_STORAGE\"\n        android:maxSdkVersion=\"32\" /\u003e\n    \u003cuses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" /\u003e\n``` \n\nYour application also has to dynamically request the `android.permission.READ_EXTERNAL_STORAGE` permission to upload videos.\n\nIf your video files are located in the app-specific storage, you don't need to request any permissions nor add any permissions to your `AndroidManifest.xml`.\n\n### WorkManager\n\nTo upload with the `WorkManager`, you also have to add the following lines in your `AndroidManifest.xml`:\n\n```xml\n    \u003c!-- The application requires POST_NOTIFICATIONS to display the upload notification --\u003e\n    \u003cuses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" /\u003e\n\n    \u003c!-- The application requires FOREGROUND_SERVICE_DATA_SYNC for API \u003e= 34 --\u003e\n    \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE_DATA_SYNC\" /\u003e\n\n    \u003capplication\u003e\n      ...\n        \u003c!-- The application requires to declare a service type for API \u003e= 34 --\u003e\n        \u003cservice\n            android:name=\"androidx.work.impl.foreground.SystemForegroundService\"\n            android:foregroundServiceType=\"dataSync\"\n            tools:node=\"merge\" /\u003e\n    \u003c/application\u003e\n```\n\n### UploadService\n\n\nTo upload with the `UploadService`, you also have to add the following lines in your `AndroidManifest.xml`:\n\n```xml\n    \u003c!-- The application requires POST_NOTIFICATIONS to display the upload notification --\u003e\n    \u003cuses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" /\u003e\n\n    \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" /\u003e\n\n    \u003capplication\u003e\n        \u003c!--\n          The application requires to declare your service, replace `YourUploaderService` by the package\n          of your service or by the package of `UploadService` if you directly use `UploadService`.\n        --\u003e\n        \u003cservice android:name=\".YourUploaderService\" /\u003e\n    \u003c/application\u003e\n```\n\n\n\n## Documentation\n\n### API Endpoints\n\nAll URIs are relative to *https://ws.api.video*\n\n\n### AnalyticsApi\n\n\n#### Retrieve an instance of AnalyticsApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval analytics = client.analytics()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**getAggregatedMetrics**](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsApi.md#getAggregatedMetrics) | **GET** `/data/metrics/{metric}/{aggregation}` | Retrieve aggregated metrics\n[**getMetricsBreakdown**](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsApi.md#getMetricsBreakdown) | **GET** `/data/buckets/{metric}/{breakdown}` | Retrieve metrics in a breakdown of dimensions\n[**getMetricsOverTime**](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsApi.md#getMetricsOverTime) | **GET** `/data/timeseries/{metric}` | Retrieve metrics over time\n\n\n### CaptionsApi\n\n\n#### Retrieve an instance of CaptionsApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval captions = client.captions()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**upload**](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsApi.md#upload) | **POST** `/videos/{videoId}/captions/{language}` | Upload a caption\n[**get**](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsApi.md#get) | **GET** `/videos/{videoId}/captions/{language}` | Retrieve a caption\n[**update**](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsApi.md#update) | **PATCH** `/videos/{videoId}/captions/{language}` | Update a caption\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsApi.md#delete) | **DELETE** `/videos/{videoId}/captions/{language}` | Delete a caption\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsApi.md#list) | **GET** `/videos/{videoId}/captions` | List video captions\n\n\n### ChaptersApi\n\n\n#### Retrieve an instance of ChaptersApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval chapters = client.chapters()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**upload**](https://github.com/apivideo/api.video-android-client/blob/main/docs/ChaptersApi.md#upload) | **POST** `/videos/{videoId}/chapters/{language}` | Upload a chapter\n[**get**](https://github.com/apivideo/api.video-android-client/blob/main/docs/ChaptersApi.md#get) | **GET** `/videos/{videoId}/chapters/{language}` | Retrieve a chapter\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/ChaptersApi.md#delete) | **DELETE** `/videos/{videoId}/chapters/{language}` | Delete a chapter\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/ChaptersApi.md#list) | **GET** `/videos/{videoId}/chapters` | List video chapters\n\n\n### LiveStreamsApi\n\n\n#### Retrieve an instance of LiveStreamsApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval liveStreams = client.liveStreams()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**create**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#create) | **POST** `/live-streams` | Create live stream\n[**get**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#get) | **GET** `/live-streams/{liveStreamId}` | Retrieve live stream\n[**update**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#update) | **PATCH** `/live-streams/{liveStreamId}` | Update a live stream\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#delete) | **DELETE** `/live-streams/{liveStreamId}` | Delete a live stream\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#list) | **GET** `/live-streams` | List all live streams\n[**uploadThumbnail**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#uploadThumbnail) | **POST** `/live-streams/{liveStreamId}/thumbnail` | Upload a thumbnail\n[**deleteThumbnail**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#deleteThumbnail) | **DELETE** `/live-streams/{liveStreamId}/thumbnail` | Delete a thumbnail\n[**complete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamsApi.md#complete) | **PUT** `/live-streams/{liveStreamId}/complete` | Complete a live stream\n\n\n### PlayerThemesApi\n\n\n#### Retrieve an instance of PlayerThemesApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval playerThemes = client.playerThemes()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**create**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#create) | **POST** `/players` | Create a player\n[**get**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#get) | **GET** `/players/{playerId}` | Retrieve a player\n[**update**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#update) | **PATCH** `/players/{playerId}` | Update a player\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#delete) | **DELETE** `/players/{playerId}` | Delete a player\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#list) | **GET** `/players` | List all player themes\n[**uploadLogo**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#uploadLogo) | **POST** `/players/{playerId}/logo` | Upload a logo\n[**deleteLogo**](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesApi.md#deleteLogo) | **DELETE** `/players/{playerId}/logo` | Delete logo\n\n\n### SummariesApi\n\n\n#### Retrieve an instance of SummariesApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval summaries = client.summaries()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**create**](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummariesApi.md#create) | **POST** `/summaries` | Generate video summary\n[**update**](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummariesApi.md#update) | **PATCH** `/summaries/{summaryId}/source` | Update summary details\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummariesApi.md#delete) | **DELETE** `/summaries/{summaryId}` | Delete video summary\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummariesApi.md#list) | **GET** `/summaries` | List summaries\n[**getSummarySource**](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummariesApi.md#getSummarySource) | **GET** `/summaries/{summaryId}/source` | Get summary details\n\n\n### TagsApi\n\n\n#### Retrieve an instance of TagsApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval tags = client.tags()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/TagsApi.md#list) | **GET** `/tags` | List all video tags\n\n\n### UploadTokensApi\n\n\n#### Retrieve an instance of UploadTokensApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval uploadTokens = client.uploadTokens()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**createToken**](https://github.com/apivideo/api.video-android-client/blob/main/docs/UploadTokensApi.md#createToken) | **POST** `/upload-tokens` | Generate an upload token\n[**getToken**](https://github.com/apivideo/api.video-android-client/blob/main/docs/UploadTokensApi.md#getToken) | **GET** `/upload-tokens/{uploadToken}` | Retrieve upload token\n[**deleteToken**](https://github.com/apivideo/api.video-android-client/blob/main/docs/UploadTokensApi.md#deleteToken) | **DELETE** `/upload-tokens/{uploadToken}` | Delete an upload token\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/UploadTokensApi.md#list) | **GET** `/upload-tokens` | List all active upload tokens\n\n\n### VideosApi\n\n\n#### Retrieve an instance of VideosApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval videos = client.videos()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**create**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#create) | **POST** `/videos` | Create a video object\n[**upload**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#upload) | **POST** `/videos/{videoId}/source` | Upload a video\n[**uploadWithUploadToken**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#uploadWithUploadToken) | **POST** `/upload` | Upload with an delegated upload token\n[**get**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#get) | **GET** `/videos/{videoId}` | Retrieve a video object\n[**update**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#update) | **PATCH** `/videos/{videoId}` | Update a video object\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#delete) | **DELETE** `/videos/{videoId}` | Delete a video object\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#list) | **GET** `/videos` | List all video objects\n[**uploadThumbnail**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#uploadThumbnail) | **POST** `/videos/{videoId}/thumbnail` | Upload a thumbnail\n[**pickThumbnail**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#pickThumbnail) | **PATCH** `/videos/{videoId}/thumbnail` | Set a thumbnail\n[**getDiscarded**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#getDiscarded) | **GET** `/discarded/videos/{videoId}` | Retrieve a discarded video object\n[**getStatus**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#getStatus) | **GET** `/videos/{videoId}/status` | Retrieve video status and details\n[**listDiscarded**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#listDiscarded) | **GET** `/discarded/videos` | List all discarded video objects\n[**updateDiscarded**](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosApi.md#updateDiscarded) | **PATCH** `/discarded/videos/{videoId}` | Update a discarded video object\n\n\n### WatermarksApi\n\n\n#### Retrieve an instance of WatermarksApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval watermarks = client.watermarks()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**upload**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WatermarksApi.md#upload) | **POST** `/watermarks` | Upload a watermark\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WatermarksApi.md#delete) | **DELETE** `/watermarks/{watermarkId}` | Delete a watermark\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WatermarksApi.md#list) | **GET** `/watermarks` | List all watermarks\n\n\n### WebhooksApi\n\n\n#### Retrieve an instance of WebhooksApi:\n```kotlin\nval client = ApiVideoClient(\"YOUR_API_KEY\")\nval webhooks = client.webhooks()\n```\n\n\n\n#### Endpoints\n\nMethod | HTTP request | Description\n------------- | ------------- | -------------\n[**create**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WebhooksApi.md#create) | **POST** `/webhooks` | Create Webhook\n[**get**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WebhooksApi.md#get) | **GET** `/webhooks/{webhookId}` | Retrieve Webhook details\n[**delete**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WebhooksApi.md#delete) | **DELETE** `/webhooks/{webhookId}` | Delete a Webhook\n[**list**](https://github.com/apivideo/api.video-android-client/blob/main/docs/WebhooksApi.md#list) | **GET** `/webhooks` | List all webhooks\n\n\n\n### Documentation for Models\n\n - [AccessToken](https://github.com/apivideo/api.video-android-client/blob/main/docs/AccessToken.md)\n - [AdditionalBadRequestErrors](https://github.com/apivideo/api.video-android-client/blob/main/docs/AdditionalBadRequestErrors.md)\n - [AnalyticsAggregatedMetricsResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsAggregatedMetricsResponse.md)\n - [AnalyticsAggregatedMetricsResponseContext](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsAggregatedMetricsResponseContext.md)\n - [AnalyticsAggregatedMetricsResponseContextTimeframe](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsAggregatedMetricsResponseContextTimeframe.md)\n - [AnalyticsData](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsData.md)\n - [AnalyticsMetricsBreakdownResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsMetricsBreakdownResponse.md)\n - [AnalyticsMetricsBreakdownResponseContext](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsMetricsBreakdownResponseContext.md)\n - [AnalyticsMetricsBreakdownResponseData](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsMetricsBreakdownResponseData.md)\n - [AnalyticsMetricsOverTimeResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsMetricsOverTimeResponse.md)\n - [AnalyticsMetricsOverTimeResponseContext](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsMetricsOverTimeResponseContext.md)\n - [AnalyticsMetricsOverTimeResponseData](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsMetricsOverTimeResponseData.md)\n - [AnalyticsPlays400Error](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsPlays400Error.md)\n - [AnalyticsPlaysResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/AnalyticsPlaysResponse.md)\n - [AuthenticatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/AuthenticatePayload.md)\n - [BadRequest](https://github.com/apivideo/api.video-android-client/blob/main/docs/BadRequest.md)\n - [BytesRange](https://github.com/apivideo/api.video-android-client/blob/main/docs/BytesRange.md)\n - [Caption](https://github.com/apivideo/api.video-android-client/blob/main/docs/Caption.md)\n - [CaptionsListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsListResponse.md)\n - [CaptionsUpdatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/CaptionsUpdatePayload.md)\n - [Chapter](https://github.com/apivideo/api.video-android-client/blob/main/docs/Chapter.md)\n - [ChaptersListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/ChaptersListResponse.md)\n - [ConflictError](https://github.com/apivideo/api.video-android-client/blob/main/docs/ConflictError.md)\n - [DiscardedVideoUpdatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/DiscardedVideoUpdatePayload.md)\n - [FilterBy](https://github.com/apivideo/api.video-android-client/blob/main/docs/FilterBy.md)\n - [FilterBy1](https://github.com/apivideo/api.video-android-client/blob/main/docs/FilterBy1.md)\n - [FilterBy2](https://github.com/apivideo/api.video-android-client/blob/main/docs/FilterBy2.md)\n - [Link](https://github.com/apivideo/api.video-android-client/blob/main/docs/Link.md)\n - [ListTagsResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/ListTagsResponse.md)\n - [ListTagsResponseData](https://github.com/apivideo/api.video-android-client/blob/main/docs/ListTagsResponseData.md)\n - [LiveStream](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStream.md)\n - [LiveStreamAssets](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamAssets.md)\n - [LiveStreamCreationPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamCreationPayload.md)\n - [LiveStreamListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamListResponse.md)\n - [LiveStreamUpdatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/LiveStreamUpdatePayload.md)\n - [Metadata](https://github.com/apivideo/api.video-android-client/blob/main/docs/Metadata.md)\n - [Model403ErrorSchema](https://github.com/apivideo/api.video-android-client/blob/main/docs/Model403ErrorSchema.md)\n - [NotFound](https://github.com/apivideo/api.video-android-client/blob/main/docs/NotFound.md)\n - [Pagination](https://github.com/apivideo/api.video-android-client/blob/main/docs/Pagination.md)\n - [PaginationLink](https://github.com/apivideo/api.video-android-client/blob/main/docs/PaginationLink.md)\n - [PlayerSessionEvent](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerSessionEvent.md)\n - [PlayerTheme](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerTheme.md)\n - [PlayerThemeAssets](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemeAssets.md)\n - [PlayerThemeCreationPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemeCreationPayload.md)\n - [PlayerThemeUpdatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemeUpdatePayload.md)\n - [PlayerThemesListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/PlayerThemesListResponse.md)\n - [Quality](https://github.com/apivideo/api.video-android-client/blob/main/docs/Quality.md)\n - [RefreshTokenPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/RefreshTokenPayload.md)\n - [RestreamsRequestObject](https://github.com/apivideo/api.video-android-client/blob/main/docs/RestreamsRequestObject.md)\n - [RestreamsResponseObject](https://github.com/apivideo/api.video-android-client/blob/main/docs/RestreamsResponseObject.md)\n - [SummariesListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummariesListResponse.md)\n - [Summary](https://github.com/apivideo/api.video-android-client/blob/main/docs/Summary.md)\n - [SummaryCreationPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummaryCreationPayload.md)\n - [SummarySource](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummarySource.md)\n - [SummaryUpdatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/SummaryUpdatePayload.md)\n - [TokenCreationPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/TokenCreationPayload.md)\n - [TokenListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/TokenListResponse.md)\n - [TooManyRequests](https://github.com/apivideo/api.video-android-client/blob/main/docs/TooManyRequests.md)\n - [UnrecognizedRequestUrl](https://github.com/apivideo/api.video-android-client/blob/main/docs/UnrecognizedRequestUrl.md)\n - [UploadToken](https://github.com/apivideo/api.video-android-client/blob/main/docs/UploadToken.md)\n - [Video](https://github.com/apivideo/api.video-android-client/blob/main/docs/Video.md)\n - [VideoAssets](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoAssets.md)\n - [VideoClip](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoClip.md)\n - [VideoCreationPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoCreationPayload.md)\n - [VideoSource](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoSource.md)\n - [VideoSourceLiveStream](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoSourceLiveStream.md)\n - [VideoSourceLiveStreamLink](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoSourceLiveStreamLink.md)\n - [VideoStatus](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoStatus.md)\n - [VideoStatusEncoding](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoStatusEncoding.md)\n - [VideoStatusEncodingMetadata](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoStatusEncodingMetadata.md)\n - [VideoStatusIngest](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoStatusIngest.md)\n - [VideoStatusIngestReceivedParts](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoStatusIngestReceivedParts.md)\n - [VideoThumbnailPickPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoThumbnailPickPayload.md)\n - [VideoUpdatePayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoUpdatePayload.md)\n - [VideoWatermark](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideoWatermark.md)\n - [VideosListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/VideosListResponse.md)\n - [Watermark](https://github.com/apivideo/api.video-android-client/blob/main/docs/Watermark.md)\n - [WatermarksListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/WatermarksListResponse.md)\n - [Webhook](https://github.com/apivideo/api.video-android-client/blob/main/docs/Webhook.md)\n - [WebhooksCreationPayload](https://github.com/apivideo/api.video-android-client/blob/main/docs/WebhooksCreationPayload.md)\n - [WebhooksListResponse](https://github.com/apivideo/api.video-android-client/blob/main/docs/WebhooksListResponse.md)\n\n\n### Rate Limiting\n\napi.video implements rate limiting to ensure fair usage and stability of the service. The API provides the rate limit values in the response headers for any API requests you make. The /auth endpoint is the only route without rate limitation.\n\nIn this client, you can access these headers by using the `*WithHttpInfo()` or `*Async` versions of the methods. These methods return the `ApiResponse` that contains the response body and the headers, allowing you to check the `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Retry-After` headers to understand your current rate limit status.\nRead more about these response headers in the [API reference](https://docs.api.video/reference#limitation).\n\nHere is an example of how to use these methods:\n\nWhen listening to the `WorkInfo` with the `WorkManager`, you can access the headers in the `OutputData` of the `WorkInfo`:\n```kotlin\nval headers = workInfo.outputData.toHeaders()\nLog.i(TAG, \"X-RateLimit-Limit: ${headers[\"x-ratelimit-limit\"]!![0]}\")\nLog.i(TAG, \"X-RateLimit-Remaining: ${headers[\"x-ratelimit-remaining\"]!![0]}\")\nLog.i(TAG, \"X-RateLimit-Retry-After: ${headers[\"x-ratelimit-retry-after\"]!![0]}\")\n```\n\n### Authorization\n\n#### API key\n\nMost endpoints required to be authenticated using the API key mechanism described in our [documentation](https://docs.api.video/reference#authentication).\n\nOn Android, you must NOT store your API key in your application code to prevent your API key from being exposed in your source code.\nOnly the [Public endpoints](#public-endpoints) can be called without authentication.\nIn the case, you want to call an endpoint that requires authentication, you will have to use a backend server. See [Security best practices](https://docs.api.video/sdks/security) for more details.\n\n\n#### Public endpoints\n\nSome endpoints don't require authentication. These one can be called with a client instantiated without API key:\n```kotlin\nval client = ApiVideoClient()\n```\n\n### Recommendation\n\nIt's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues.\nFor direct call with `ApiClient`: Do not call API from the main thread, otherwise you will get a `android.os.NetworkOnMainThreadException`. Dispatch API calls with Thread, Executors or Kotlin coroutine to avoid this. Alternatively, APIs come with an asynchronous counterpart (`createAsync` for `create`) except for the upload endpoint.\n\n### Have you gotten use from this API client?\n\nPlease take a moment to leave a star on the client ⭐\n\nThis helps other users to find the clients and also helps us understand which clients are most popular. Thank you!\n\n## Contribution\n\nSince this API client is generated from an OpenAPI description, we cannot accept pull requests made directly to the repository. If you want to contribute, you can open a pull request on the repository of our [client generator](https://github.com/apivideo/api-client-generator). Otherwise, you can also simply open an issue detailing your need on this repository.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapivideo%2Fapi.video-android-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapivideo%2Fapi.video-android-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapivideo%2Fapi.video-android-client/lists"}