Introduction
Welcome to the VideoPlasty API! Our API provides programmatic access to VideoPlasty stock assets. You can integrate this API into your organization's applications and processes.
You can use our API to access Videoplasty API endpoints, which can get a list of products, details of product and allow you to purchase and download a product. You can retrieve assets such as Stock Animation or Stock GIFs.
We have language bindings in Shell. You can view code examples in the dark area to the right.
You can also load a collection of the endpoints into the REST API client Postman by importing from this JSON file: Download
Products
Get All Products
require 'kittn'
api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.get
import kittn
api = kittn.authorize('meowmeowmeow')
api.kittens.get()
curl --request GET \
--url https://api.videoplasty.com/api/v2/api_system/products?token={your token}&per_page=5
OR
curl --request GET \
--url https://api.videoplasty.com/api/v2/api_system/products \
-d token={your token} \
-d per_page=5
const kittn = require('kittn');
let api = kittn.authorize('meowmeowmeow');
let kittens = api.kittens.get();
The above command returns JSON structured like this:
{
"data": [
{
"id": "17788",
"type": "product",
"attributes": {
"id": 17788,
"name": "Hand Holding Leaf",
"slug": "hand-holding-leaf-17788",
"product_type": "animation",
"plp_preview_url": "https://cdn.videoplasty.com/previews/videoplasty-17788-hand-holding-leaf-stock-animation-plp.mp4",
"category": "Stock Animation"
},
"relationships": {
"images": {
"data": [
{
"id": "39441",
"type": "image"
}
]
}
}
},
{
"id": "4501",
"type": "product",
"attributes": {
"id": 4501,
"name": "White Casual Woman Waving",
"slug": "white-casual-woman-waving-4501",
"product_type": "animation",
"plp_preview_url": "https://cdn.videoplasty.com/previews/videoplasty-4501-white-casual-woman-waving-stock-animation-plp.mp4",
"category": "Stock Animation"
},
"relationships": {
"images": {
"data": [
{
"id": "11044",
"type": "image"
}
]
}
}
},
{
"id": "5811",
"type": "product",
"attributes": {
"id": 5811,
"name": "Asian Casual Man Sick with Covid",
"slug": "asian-casual-man-sick-with-covid-5811",
"product_type": "animation",
"plp_preview_url": "https://cdn.videoplasty.com/previews/videoplasty-5811-asian-casual-man-sick-with-covid-stock-animation-plp.mp4",
"category": "Stock Animation"
},
"relationships": {
"images": {
"data": [
{
"id": "13869",
"type": "image"
}
]
}
}
},
{
"id": "6400",
"type": "product",
"attributes": {
"id": 6400,
"name": "COVID-19 Personal Protective Equipment Ok",
"slug": "covid-19-personal-protective-equipment-ok-6400",
"product_type": "animation",
"plp_preview_url": "https://cdn.videoplasty.com/previews/videoplasty-6400-covid-19-personal-protective-equipment-ok-stock-animation-plp.mp4",
"category": "Stock Animation"
},
"relationships": {
"images": {
"data": [
{
"id": "16144",
"type": "image"
}
]
}
}
},
{
"id": "11166",
"type": "product",
"attributes": {
"id": 11166,
"name": "Christmas Tree Icon",
"slug": "christmas-tree-icon-11166",
"product_type": "animation",
"plp_preview_url": "https://cdn.videoplasty.com/previews/videoplasty-11166-christmas-tree-icon-stock-animation-plp.mp4",
"category": "Stock Animation"
},
"relationships": {
"images": {
"data": [
{
"id": "22283",
"type": "image"
}
]
}
}
}
],
"meta": {
"count": 5,
"total_count": 29,
"total_pages": 6
},
"links": {
"self": "https://api.videoplasty.com/api/v2/api_system/products?per_page=5&token=9aded1f74d5452c50669c705f0773e56684e3c2c2a61a34f151a4e733d8c7dac",
"next": "https://api.videoplasty.com/api/v2/api_system/products?page=2&per_page=5&token=9aded1f74d5452c50669c705f0773e56684e3c2c2a61a34f151a4e733d8c7dac",
"prev": "https://api.videoplasty.com/api/v2/api_system/products?page=1&per_page=5&token=9aded1f74d5452c50669c705f0773e56684e3c2c2a61a34f151a4e733d8c7dac",
"last": "https://api.videoplasty.com/api/v2/api_system/products?page=6&per_page=5&token=9aded1f74d5452c50669c705f0773e56684e3c2c2a61a34f151a4e733d8c7dac",
"first": "https://api.videoplasty.com/api/v2/api_system/products?page=1&per_page=5&token=9aded1f74d5452c50669c705f0773e56684e3c2c2a61a34f151a4e733d8c7dac"
},
"filters": {
"number-of-people": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1",
"doc_count": 25
}
],
"name": "Number of People",
"type": "integer"
},
"duration": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "10",
"doc_count": 29
}
],
"name": "Duration",
"type": "duration"
},
"transparent-background": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "yes",
"doc_count": 27
},
{
"key": "no",
"doc_count": 2
}
],
"name": "Transparent Background",
"type": "boolean"
},
"gender": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "male",
"doc_count": 13
},
{
"key": "female",
"doc_count": 12
}
],
"name": "Gender",
"type": "multi-option"
},
"looping": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "yes",
"doc_count": 27
},
{
"key": "no",
"doc_count": 2
}
],
"name": "Looping",
"type": "boolean"
},
"format": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "mov",
"doc_count": 29
}
],
"name": "Format",
"type": "multi-option"
},
"resolution-category": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1080",
"doc_count": 28
},
{
"key": "4k",
"doc_count": 1
}
],
"name": "Resolution Category",
"type": "option"
},
"encoding": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "apple-prores-4444",
"doc_count": 29
}
],
"name": "Encoding",
"type": "multi-option"
},
"category": {
"doc_count": 29,
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "stock-animation",
"doc_count": 29
}
],
"name": "category",
"type": "multi-option"
}
},
"suggestions": [],
"price": {
"min_price": "0.0",
"max_price": 600
}
}
Returns a list of products from the marketplace.
HTTP Request
GET
https://api.videoplasty.com/api/v2/api_system/products
Query Parameters
Parameter | Type | Description |
---|---|---|
token | string | (required) Use token provided to you |
filter[name] |
string | Find Products with matching name |
filter[ids] |
string | Specify one or more comma separated values of ids of products Example: 17788,4501 |
filter[category] |
string | Specify one or more comma separated values for categories i.e. stock-animation, stock-gifs note: if you get empty data for particular category then make sure you have permission to access products of that category/taxon. |
filter[properties][looping] |
boolean | Values : yes or no |
filter[properties][transparent-background] |
boolean | Values : yes or no |
filter[properties][duration] |
string | Specify range for duration of asset. note: values are in seconds Value : min,max Example: 11,14 |
filter[properties][number-of-people] |
string | Specify one or more comma separated values Example: 3,4 retrives products containing number-of-people 3 or 4 |
filter[properties][gender] |
string | Specify one or more comma separated values Possible values: male, female |
filter[properties][resolution-category] |
string | Specify one or more comma separated values |
filter[properties][format] |
string | Specify one or more comma separated values |
filter[properties][encoding] |
string | Specify one or more comma separated values |
include | string | Specify what related resources (relationships) you would like to receive in the response body i.e. images |
include_extra_fields | string | Specify extra fields you would like to receive in the response body i.e. duration, resolution_category, tags |
page | integer | Number of requested page when paginating collection Examples: 1 |
per_page | integer | Number of requested records per page when paginating collection 25 |
sort | string | Use "-" to sort in descending order Sort products based on:
|
similar_of | string | Get list of products similar to specific product by specifying product id Example: similar_of=19038 |
locale | string | Specify locale to get response in specific language. Default language is English. Available languages are de, fr, es, pt, ja Example: locale=es Note: only name and tags of products will be translated to specified language and in case if translation is unavailable it will be returned in english language. |
Get a Specific Product
require 'kittn'
api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.get(2)
import kittn
api = kittn.authorize('meowmeowmeow')
api.kittens.get(2)
curl --request GET \
--url https://api.videoplasty.com/api/v2/api_system/products/{product_id}?token={your token}
OR
curl --request GET \
--url https://api.videoplasty.com/api/v2/api_system/products/{product_id} \
-d token={your token}
const kittn = require('kittn');
let api = kittn.authorize('meowmeowmeow');
let max = api.kittens.get(2);
The above command returns JSON structured like this:
{
"data": {
"id": "17788",
"type": "product",
"attributes": {
"id": 17788,
"name": "Hand Holding Leaf",
"slug": "hand-holding-leaf-17788",
"product_type": "animation",
"pdp_preview_url": "https://videoplasty-storage-production.s3.amazonaws.com/previews/videoplasty-17788-hand-holding-leaf-stock-animation-pdp.mp4",
"category": "Stock Animation",
"tags": [
"green",
"hope",
"optimism",
"future",
"environment",
"recycle",
"recycling",
"recycled",
"plant",
"leaf",
"leaves",
"soil",
"organic",
"hand",
"hands",
"new",
"reuse",
"reusable",
"waste",
"eco",
"ecological",
"environmentally friendly",
"climate change",
"global warming",
"sustainability",
"sustaintable",
"plastic",
"free"
]
},
"relationships": {
"product_properties": {
"data": [
{
"id": "200083",
"type": "product_property"
},
{
"id": "200084",
"type": "product_property"
},
{
"id": "200085",
"type": "product_property"
},
{
"id": "200086",
"type": "product_property"
},
{
"id": "200087",
"type": "product_property"
},
{
"id": "200088",
"type": "product_property"
},
{
"id": "200089",
"type": "product_property"
},
{
"id": "200090",
"type": "product_property"
},
{
"id": "411601",
"type": "product_property"
}
]
},
"images": {
"data": [
{
"id": "39441",
"type": "image"
}
]
},
"similar_products": {}
}
}
}
Returns product details based on its unique product ID.
HTTP Request
GET
https://api.videoplasty.com/api/v2/api_system/products/{product_id}
URL Parameters
Parameter | Type | Description |
---|---|---|
product_id | string | Unique identifier for product Example: 14 |
Query Parameters
Parameter | Type | Description |
---|---|---|
token | string | (required) Use token provided to you |
include | string | Specify what related resources (relationships) you would like to receive in the response body. i.e. images, product_properties, similar_products, similar_products.images |
locale | string | Specify locale to get response in specific language. Default language is English. Available languages are de, fr, es, pt, ja Example: locale=es Note: only name and tags of product will be translated to specified language and in case if translation is unavailable it will be returned in english language. |
Product Purchase
require 'kittn'
api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.get
import kittn
api = kittn.authorize('meowmeowmeow')
api.kittens.get()
curl --request POST \
--url https://api.videoplasty.com/api/v2/api_system/products/{product_id}/purchase?token={your token}&customer_id={custome id}
OR
curl --request POST \
--url https://api.videoplasty.com/api/v2/api_system/products/{product_id}/purchase \
-d token={your token} \
-d customer_id={custome id}
const kittn = require('kittn');
let api = kittn.authorize('meowmeowmeow');
let kittens = api.kittens.get();
The above command returns JSON structured like this:
{
"data": {
"Download 1": "secret_key_1",
"Download 2": "secret_key_2"
}
}
Returns a secret key for the specific product. Use this secret key to get the download link for the stock asset.
HTTP Request
POST
https://api.videoplasty.com/api/v2/api_system/products/{product_id}/purchase
URL Parameters
Parameter | Type | Description |
---|---|---|
product_id | string | Unique identifier for product Example: 14 |
Query Parameters
Parameter | Type | Description |
---|---|---|
token | string | (required) Use token provided to you |
customer_id | string | (required) A unique identifier for the end user initiating this request Example: 123 |
Download a Product
require 'kittn'
api = Kittn::APIClient.authorize!('meowmeowmeow')
api.kittens.delete(2)
import kittn
api = kittn.authorize('meowmeowmeow')
api.kittens.delete(2)
curl --request POST \
--url https://api.videoplasty.com/api/v2/api_system/products/{product_id}/download?token={your token}&customer_id={custome id}&secret={use your secret key}
OR
curl --request POST \
--url https://api.videoplasty.com/api/v2/api_system/products/{product_id}/download \
-d token={your token} \
-d customer_id={customer_id} \
-d secret={use your secret key}
const kittn = require('kittn');
let api = kittn.authorize('meowmeowmeow');
let max = api.kittens.delete(2);
The above command returns JSON response containing download link for asset:
{
"data": {
"link": "your download link"
}
}
Get the download link for the delivery file(s) of a specific product
HTTP Request
POST
https://api.videoplasty.com/api/v2/api_system/products/{product_id}/download
URL Parameters
Parameter | Type | Description |
---|---|---|
product_id | string | Unique identifier for product Example: 14 |
Query Parameters
Parameter | Type | Description |
---|---|---|
token | string | (required) Use token provided to you |
customer_id | string | (required) A unique identifier for the end user initiating this request Example: 123 |
secret | string | (required) use secret key provided in response of Product Purchase |
Rate Limit
By default, you can make up to 500 requests per minute. Requests are associated with the API key, and not with your IP address.
To keep the VideoPlasty API fast for everyone, requests must be cached for 24 hours. Also, the API is made for real human requests; do not send lots of automated queries. Systematic mass downloads are not allowed. If needed, we can increase this limit at any time - given that you've implemented the API properly.