> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tess.im/llms.txt
> Use this file to discover all available pages before exploring further.

# API de Artifacts: guia de integração

> Gere, versione e compartilhe Artifacts a partir dos seus sistemas: relatórios recorrentes, dashboards e comunicados publicados pela API, com as mesmas regras do painel.

A API de Artifacts permite que seus sistemas produzam e distribuam entregáveis na Tess sem passar pelo chat. Um pipeline de BI pode gerar o relatório semanal da diretoria, um CRM pode publicar a proposta para o time comercial e uma rotina mensal pode atualizar o dashboard de indicadores, sempre no mesmo link e com histórico de versões.

A API usa as mesmas regras do painel: o dono, as permissões por plano e papel e as restrições de compartilhamento definidas pelo administrador. Nada que a API faz contorna a governança do workspace.

Para conhecer o recurso, veja [Artifacts](https://docs.tess.im/pt/html-artifacts.md).

## Antes de começar

* **Chave de API:** envie como token Bearer no header `Authorization`. Veja [Autenticação](https://docs.tess.im/pt/api-quickstart.md).
* **Workspace:** o header `x-workspace-id` é obrigatório em todas as chamadas. Sem ele, a resposta é `403`.
* **Permissões:** as ações dependem do recurso estar habilitado e do plano e do papel do usuário dono da chave.

| Permissão | O que libera |
| - | - |
| Artifacts User | Criar, editar, restaurar, renomear, compartilhar e excluir os próprios Artifacts |
| Exclusão de conteúdo do workspace | Necessária, junto com Artifacts User, para excluir um Artifact ou uma versão |
| Artifacts Manager | Ler qualquer Artifact do workspace (com registro em auditoria) e despublicar qualquer um deles |

## Conceitos

* **Dono:** quem cria o Artifact. Somente o dono altera, publica e compartilha. Outras pessoas recebem `404` (não sabem que o Artifact existe) ou `403 ARTIFACT_EDIT_FORBIDDEN` (conseguem ler, mas não alterar).
* **Versão mais recente (`head_version`):** cada edição ou restauração cria uma nova versão. As edições sempre partem da mais recente.
* **Versão compartilhada (`shared_version`):** a versão que quem tem acesso vê. Ela muda quando você publica outra versão, no primeiro compartilhamento (que publica a versão mais recente), quando a versão compartilhada é excluída (passa para a anterior mais recente) e ao despublicar (fica nula). Edições nunca a alteram, o que permite revisar antes de liberar.
* **Link (`viewer_url`):** o endereço do Artifact na Tess. Continua o mesmo entre versões e exige login na Tess, inclusive para o acesso público.

## Fluxo de integração

**1. Escolha o template (opcional)**

[Listar Templates de Artifact](https://docs.tess.im/pt/list-artifact-templates.md) retorna os templates globais e os próprios do workspace; quando o slug é o mesmo, vale o do workspace. Sem escolha, a criação usa `default`, com a identidade visual da Tess.

**2. Crie o Artifact**

[Criar Artifact](https://docs.tess.im/pt/create-artifact.md) recebe o título e o HTML do corpo, com CSS e JavaScript opcionais. A resposta traz `universal_id`, a versão 1 e o `viewer_url`. O Artifact nasce privado.

```bash theme={null}
curl --request POST \
  --url 'https://api.tess.im/artifacts' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --header 'x-workspace-id: YOUR_WORKSPACE_ID' \
  --data '{"title": "Pipeline semanal", "lang": "pt-BR", "content": "<h1>Pipeline semanal</h1><p>Pipeline aberto: R$ 1,2 mi</p>"}'
```

**3. Compartilhe com o público certo**

[Compartilhar Artifact](https://docs.tess.im/pt/share-artifact.md) concede acesso a pessoas, equipes, ao workspace ou a qualquer pessoa logada na Tess. O primeiro acesso concedido publica a versão atual.

```json theme={null}
{ "grant": [{ "type": "team", "team_id": 87 }, { "type": "user", "email": "cfo@empresa.com" }] }
```

**4. Atualize sem trocar o link**

Na próxima rodada, use [Editar Artifact](https://docs.tess.im/pt/edit-artifact.md) com `base_version` para aplicar as mudanças. A nova versão não chega a quem tem acesso (só o dono e gestores com Artifacts Manager veem a versão mais recente) até você chamar [Publicar Versão do Artifact](https://docs.tess.im/pt/publish-artifact.md).

```json theme={null}
{ "base_version": 1, "operations": [{ "op": "replace", "old": "R$ 1,2 mi", "new": "R$ 1,4 mi" }] }
```

**5. Controle o histórico**

[Listar Versões do Artifact](https://docs.tess.im/pt/list-artifact-versions.md) mostra a versão mais recente e a compartilhada. Para voltar atrás, use [Restaurar Versão do Artifact](https://docs.tess.im/pt/restore-artifact-version.md) e publique a versão restaurada.

> [!TIP]
>
> Para materiais recorrentes, guarde o `universal_id` e edite o mesmo Artifact a cada ciclo. Assim o link enviado à diretoria nunca muda, e o histórico mostra a evolução dos números.

## Compartilhamento e governança

* Conceder acesso respeita as restrições do usuário, definidas pelo administrador na página de membros. Por padrão, organização, workspace e equipes estão liberados e o acesso público não.
* Pessoas só podem ser adicionadas se forem membros ativos do workspace ou da organização.
* Uma chamada de compartilhamento é tudo ou nada: se um destino for recusado, nada é gravado e a resposta lista `rejected_targets`.
* [Despublicar Artifact](https://docs.tess.im/pt/unpublish-artifact.md) remove todos os acessos de uma vez. Quando um gestor despublica, o dono não consegue publicar de novo.
* As permissões são verificadas a cada abertura: quem sai do workspace ou perde o nível de compartilhamento perde o acesso na hora.
* No plano Enterprise, as alterações feitas pela API (criar, editar, publicar, compartilhar, excluir) também aparecem nos [Eventos de Auditoria](https://docs.tess.im/pt/audit-events.md), com `entity_type` igual a `artifact`.

## Erros

Os erros específicos de Artifacts retornam um código estável em `error_code` e uma explicação em `message`. Erros de validação, de workspace, de limite de requisições e de permissão de exclusão retornam apenas `message` (a validação também traz `errors`). Exemplo:

```json theme={null}
{
  "error_code": "ARTIFACT_STALE",
  "message": "Artifact is at version 4, edit was based on 3."
}
```

| Status | Significado |
| - | - |
| `403` | Sem permissão para a ação (recurso desligado, plano, papel, exclusão de conteúdo), workspace ausente ou do qual você não é membro, publicação revogada por um gestor (`ARTIFACT_PUBLICATION_REVOKED`), ou você lê o Artifact mas não é o dono |
| `404` | O Artifact, a versão ou o template não existe, ou não pertence a você; ou o workspace informado não existe |
| `409` | `ARTIFACT_STALE`: a versão mais recente mudou desde `base_version`. Leia de novo e repita |
| `422` | Dados inválidos, edição que não se aplica ou destino de compartilhamento recusado |
| `429` | Limite de requisições atingido |

Os códigos de cada endpoint estão na página dele. Para os status gerais da API, veja [Erros](https://docs.tess.im/pt/errors.md).

## Limites

| Item | Limite |
| - | - |
| Leituras (`GET`) | 600 por minuto por usuário, somadas ao uso no painel |
| Escritas | 120 por minuto por usuário, somadas ao uso no painel |
| Operações por edição | 40 |
| Texto de uma edição | 12.000 caracteres, somando todos os campos de todas as operações (inclusive âncoras e seletores) |
| Conteúdo do Artifact | 2.000.000 caracteres |
| `styles` e `script` na criação | 500.000 caracteres cada |
| Destinos por chamada de compartilhamento | 50 em `grant` e 50 em `revoke` |

> [!WARNING]
>
> O conteúdo é estático: o script da página não acessa a rede. Para atualizar números, edite o Artifact com os dados novos e publique a versão.

## Endpoints

> [card] [Listar Artifacts](https://docs.tess.im/pt/list-artifacts.md)
>
> Seus Artifacts no workspace, com paginação.

> [card] [Criar Artifact](https://docs.tess.im/pt/create-artifact.md)
>
> Versão 1 a partir de um template.

> [card] [Obter Artifact](https://docs.tess.im/pt/get-artifact.md)
>
> Versão mais recente com o HTML.

> [card] [Editar Artifact](https://docs.tess.im/pt/edit-artifact.md)
>
> Operações de edição que geram nova versão.

> [card] [Publicar versão](https://docs.tess.im/pt/publish-artifact.md)
>
> Define a versão que o público vê.

> [card] [Compartilhar Artifact](https://docs.tess.im/pt/share-artifact.md)
>
> Concede e revoga acessos.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.