# Matik

> Generate data-driven presentations from Matik templates. List templates, discover their required inputs, create presentations, and download the results as PDFs.

Source: https://cotera.co/docs/reference/tools/individual-tools/matik

---

**Authentication Type:** OAuth
**Description:** Generate data-driven presentations from Matik templates. List templates, discover their required inputs, create presentations, and download the results as PDFs.

***

## Authentication

Matik's API uses OAuth 2.0. To connect Matik to Cotera you'll need three values:

1. Ask your Matik account manager to enable the Matik REST API for your account.
2. In Matik, click your avatar → **Enterprise Settings** → **Clients** and create a new client. Save the **Client ID** and **Client Secret** (the secret is only shown once).
3. Complete the OAuth authorization flow for that client to obtain a **Refresh Token** (see the [Matik Quick Start Guide](https://developer.matik.io/guides/quickstart)).

Provide the **Client ID**, **Client Secret**, and **Refresh Token** when connecting. Cotera exchanges the refresh token for a short-lived access token on every request.

***

## Templates

Discover the templates available in your Matik account and the inputs each one requires.

### List Templates

List the presentation templates available in Matik. Use this to find the template ID to generate presentations from.

**Operation Type:** Query (Read)

**Parameters:**

* **filters** `string` (nullable): Optional JSON filter string, e.g. `{"source_q":"123"}`

**Returns:**

* **templates** `array of objects`: The templates available to the connected user
  * **id** `number`: The template ID (used to generate presentations)
  * **name** `string`: The name of the template
  * **sourceType** `string`: The template type: "google", "presentation", or "email"
  * **isLibrary** `boolean`: Whether this is a library template
  * **isSubTemplate** `boolean`: Whether this is a sub template
  * **thumbnailUrl** `string` (nullable): Thumbnail of the first slide of the template
  * **tags** `array of strings`: Tags applied to the template
  * **inputsOrder** `array of strings`: The order of the template's inputs

**Example Usage:**

```json
{
  "filters": null
}
```

### Get Template Inputs

Get the inputs required to generate a presentation from a template. Call this before creating a presentation to learn which input names and values the template expects.

**Operation Type:** Query (Read)

**Parameters:**

* **templateId** `number` (required): The ID of the Matik template to fetch inputs for

**Returns:**

* **inputs** `array of objects`: The inputs required to generate a presentation from the template, including each input's name, type, and allowed values
* **queryCallback** `string` (nullable): Optional callback URL to poll for nested inputs

**Example Usage:**

```json
{
  "templateId": 1234
}
```

## Presentations

Generate presentations from templates and retrieve the results.

### Create Presentation

Generate a new presentation from a Matik template with the provided input values. Generation is asynchronous — use Get Presentation Status to poll until it completes.

**Operation Type:** Mutation (Write)

**Parameters:**

* **templateId** `number` (required): The ID of the Matik template to generate the presentation from
* **name** `string` (nullable): The name of the generated presentation
* **inputs** `array of objects` (required): Input values for the template. Use Get Template Inputs to discover the required input names
  * **name** `string` (required): The input name
  * **value** `string` (required): The input value. JSON array values (e.g. `["a","b"]`) are parsed as lists
* **includePdf** `boolean` (nullable): Whether to also render a PDF of the presentation

**Returns:**

* **id** `number`: The ID of the new presentation
* **status** `string`: The initial generation status (e.g. "pending")

**Example Usage:**

```json
{
  "templateId": 1234,
  "name": "Q3 Business Review - Acme Corp",
  "inputs": [
    { "name": "account_name", "value": "Acme Corp" },
    { "name": "quarter", "value": "Q3 2026" },
    { "name": "regions", "value": "[\"NA\",\"EMEA\"]" }
  ],
  "includePdf": true
}
```

### Get Presentation Status

Check the generation status of a Matik presentation. Once generation completes, the response includes the presentation's download URL.

**Operation Type:** Query (Read)

**Parameters:**

* **presentationId** `number` (required): The ID of the presentation to check (returned from Create Presentation)

**Returns:**

* **id** `number`: The presentation ID
* **status** `string`: The generation status (e.g. "pending", "completed")
* **name** `string` (nullable): The presentation name (available when completed)
* **downloadUrl** `string` (nullable): Download URL for the presentation (available when completed)

**Example Usage:**

```json
{
  "presentationId": 5678
}
```

### Get Presentation PDF

Get a download URL for the PDF version of a generated presentation.

**Operation Type:** Query (Read)

**Parameters:**

* **presentationId** `number` (required): The ID of the presentation to get the PDF for

**Returns:**

* **downloadUrl** `string`: Download URL for the PDF

**Example Usage:**

```json
{
  "presentationId": 5678
}
```

## Common Use Cases

**Customer-Facing Decks:**

* Generate quarterly business reviews from CRM and product data
* Create renewal and upsell decks personalized to each account
* Build onboarding and kickoff presentations from templates

**Workflow Automation:**

* Automatically generate a deck whenever a deal reaches a pipeline stage
* Produce recurring reporting decks on a schedule
* Let agents pick the right template, fill in inputs, and deliver the finished PDF

**Data-Driven Content:**

* Keep presentation content in sync with live data sources connected to Matik
* Generate one deck per account from a list of accounts
* Export presentations as PDFs for email delivery or archiving

