# Overview

We adopt [GraphQL](https://graphql.org/) at DLive instead of traditional RESTful API. GraphQL has significant [advantage](https://www.howtographql.com/basics/1-graphql-is-the-better-rest/) over RESTful in terms of flexibility, type-safeness, etc.

The schema file could be found [here](https://devapi.dlive.tv/schema/ext.graphql).

Documentation on our public GraphQL API types could be found [here](https://devapi.dlive.tv/schema/index.html).

Our GraphQL API endpoint is:&#x20;

```
https://api.dlive.tv
```

Developers could use third-party GraphQL clients such as [apollo client](https://github.com/apollographql/apollo-client) to interact with DLive API.

Access token is passed by `authorization` header. All requests must have an `authorization` header. This could either be app access tokens or user access token given in OAuth process.

Any query would return json response in the format:

```
{
    "data":...
    "errors":...
}
```

Data could be null and errors could be present. If present, errors should be a list of errors.

We would provide some sample queries in this doc.
