---
title: "Alterar um texto onde quer que apareça"
description: "Substitua um trecho de texto no conteúdo ou no código do site como uma única entrada no histórico e inicie a build."
canonical: "https://atelier201.com/docs/pt/api/content/replace-text"
updated: "2026-11-06"
---

# Alterar um texto onde quer que apareça

Requer `sites:write`. Não custa créditos. O caminho termina em `/text:replace`. Altera apenas o rascunho. Os visitantes não veem nada até você [publicar](/docs/api/publishing/publish).

A maneira mais rápida de alterar um texto visível quando você não sabe onde ele está escrito. Envie `find`, o texto como aparece na página, e `replace`, o novo texto. O Atelier201 procura nas fontes do site em `src/` (arquivos de conteúdo e código das páginas), substitui o trecho, registra uma única entrada no histórico e inicia a build: a resposta inclui `build` com o respectivo ID.

- **Não encontrado (`404`).** O texto não está escrito exatamente dessa forma. Um trecho dividido por marcação, como um link ou uma palavra em negrito no meio, não constitui um único texto: envie um trecho menor.
- **Encontrado várias vezes (`409`).** Restrinja a busca com `path` (um arquivo ou um glob), envie um trecho mais longo ou defina `all: true` para alterar todas as ocorrências, por exemplo, um novo número de telefone usado em várias páginas.
- **O conteúdo continua válido.** Em um arquivo de conteúdo JSON, o texto é localizado e gravado com escape de JSON, e o arquivo é analisado novamente antes de qualquer gravação.

Para um campo cujo endereço você conhece, como `business:/tagline`, [Alterar um campo](/docs/api/content/set-field) faz o mesmo, com validação pelo modelo de conteúdo.

```http
POST https://api.atelier201.com/v1/sites/{site_id}/text:replace
```

## Authorizations

- `Authorization` (bearer, in header, required)

## Path parameters

- `site_id` (`string`, required): O id do site ou seu slug (o endereço antes de .atelier201.page).

## Body

`application/json`, required

- `find` (`string`, required, length: `1–2000 chars`): O texto a ser alterado, exatamente como aparece na página ou no arquivo, incluindo maiúsculas, minúsculas e pontuação.
- `replace` (`string`, required, length: `≤ 5000 chars`): O novo texto. Se estiver vazio, o trecho será removido.
- `path` (`string`, length: `≤ 300 chars`): Somente neste arquivo (ou glob, por exemplo, src/pages/*.astro), caso o texto apareça em vários arquivos.
- `all` (`boolean`): Altere todas as ocorrências (um produto renomeado, um novo número de telefone). Padrão: recusa quando o texto aparece mais de uma vez.
- `summary` (`string`, length: `≤ 200 chars`): Uma frase para o histórico. Padrão: Change "<text>".

## Response

**200**: Altere um texto onde quer que ele apareça

- `data` (`object`, required)
- `data.replaced` (`integer`, required, range: `-9007199254740991–9007199254740991`): Quantidade de ocorrências alteradas.
- `data.files` (`object[]`, required)
- `data.files.path` (`string`, required)
- `data.files.occurrences` (`integer`, required, range: `-9007199254740991–9007199254740991`)
- `data.revision` (`string`, required, length: `40–40 chars`): Um ID de commit do Git (40 caracteres hexadecimais) do repositório do site.
- `data.parent` (`string | null`, required)
- `data.changed` (`boolean`, required)
- `data.changes` (`object[]`, required)
- `data.changes.path` (`string`, required)
- `data.changes.action` (`string`, required)
- `data.build` (`object | null`, required): A compilação iniciada (ou associada) por esta alteração: a prévia acompanha essa compilação. Não é necessário chamar build_site.
- `data.build.id` (`string`, required)
- `data.build.state` (`string`, required)
- `data.build.next_action` (`string`, required)
- `data.next_action` (`string`, required)
- `request_id` (`string`, required)

```json
{
  "data": {
    "replaced": 123,
    "files": [
      {
        "path": "<string>",
        "occurrences": 123
      }
    ],
    "revision": "<string>",
    "parent": "<string>",
    "changed": true,
    "changes": [
      {
        "path": "<string>",
        "action": "<string>"
      }
    ],
    "build": {
      "id": "<string>",
      "state": "<string>",
      "next_action": "<string>"
    },
    "next_action": "<string>"
  },
  "request_id": "<string>"
}
```

**400**: Códigos possíveis: invalid_request, unknown_field, invalid_parameter, invalid_cursor

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**401**: Códigos possíveis: authentication_required, invalid_api_key, api_key_expired, api_key_revoked

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**402**: Códigos possíveis: insufficient_credits

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**403**: Códigos possíveis: insufficient_scope, feature_not_available, admin_required

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**404**: Códigos possíveis: resource_not_found

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**409**: Códigos possíveis: conflict, result_not_ready, idempotency_key_reused

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**410**: Códigos possíveis: result_expired

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**413**: Códigos possíveis: request_too_large

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**422**: Códigos possíveis: request_too_large_for_plan

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**429**: Códigos possíveis: rate_limited

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**500**: Códigos possíveis: internal_error

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**503**: Códigos possíveis: service_unavailable

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**Example request**

```bash
curl --request POST \
  --url 'https://api.atelier201.com/v1/sites/<site_id>/text:replace' \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '{
  "find": "<string>",
  "replace": "<string>"
}'
```
