VEO API

The VEO API gives you a wealth of tools to video tagging and AI analysis capability seamlessly integrated into to your own digital products.

Before you begin

Almost all of the endpoints in the VEO API require an authentication token. Find out more about authentication and authorization.

Swagger

The API has a full list of swagger documentation and this guide only highlights the most common scenarios. If you think something is missing from these docs and needs clarification beyond the swagger documentation then please get in touch.


Base URL

We offer environments for your production code and for your development needs. You'll need a seperate Client ID and secret for each of these environments:


Bearer tokens

Once you've authenticated you'll be given a bearer token. Almost all API endpoints require this token to identify you and your rights.

The recommended way to make requests is by adding the bearer token to the header of the HTTP request as follows:

Example request with bearer token

curl https://api.veo.co.uk/api/{your_chosen_endpoint} \
  -H "Authorization: Bearer {token}"

A good example of this is to get the transcript for an existing video in VEO which you would do as follows:

Retrieving a transcript from a video

curl --location 'https://api.veo.co.uk/api/videos/{videoID}/transcript' \
--header 'Authorization: Bearer {token}'

Common patterns and practices

When working with the API we have a few common patterns and practices to try and keep your integration simple and consistent. It is important however to check the swagger documentation for the actions you want to perform because the common practice may differ from time to time.

Resource naming convention

Getting lists

Generally a resource is described in the plural form when retrieving a collection. For example, to get a list of videos you perform a GET request on the /videos endpoint or to get a list of users you would perform a GET request on the /users endpoint.

Lists generally contain a subset of the information available for the resource and to retrieve all of the information about a resource you would perform a GET request on the individual resource by id

Creating resources

When creating resources you would generally perform a POST on the plural form of a collection. For example to create a new portfolio you would perform a POST on the /portfolios endpoint.

Getting individual resources

To retrieve an individual resource you would normally perform this on the plural form of a resource followed by the id of the resource you want to retrieve. For example to retrieve portfolio ID 27 you would perform a GET request on /portfolios/27.

Sometimes this differs in the API and the request is performed as part of the query string. For example, to retrieve a user with an id of 27 you would perform a GET request against /user?id=27.

Deleting individual resources

To delete an individual resource you would normally perform this on the plural form of a resource followed by the id of the resource you want to delete. For example to delete portfolio ID 27 you would perform a DELETE request on /portfolios/27.

Sometimes this differs in the API and the request is performed as part of the query string. For example, to delete a user with an id of 27 you would perform a DELETE request against /user?id=27.

Updating individual resources

To update an individual resource you would normally perform this on the plural form of a resource followed by the id of the resource you want to update. For example to retrieve update ID 27 you would perform a PUT request on /portfolios/27.

Sometimes this differs in the API and the request is performed as part of the query string. For example, to update a user with an id of 27 you would perform a PUT request against /user?id=27.


Pagination

Many of the endpoints will include pagination in the results when retrieving lists. The default page size for most endpoints is 10.

Paginated requests generally will include the pagination options as the following query parameters:

  • pageSize - The number of items you want to retrieve per page.
  • pageNumber - The page of items you wish to retrieve.
  • orderBy - The field to which you wish to order your results. These will be listed in the swagger docs.
  • orderByDirection - A value of ASC to specify ascending order or DESC to specify descending order.

For example, to get the 20 most recent videos you would perform the following request:

Retrieving the 20 most recent videos

curl --location 'videos/v3/get-all?pageSize=20&pageNumber=1&orderByDirection=DESC&orderBy=UPLOADEDSTAMP' \
--header 'Authorization: Bearer {token}'

The resulting JSON which is returned generally contains the following four properties:

  • Items- the array of resources you requested.
  • Page - the page number you requested.
  • PageSize - the number of items you requested per page.
  • TotalItemCount - The number of items in this response which will either equal the number of items you requested or be fewer where the request exhausted past the end of the page results.

An example response to the preceeding request would be as follows:

A result to request the most 20 recent videos

{
    "Items": [
        ``` omitted for brevity
    ],
    "Page": 1,
    "PageSize": 20,
    "TotalItemCount": 20
}

Status codes

The API will return status codes according to the use case but the most common are as follows:

Successful codes

  • 200 - When requesting resources which you are allowed to retrieve, the response code will be 200 - OK and the resulting body will be the resource(s) you requested.
  • 201 - When creating a resources which you are allowed to create, the response code will be 201 - Created.
  • 202 - When updating a resources which you are allowed to update, the response code will be 202 - Updated.

Error responses

  • 400 - When a request does not make sense to the API it will return a 400 - Bad request
  • 401 - When you have requested a resource which does not belong to your organisation or you do not have the rights to retrieve, the API will return a 401 - Unauthorized
  • 404 - When you have requested a resource which does exist, the API will return a 404 - Not found
  • 500 - When an unknown error has occurred, the API will return a 500 - Internal server error

API resources

Videos

Learn about the video models and how to create and upload videos and how to retrieve them.

Users

Learn how to manage users, create and remove users from VEO.

Groups

Learn about the group (community) models and how to create, retrieve, update, delete, and list groups.

Comments

Learn about the comment models and how to create, retrieve, update, delete, and list comments on videos or tag sessions.

Guides

Authentication

Learn how to authenticate your API requests.

Read more

Videos

Understand how to work with videos, uploading and transcoding.

Read more

Unity integrations

Take a look at our Unity integrations and learn how to get video out of your 3D applications and XR experiences quickly.

Read more