---
title: "Create a solution"
method: POST
path: "/v1/projects/{project_id}/solutions"
tags: ["Solution"]
---

# Create a solution

`POST /v1/projects/{project_id}/solutions`

## Request

- Base URL: `https://api.telerivet.com`
- URL: `https://api.telerivet.com/v1/projects/{project_id}/solutions`
- Auth: one of:
  - HTTP basic
  - OAuth 2 (authorization code, authorization URL `https://telerivet.com/oauth/authorize`, token URL `https://api.telerivet.com/oauth/token`)

Creates a new solution, which is a named group of related services, data tables, contact groups, campaigns, message templates, and dashboards that together implement a particular use case.

 After creating the solution, pass its ID as the `solution_id` parameter when creating (or updating) each service, data table, group, campaign, message template, or dashboard that is part of the solution.

## Path parameters

- `project_id` string, required

## Request body

- object
  - `name` string, required: Name of the solution, which must be unique within the project
  - `description` string: Description of the solution, e.g. what it does and how it is configured
  - `skillbook_slug` string: Slug of the Skillbook solution template that this solution is an instance of, if applicable (from the skillbook_search or skillbook_get MCP tools)
  - `vars` object: Custom variables and values to set for this solution. Variable names may be up to 32 characters in length and can contain the characters a-z, A-Z, 0-9, and _. Values may be strings, numbers, or boolean (true/false). String values may be up to 4096 bytes in length when encoded as UTF-8. Up to 100 variables are supported per object. Setting a variable to null will delete the variable.

## Response `200`

Successful response

- Solution: Represents a solution: a named group of related services, data tables, contact groups, campaigns, message templates, and dashboards within a project that together implement a particular use case (for example, a "Text to Win" contest). Solutions make it easy to find all of the objects that were created for a particular purpose. A solution may optionally be an instance of a solution template from Telerivet's Skillbook (see `skillbook_slug`). To add an object to a solution, set its `solution_id` field when creating or updating the object. Each object can belong to at most one solution.
  - `id` string: ID of the solution
  - `name` string: Name of the solution, which must be unique within the project
  - `description` string, nullable: Description of the solution
  - `skillbook_slug` string, nullable: Slug of the Skillbook solution template that this solution is an instance of, if applicable
  - `services` object[]: Summaries of up to 50 services that belong to this solution. Only returned when retrieving a single solution by ID; if `truncated` includes `services`, the solution has more services than are listed here.
    - `id` string: ID of the service
    - `name` string: Name of the service
    - `service_type` string: Type of the service
    - `active` boolean: Whether the service is active
    - `url` string: URL to the service in the Telerivet web app
  - `tables` object[]: Summaries of up to 50 data tables that belong to this solution. Only returned when retrieving a single solution by ID; if `truncated` includes `tables`, the solution has more data tables than are listed here.
    - `id` string: ID of the data table
    - `name` string: Name of the data table
    - `url` string: URL to the data table in the Telerivet web app
  - `groups` object[]: Summaries of up to 50 contact groups that belong to this solution. Only returned when retrieving a single solution by ID; if `truncated` includes `groups`, the solution has more contact groups than are listed here.
    - `id` string: ID of the group
    - `name` string: Name of the group
    - `dynamic` boolean: Whether this is a dynamic or normal group
    - `url` string: URL to the group in the Telerivet web app
  - `campaigns` object[]: Summaries of up to 50 campaigns that belong to this solution. Only returned when retrieving a single solution by ID; if `truncated` includes `campaigns`, the solution has more campaigns than are listed here.
    - `id` string: ID of the campaign
    - `name` string: Name of the campaign
    - `campaign_type` string: Type of the campaign
    - `status` string: Current status of the campaign
    - `url` string: URL to the campaign in the Telerivet web app
  - `message_templates` object[]: Summaries of up to 50 message templates that belong to this solution. Only returned when retrieving a single solution by ID; if `truncated` includes `message_templates`, the solution has more message templates than are listed here.
    - `id` string: ID of the message template
    - `name` string: Name of the message template
    - `readonly` boolean: True if the template was synchronized from a WhatsApp Business Account and cannot be modified via the API
  - `dashboards` object[]: Summaries of up to 50 dashboards that belong to this solution. Only returned when retrieving a single solution by ID; if `truncated` includes `dashboards`, the solution has more dashboards than are listed here.
    - `id` string: ID of the dashboard
    - `name` string: Name of the dashboard
    - `url` string: URL to the dashboard in the Telerivet web app
  - `truncated` string[]: List of member types (`services`, `tables`, `groups`, `campaigns`, `message_templates`, `dashboards`) for which the solution has more members than are included in this response (more than 50). To list all members of a type, query that type with the `solution_id` filter (e.g. project.queryServices). Only returned when retrieving a single solution by ID.
  - `vars` object: Custom variables stored for this solution. Variable names may be up to 32 characters in length and can contain the characters a-z, A-Z, 0-9, and _. Values may be strings, numbers, or boolean (true/false). String values may be up to 4096 bytes in length when encoded as UTF-8. Up to 100 variables are supported per object. Setting a variable to null will delete the variable.
  - `time_created` integer: Time the solution was created in Telerivet
  - `time_updated` integer: Time the solution was last updated in Telerivet
  - `project_id` string: ID of the project this solution belongs to

## Other responses

- `400`: Invalid request parameters
- `401`: Invalid or missing API key or Bearer token
- `404`: Resource not found

---

[API](https://skmtc.dev/telerivet/apis/telerivet-api.md) · [All operations](https://skmtc.dev/telerivet/apis/telerivet-api/llms.txt) · [OpenAPI document](https://skmtc.dev/telerivet/apis/telerivet-api/revisions/4e14b1c8d917?raw)
