# Digital Signage Use Cases

Integrate your Firstup content with digital signage networks and proviers using our API.

## Generic Example

In this use case, we're going to create multiple locations to post our content to. Each location is in a different country, and needs its content in different languages.

Firslty, in Firstup, create your content and topics for each location.

### 1. Before You Start: Authenticate

Authenticating connects the external signage aplication to the Firstup APIs. A front-end UI may have a modal where the user enters the authentication credentials, allowing them access to the Firstup content in the external app.

Clicking **Connect** sends a request to obtain an access token. This token will authenticate and must be maintained to keep the sign connected.

Send a `POST` to get this token.


```
curl -X POST \
  https://auth.socialchorus.com/oauth/token \
  -F grant_type=client_credentials \
  -F client_id=<USER_ENTERED_CLIENT_ID> \
  -F client_secret=<USER_ENTERED_CLIENT_SECRET>
```

If the credentials are valid, the API will return a JSON response with an `access_token`. This token must be stored securely (e.g., in session storage or a secure state management system) to keep the sign connected.

Example response:


```
{
  "access_token": "abc123exampletoken",
  "token_type": "bearer",
  "expires_in": 3600
}
```

### 2. Get Topics

The `v2/Channels` endpoint gets available channels (called [Topics in Creator Studio](https://support.firstup.io/hc/en-us/articles/4413271952663-Topic-vs-Audience)), allowing users to select. Make a `GET` request to the endpoint, including the `Authorization` header with your access token:


```
curl -H "Authorization: Bearer <ACCESS_TOKEN>" \
  'https://partner.socialchorus.com/v2/channels'
```

This request returns a paginated list of channels. You can handle pagination using the page.number and page.size parameters as needed. Look [here](https://firstup-api-test.redocly.app/gettingstarted/pagination) for help.

**Endpoint**

GET /v2/listchannels
### 3. Display Content

To display the content, make a `POST` request using the `v2/content` endpoint.

The topics selected by the user are passed into the `filter.channels.id`.

**Endpoint**

GET /v2/content