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

# 재시도와 자동 일시 중지

> 웹훅 전송에 실패했을 때의 재시도, 중복 처리, 실패가 계속될 때의 동작을 정리합니다.

## 성공과 실패

15초 안에 2xx로 응답하면 성공입니다. 그 밖에는 모두 실패입니다. 시간에는 주소를 찾는 시간도 포함됩니다.

* 3xx도 실패입니다. 리다이렉트를 따라가지 않습니다.
* 응답 본문은 사용하지 않습니다.

## 재시도

실패한 이벤트는 첫 시도를 포함해 최대 8번 전송합니다. 간격은 점점 길어지고 전체 기간은 약 24시간입니다. 마지막 시도도 실패하면 그 이벤트를 버립니다.

## 중복 처리하기

같은 이벤트 ID가 두 번 이상 도착할 수 있습니다. `id`로 중복을 거르세요.

* 재시도는 `id`가 같고 `attempt_number`만 올라갑니다.
* 본문이 달라지므로 [서명](https://developers.bottari.ai/ko/webhooks/signature.md)도 시도마다 다릅니다.
* 드물게 이미 받은 이벤트가 다시 도착할 수 있습니다.

```js theme={null}
if (await seen.has(event.id)) return;
await handle(event);
await seen.add(event.id);
```

## 전송 전에 확인하는 항목

전송 직전에 다음을 확인합니다. 하나라도 맞지 않으면 시도 횟수와 상관없이 전송하지 않고 버립니다.

* 구독이 켜져 있습니다.
* 연동이 지워지지 않았습니다.
* 그 데이터베이스가 연결되어 있고 연동이 그 문서를 읽을 수 있습니다.
* `comment.*` 이벤트라면 `댓글 읽기`가 켜져 있습니다.

## 실패 확인하기

연동 상세의 `전송 실패`에서 실패 횟수와 마지막 시각을 확인할 수 있습니다. 횟수는 이벤트가 아니라 시도마다 세고, 재시도가 성공해도 줄지 않습니다.

실패한 이벤트 목록과 다시 보내기 버튼은 없습니다.

## 자동 일시 중지

실패가 계속되면 구독이 일시 중지될 수 있습니다. 멈춘 동안의 변경은 다시 시작해도 보내지 않습니다.

멈추면 전송을 기다리던 이벤트를 지우고, 화면에 `수신 쪽 오류가 많아 일시 중지했어요`가 표시됩니다. `다시 시작`을 누르면 그 뒤의 변경부터 전송합니다.

## 놓친 변경 맞추기

일시 중지나 전송 실패로 놓친 변경은 다시 받을 수 없습니다. 쿼리로 마지막 처리 시각 뒤에 고친 행만 읽어 맞추세요.

```bash theme={null}
curl https://api.bottari.ai/v1/data_sources/exampleDb001/query \
  -X POST \
  -H "Authorization: Bearer $BOTTARI_TOKEN" \
  -H "Bottari-Version: 2026-03-11" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": {
      "timestamp": "last_edited_time",
      "last_edited_time": { "on_or_after": "2026-01-15T00:00:00.000Z" }
    },
    "sorts": [{ "timestamp": "last_edited_time", "direction": "ascending" }]
  }'
```

`last_edited_time`은 분 단위로 잘리므로 마지막 처리 시각보다 1분 앞선 시각부터 읽으세요. 휴지통에 들어간 행은 이 쿼리에 나오지 않습니다. `in_trash: true`로 따로 읽으세요.


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