---
title: "Criar template da biblioteca"
method: POST
path: "/v1/templates/library"
tags: ["Templates"]
---

# Criar template da biblioteca

`POST /v1/templates/library`

## Request

- Base URL: `https://api.ararahq.com`
- URL: `https://api.ararahq.com/v1/templates/library`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ararahq/apis/ararahq-api/docs/v1/templates/library/post.ts> (a function with typed inputs; its response is checked against the schema)

Cria um template a partir de um item da biblioteca da Meta. Nasce aprovado,
sem esperar revisão. Exige número conectado (`422 GUPSHUP_APP_NOT_READY`).
Permissão: `TEMPLATES_WRITE`.

## Request body

- CreateLibraryTemplateRequest
  - `name` string, required: Nome do seu template.
  - `libraryTemplateName` string, required: `elementName` do item da biblioteca.
  - `languageCode` string: Idioma do item da biblioteca.

## Response `201`

Template criado

- TemplateResponse
  - `id` string, uuid, required: ID do template (UUID).
  - `name` string, required
  - `formattedName` string, required
  - `category` string, required: Categoria atual. A Meta pode mudar a categoria na revisão.
  - `originalCategory` string, nullable: Categoria pedida na criação.
  - `language` string, required
  - `providerName` string, required
  - `providerTemplateId` string, required
  - `providerStatus` string, required: Status de aprovação: - `PENDING`: em revisão. - `APPROVED`: pronto para enviar. - `REJECTED`: reprovado. Veja `rejectionReason`. - `PAUSED`: pausado pela Meta ou pela proteção automática da Arara. O envio responde `422 TEMPLATE_PAUSED`. - `DISABLED`: desativado. O envio responde `422 TEMPLATE_NOT_SENDABLE`.
  - `rejectionReason` string, nullable
  - `availableForSending` boolean, required: `false` quando o template foi aprovado em um número que a organização não usa mais. Recrie o template no número ativo.
  - `unavailableReason` string, nullable
  - `bodyPreview` string, nullable: Corpo do template, com os marcadores de variável.
  - `structureJson` object, required
  - `usageGuide` object, nullable
  - `variablesSchema` object, nullable: Exemplos por número da variável.
  - `createdAt` string, date-time, required
  - `updatedAt` string, date-time, nullable

## Other responses

- `400`: Requisição inválida: `VALIDATION_ERROR` (campo obrigatório ausente ou regra do corpo), `INVALID_JSON` (JSON malformado ou tipo errado), `INVALID_PATH_PARAM` ou `INVALID_IDEMPOTENCY_KEY`.
- `401`: Chave inexistente, revogada, expirada, com prefixo errado (`ara_` sem `ara_live_`) ou vinda de IP fora da allowlist. O corpo é o JSON padrão do Spring, sem `error.code`.
- `403`: Dois casos, com corpos diferentes: - Autenticação: header `Authorization` ausente, Bearer que não começa com `ara_`, chave sem a permissão da rota ou rota que não aceita chave de API. Corpo no formato padrão do Spring, sem `error.code`. - Regra de negócio, no formato `{ "error": { ... } }`: `PLAN_FEATURE_LOCKED`, `PLAN_LIMIT_REACHED`, `ACCOUNT_NOT_ACTIVATED`, `NO_DEDICATED_NUMBER`, `ORGANIZATION_SUSPENDED`, `NUMBER_BLOCKED`, `FRAUD_SUSPECTED`, `RESOURCE_FORBIDDEN`, `VIEWER_READ_ONLY`.
- `409`: `CONFLICT`: já existe um template com esse nome na mesma conta WhatsApp Business.
- `422`: `GUPSHUP_APP_NOT_READY`: nenhum número conectado.
- `429`: `RATE_LIMIT_EXCEEDED`: limite geral da API (1.200 leituras ou 3.000 escritas por minuto, por usuário da chave).

## Changes

- **2026-10-12** `d576cd28afc0`: 4 info
  - api tag `Templates` added
  - api tag `templates` removed
  - added the non-success response with the status `409`
  - added the non-success response with the status `429`
- **2026-09-15** `372d8c2e735d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ararahq/apis/ararahq-api/changes/v1/templates/library/post.md)

---

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