Incoming Webhooks

수신 웹훅

외부 서비스에서 notii 채팅방으로 메시지를 보낼 때 사용합니다. 채팅방에서 만든 웹훅 주소와 시크릿만 있으면 주문, 장애, 배포 같은 알림을 바로 보낼 수 있습니다.

POST/api/webhooks/in/{webhookId}
사용 가능

인증

웹훅 시크릿은 비밀번호처럼 보관해주세요. 아래 방식 중 하나로 보낼 수 있고, 헤더 설정이 가능한 서비스라면 Authorization 방식을 권장합니다.

방식예시용도
AuthorizationBearer {secret}권장 방식
X-Webhook-Secret{secret}헤더 대안
Query?s={secret}헤더 설정이 어려운 도구 호환용

본문

처음 연동할 때는 text에 문자로 보내는 방식을 권장합니다. title은 선택값이고, 따로 보내지 않을 때는 text 첫 줄을 제목처럼 써도 됩니다.

필드값 형태필수 여부설명
text문자 또는 JSON 객체권장notii에 보낼 메시지 내용입니다. 처음 연동할 때는 문자로 보내는 방식을 권장합니다.
title문자선택메시지 상단에 굵게 표시할 제목입니다. 보내지 않아도 text 첫 줄을 제목처럼 쓸 수 있습니다.
username문자선택메시지의 작성자명으로 표시됩니다.
icon_url문자선택작성자명 옆에 표시할 아이콘 이미지 주소입니다. https 공개 이미지만 사용할 수 있습니다.
content / message / body문자 또는 JSON 객체호환기존 도구가 message 안에 content/text/body를 담아 보내는 경우를 위한 호환 필드입니다. 새 연동은 text 사용을 권장합니다.

예제

서버나 자동화 도구에서 그대로 참고할 수 있는 기본 예제입니다.

bash
curl -X POST "https://notii.team/api/webhooks/in/{webhookId}" \
  -H "Authorization: Bearer {secret}" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "새 주문이 들어왔습니다.",
    "title": "주문 알림",
    "username": "쇼핑몰 봇",
    "icon_url": "https://example.com/icon.png"
  }'
ts
await fetch("https://notii.team/api/webhooks/in/{webhookId}", {
  method: "POST",
  headers: {
    "Authorization": "Bearer {secret}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    text: "새 주문이 들어왔습니다.",
    title: "주문 알림",
    username: "쇼핑몰 봇",
    icon_url: "https://example.com/icon.png",
  }),
});

응답

oktrue이면 notii에 메시지가 만들어진 상태입니다.

json
{
  "ok": true,
  "message_id": "4d9b6c64-7f2d-4c8a-8f0d-1c8a0f6f7b31"
}

제한

요청 빈도

웹훅 하나당 분당 60회까지 허용합니다.

본문 크기

최종 메시지 본문은 UTF-8 기준 16KB까지 저장합니다.

이미지 URL

icon_url은 https 공개 주소만 표시합니다.

에러

코드이름설명
400잘못된 요청webhookId 형식 오류, 본문 없음 등 요청 값이 올바르지 않습니다.
401인증 실패시크릿이 없거나 일치하지 않습니다.
404찾을 수 없음웹훅이나 연결된 채팅방을 찾을 수 없습니다.
410사용 불가채팅방이 휴지통에 있거나 팀이 삭제 예정 상태입니다.
413본문 초과최종 메시지 본문이 16KB를 넘었습니다.
429요청 제한웹훅당 분당 60회 제한을 넘었습니다.
500서버 오류notii 서버 설정 또는 저장 과정에서 문제가 생겼습니다.