메인 콘텐츠로 건너뛰기

개발자 앱, API 키 및 웹훅

앱과 API 키를 만들고, 샌드박스에서 테스트하고, 웹훅을 보내고, 다른 회사의 앱을 설치하고, 요청 로그와 키별 지출을 확인합니다.

작성자: Sarah Chen

개발자 설정은 Exayard를 자체 코드 및 다른 회사가 만든 앱과 연결하는 곳입니다. 설정에서 개발자를 엽니다. 설정 메뉴에는 회사 관리자에게만 표시됩니다. 멤버가 이 페이지를 열면 내용을 볼 수는 있지만 변경할 수는 없습니다.

앱, API 키, 웹훅, 로그는 Free를 포함한 모든 요금제에서 제공됩니다. AI 작업에만 요금이 부과됩니다.

앱

앱은 "Acme estimator"나 "Nightly sync"처럼 회사의 연동 하나를 말합니다. 모든 API 키는 앱에 속합니다. 앱은 페이지의 첫 번째 섹션입니다. 모든 멤버가 볼 수 있습니다. 앱을 만들거나 변경하는 것은 관리자만 할 수 있습니다.

새 앱을 클릭하고 이름, 설명, 홈페이지, 지원 이메일, 범위를 입력합니다. 범위는 read:projects, write:estimates처럼 리소스별로 읽기와 쓰기로 나뉩니다. 앱은 admin:org 범위를 요청할 수 없습니다. 한 회사는 최대 25개의 앱을 만들 수 있습니다.

각 앱에는 생성 시점과 "회사당 분당 최대 60건, 전체 최대 600건 요청"과 같은 요청 한도가 표시됩니다. 앱의 추가 작업 메뉴에는 다음 항목이 있습니다.

  • 편집은 앱의 세부 정보와 범위를 변경합니다.

  • 웹훅은 앱을 설치한 모든 회사의 이벤트를 받을 주소 하나를 설정합니다.

  • 앱 삭제는 앱을 삭제하고 앱의 모든 키를 취소합니다. 앱을 설치한 모든 회사가 액세스 권한을 잃습니다.

API 키

API 키를 사용하면 자체 코드에서 Exayard API를 호출할 수 있습니다. 키는 앱 안의 키에 있습니다. 키는 해당 앱이 속한 회사에서 작동하므로 회사 ID를 따로 전달할 필요가 없습니다.

키를 만들려면 앱에서 새 키를 클릭합니다. "Production"처럼 키의 이름을 입력합니다. 범위에서 앱이 가진 모든 범위를 부여하려면 전체를, 일부만 고르려면 특정 항목을 선택합니다. 단기간 작업용 키라면 선택 사항인 만료일을 설정합니다. 키는 해당 날짜가 끝날 때까지 작동합니다. 생성을 클릭합니다.

Exayard는 전체 키를 한 번만 표시합니다. 다시는 표시되지 않으므로 이때 복사해 두세요. Exayard는 암호화된 사본만 보관하므로 분실한 키는 복구할 수 없습니다. 새 키를 만들고 기존 키를 취소하세요.

키는 exa_live_로 시작합니다. 샌드박스에서 만든 키는 exa_test_로 시작합니다. 키를 생성한 후에는 키 이름, exa_live_...AbCd와 같은 미리보기, 마지막 사용 또는 사용한 적 없음이 표시됩니다. 만료일이 있는 키에는 만료일과 날짜가 표시되며, 만료된 키에는 만료됨이 표시됩니다.

앱 하나에는 최대 25개의 활성 키를 둘 수 있습니다. 만료된 키도 취소하기 전까지는 개수에 포함됩니다. 중단 없이 키를 바꾸려면 두 번째 키를 만들고, 서버를 새 키로 옮긴 다음, 첫 번째 키를 취소하세요.

키의 키 작업 메뉴를 열어 이름 변경 또는 취소를 할 수 있습니다. 취소는 되돌릴 수 없으며, 키는 30초 이내에 작동을 멈춥니다.

키가 공개 코드 저장소와 같은 공개된 곳에서 발견되면 Exayard는 해당 키를 취소하고 관리자에게 이메일을 보내며, 키는 공개된 곳에서 발견되어 취소됨으로 표시된 채 목록에 남습니다.

다른 회사가 내 앱을 설치한 경우 새 키 대화 상자에 사용 가능한 회사도 표시됩니다. 기본값은 이 회사입니다. 이 앱을 설치한 모든 회사를 선택하면 서버가 앱을 설치한 각 회사에서 사용하는 키가 만들어집니다. 이 경우 각 호출은 Exayard-Organization-Id 헤더에 회사를 명시합니다.

노코드 도구도 같은 키로 연결합니다. Exayard를 Zapier에 연결하기, Exayard를 Make에 연결하기, Exayard를 n8n에 연결하기를 참고하세요. AI 어시스턴트는 Exa를 AI 어시스턴트에 연결하기를 참고하세요.

이전 키

키가 앱에 속하기 전에 만들어진 키는 ak_로 시작합니다. 이 키는 계속 작동하지만 새로 만들 수는 없습니다. 이전 키가 있는 경우에만 페이지 하단의 이전 키에 표시됩니다.

모든 관리자는 누가 만들었는지와 관계없이 회사의 모든 키를 이곳에서 볼 수 있습니다. 다른 사람이 만든 키에는 작성자와 그 사람의 이름이 표시됩니다. 각 사용자는 본인의 개인 키도 볼 수 있습니다. 휴지통 아이콘을 클릭하면 키를 취소할 수 있습니다. 키는 즉시 작동을 멈춥니다.

샌드박스

샌드박스는 내 회사에 연결된 테스트 회사입니다. 실제 프로젝트에 영향을 주지 않고 연동을 만들고 테스트할 때 사용합니다. 샌드박스는 관리자에게만 표시됩니다.

새 샌드박스를 클릭하고 이름을 입력한 다음 생성을 클릭합니다. 한 회사는 최대 5개의 샌드박스를 만들 수 있습니다. 열기를 클릭하면 샌드박스로 전환되며, 회사 전환기에 샌드박스로 표시됩니다. 평소처럼 그곳에서 앱과 키를 만드세요. 샌드박스의 키는 exa_test_로 시작합니다. 실제로 운영하려면 실제 회사에서 같은 앱과 키를 만들고 코드의 키를 교체하세요.

샌드박스는 회사의 요금제를 따르며, 사용량은 회사가 지불합니다. 샌드박스에는 별도의 청구가 없으며 자체 월간 AI 사용량도 제공되지 않습니다. 웹훅과 연동은 실제 회사에서와 똑같이 작동합니다.

샌드박스는 외부 사람에게 입찰 공유 이메일이나 서명된 사본을 보내지 않으며, 문자 메시지도 보내지 않습니다. 이러한 항목은 "이 회사는 샌드박스이므로 전송되지 않았습니다"로 표시됩니다. 샌드박스 참여 초대는 평소처럼 전송됩니다.

샌드박스의 물량 산출과 파일 읽기는 당사의 샘플 프로젝트에서 복사한 결과를 무료로 반환합니다. 물량 산출, 해당 페이지, 물량 산출 완료 웹훅은 샘플로 표시됩니다. 견적, 입찰, 요소 검색, 채팅도 무료로 샘플로 응답합니다.

샌드박스를 제거하려면 해당 행의 삭제를 클릭한 다음 샌드박스 삭제를 클릭합니다. 샌드박스가 폐쇄되고, 키가 작동을 멈추며, 데이터는 나중에 삭제됩니다.

웹훅

웹훅은 회사에서 특정 일이 발생했을 때 Exayard가 사용자의 서버에 알리도록 합니다. 모든 멤버가 목록을 볼 수 있습니다. 웹훅을 추가하거나 변경하는 것은 관리자만 할 수 있습니다.

웹훅 생성을 클릭하고 전송을 받을 URL과 선택 사항인 설명을 입력합니다. 보낼 이벤트를 선택합니다. 새 이벤트를 포함한 모든 이벤트를 받으려면 전체를, 목록에서 고르려면 특정 항목을 선택합니다. 모든 이벤트와 그 내용은 웹훅 이벤트 카탈로그에 나와 있습니다.

웹훅을 생성하면 Exayard가 서명 시크릿을 한 번 표시합니다. 다시 표시되지 않으므로 이때 복사해 두세요.

나머지 기능은 웹훅의 추가 작업 메뉴에 있습니다.

  • 편집은 URL, 설명, 이벤트를 변경하고 상태를 활성 또는 일시 중지됨으로 설정합니다. 일시 중지된 웹훅은 전송을 받지 않습니다. 대화 상자에는 시크릿 교체도 있습니다. 기존 시크릿은 즉시 작동을 멈추므로 서버를 먼저 업데이트하세요.

  • 테스트 이벤트 보내기는 선택한 이벤트 유형의 이벤트 하나를 보냅니다. 대화 상자는 서버의 응답을 기다린 후 결과와 응답 코드를 표시합니다. 테스트 이벤트에는 "test": true가 포함됩니다.

  • 전송 내역에는 최근 전송 25건이 이벤트, 상태, 응답 코드, 시도 횟수와 함께 표시됩니다. 전송 상태는 대기 중, 재시도 중, 전송됨, 실패 중 하나입니다. 관리자는 다시 보내기를 클릭하여 전송을 다시 보낼 수 있습니다.

  • 웹훅 삭제는 해당 URL로의 모든 전송을 종료합니다.

테스트 이벤트와 다시 보내기는 한 번만 전송되며 재시도되지 않습니다.

웹훅 전송 보안

모든 전송에는 t=<unix>,v1=<digest> 형식의 Exayard-Signature 헤더가 포함됩니다. Exayard는 타임스탬프와 요청 본문을 결합한 뒤 웹훅의 시크릿을 사용하여 HMAC-SHA256으로 서명하는 방식으로 서명을 만듭니다.

각 전송에는 Exayard-Event-Id, Exayard-Event-Type, Exayard-Organization-Id 헤더도 포함됩니다. JSON 본문에는 이벤트가 발생한 회사를 나타내는 organizationId 필드가 있습니다. 헤더에도 같은 ID가 담겨 있으므로 본문을 읽기 전에 전송을 라우팅할 수 있습니다. 서명은 organizationId를 포함한 본문 전체를 대상으로 합니다.

모든 전송에 회사가 명시되므로 하나의 수신 주소로 여러 회사를 처리할 수 있습니다. 각 회사에 같은 URL을 등록하고 organizationId를 기준으로 각 전송을 라우팅하세요. 웹훅마다 고유한 시크릿이 있으므로, 검증하기 전에 Exayard-Organization-Id를 기준으로 시크릿을 선택하세요.

전송을 검증하려면 시크릿으로 서명을 다시 계산하고, 타임스탬프가 현재 시각으로부터 5분 이내인지 확인한 다음, 다이제스트를 비교합니다.

실패한 전송은 약 80시간에 걸쳐 총 최대 10회까지 시도되며, 시도 간격은 점점 길어집니다. 모든 시도는 같은 본문과 같은 이벤트 ID를 보냅니다. 리디렉션은 실패로 간주됩니다.

다른 회사가 내 앱을 설치하도록 허용하기

앱은 만드는 즉시 내 회사에서 작동합니다. 각 앱에는 다른 회사가 이 앱을 설치하도록 허용 영역도 있습니다. 이 영역에는 앱이 검토 완료, 검토 요청됨, 검토 안 됨 중 어느 상태인지, 로그인 주소, 클라이언트 ID, 앱을 설치할 수 있는 회사 수가 표시됩니다.

관리자는 설치 작업 메뉴를 열어 다음 작업을 할 수 있습니다.

  • 로그인 주소 편집은 앱이 사용자의 Exayard 계정으로 로그인하게 할 때 Exayard가 사용자를 돌려보낼 주소를 설정합니다. 한 줄에 주소 하나씩, 최대 10개까지 입력합니다. 각 주소는 https://로 시작해야 하며, 테스트 중에는 http://localhost도 사용할 수 있습니다. 로그인 주소를 처음 저장하면 Exayard가 앱의 클라이언트 시크릿을 한 번 표시합니다.

  • 설치 링크 복사는 어느 회사에나 보낼 수 있는 링크를 복사합니다. 이 링크는 해당 회사의 관리자에게 설치 대화 상자를 엽니다.

  • 검토 요청은 앱을 Exayard 지원팀에 보내 검토를 받습니다.

새 앱은 내 회사 외에 최대 25개 회사에 설치할 수 있으며, 앱 찾기에는 표시되지 않습니다. 고객용 계정에 있는 회사는 이 한도에 포함되지 않습니다. 승인되면 앱에 검토 완료가 표시되고 설치 한도가 해제됩니다. 앱 찾기에 표시를 사용하면 모든 회사의 디렉터리에 앱을 게시하고, 앱 찾기에서 숨기기를 사용하면 게시를 내립니다. 정지됨 상태의 앱은 지원팀이 정지를 해제할 때까지 Exayard를 호출할 수 없으며, 기존 설치는 유지됩니다.

앱에서 범위를 제거하면 모든 설치에서 해당 범위가 즉시 사라집니다. 범위를 추가하면 각 회사는 관리자 중 한 명이 새 범위를 승인할 때까지 현재 액세스 권한을 유지합니다.

앱 웹훅

앱의 추가 작업 메뉴를 열고 웹훅을 클릭합니다. URL을 입력하고 생성을 클릭한 다음 서명 시크릿을 복사하세요. Exayard는 이 시크릿을 한 번만 표시합니다. 앱을 설치한 각 회사는 부여된 범위에 해당하는 이벤트를 보냅니다. 또한 회사가 앱을 설치하거나, 더 넓은 액세스 권한을 승인하거나, 앱을 제거하면 앱은 app.installed, app.scopes_approved, app.uninstalled를 받습니다. 전송에는 회사가 명시되며, 다른 웹훅과 같은 방식으로 서명됩니다.

같은 대화 상자에서 전송을 일시 중지하거나 재개하고, 시크릿 교체 및 웹훅 삭제를 할 수 있습니다.

연결된 앱

연결된 앱에는 회사에 설치된 앱이 표시됩니다. 모든 멤버가 볼 수 있습니다. 설치, 제거, 승인은 관리자만 할 수 있습니다.

각 행에는 앱 이름, 검토 완료 여부, 앱을 만든 회사, 설치한 사람과 설치 시점, 부여된 범위가 표시됩니다.

앱 설치하기

앱의 설치 링크를 열거나 앱 찾기에서 앱 옆의 설치를 클릭합니다. 대화 상자에 앱을 만든 회사, 검토 여부, 앱이 요청하는 범위가 표시됩니다. 그런 다음 다음 항목을 선택합니다.

  • 회사: 내가 관리자인 모든 회사. 이미 앱이 있는 회사에는 **(설치됨)**이 표시됩니다. 다시 설치하면 새로 선택한 내용이 저장됩니다.

  • 프로젝트: 모든 프로젝트, 또는 이 프로젝트만을 선택하고 앱이 접근할 수 있는 프로젝트를 최대 500개까지 체크합니다. 앱은 회사의 다른 프로젝트에 접근할 수 없습니다.

  • 월 AI 한도: 앱의 AI 작업이 청구 월마다 회사에 발생시킬 수 있는 최대 비용으로, 청구 통화 기준입니다. 비워 두면 한도 없음이 됩니다.

설치를 클릭합니다. 앱이 로그인을 사용하는 경우 Exayard가 앱 로그인을 마칠 수 있도록 안내합니다. 관리자가 아닌 멤버인 경우 대화 상자에 어느 회사의 관리자가 설치할 수 있는지 표시됩니다. 링크 복사를 클릭하여 관리자에게 보내세요.

나중에 프로젝트를 변경하려면 설치 링크를 다시 열고 새로 선택하여 설치하세요.

추가 액세스 승인하기

앱이 더 많은 범위를 요청하면 해당 행에 새 범위와 함께 추가 액세스 권한 요청이 표시됩니다. 관리자가 승인을 클릭하면 범위가 부여됩니다. 그때까지 앱은 기존 액세스 권한을 유지합니다.

앱 제거하기

앱의 추가 작업 메뉴를 열고 제거를 클릭한 다음 확인합니다. 앱은 즉시 회사에 대한 액세스 권한을 잃고 앱의 웹훅도 중지됩니다. 이미 시작된 AI 작업은 끝까지 완료됩니다.

앱 찾기

앱 찾기는 연결된 앱 안에 있습니다. 만든 회사가 게시하기로 선택한 검토 완료 앱이 표시됩니다. 회사에 이미 있는 앱에는 설치됨이 표시됩니다. 다른 앱에서 설치를 클릭하면 설치 대화 상자가 열립니다.

내 개인 연결

내 개인 연결에는 ChatGPT나 Claude처럼 본인의 Exayard 계정에 연결한 AI 도구와 기타 앱이 표시됩니다. 연결된 앱 상단에 있으며, 본인의 연결은 본인만 볼 수 있습니다. 개인 연결은 본인으로서 작동하므로 본인이 접근할 수 있는 모든 것에 접근할 수 있습니다.

각 연결에는 처음 및 마지막으로 사용된 시점과 사용된 회사가 표시됩니다. 연결을 중지하려면 추가 작업 메뉴를 열고 제거를 클릭한 다음 확인합니다. 그다음 호출부터 거부됩니다. 연결은 제거됨으로 표시된 채 목록에 남으며, 다시 허용을 클릭하면 다시 허용됩니다. 새 도구를 연결하려면 Exa를 AI 어시스턴트에 연결하기를 참고하세요.

고객용 계정

앱은 내 제품을 통해서만 Exayard를 사용하는 고객을 위해 API로 Exayard 회사를 만들 수 있습니다. 이러한 회사는 내 회사가 소유하며, 그 안에서 실행되는 AI 작업 비용도 내 회사가 지불합니다. 이러한 회사에는 자체 멤버가 없으며, 내 앱이 자동으로 설치됩니다.

고객용 계정에는 관리자를 위해 각 회사의 이름과 생성일이 표시됩니다. 해지를 클릭하고 확인하면 회사가 폐쇄됩니다. 해당 회사의 모든 앱이 액세스 권한을 잃습니다.

시작하기

빠른 시작 카드에는 Claude나 Cursor 같은 AI 편집기용으로 미리 준비된 프롬프트가 있습니다. 프롬프트 복사를 클릭하여 편집기에 붙여넣으세요. 프롬프트에는 API 기본 URL, 인증 형식, 범위, 웹훅 서명 방식이 포함되어 있어 AI가 작동하는 연동을 만들고 필요한 세부 정보를 사용자에게 물어볼 수 있습니다. 이 카드는 API 키가 필요하므로 관리자에게만 표시됩니다.

문서 카드에는 문서 열기로 전체 개발자 문서에 연결되는 링크와, 모든 경로 및 스키마를 설명하는 OpenAPI 사양 링크가 있습니다. 관리자에게는 Claude 또는 Cursor에 연결도 표시되며, 이를 클릭하면 AI 어시스턴트를 Exayard에 연결하는 설정이 열립니다.

로그

로그에는 API에 대한 요청이 최신순으로 표시됩니다. 각 행에는 메서드, 경로, 상태, 시간, 지연 시간이 표시됩니다. 이전 요청을 보려면 하단의 더 보기를 클릭하세요.

관리자는 모든 요청을 볼 수 있습니다. 멤버는 앱을 거치지 않은 요청만 볼 수 있습니다.

관리자는 앱으로 필터링한 다음 해당 앱의 키 중 하나로 다시 필터링할 수 있습니다. 누구나 최종 사용자를 입력하여 해당 고객의 요청만 볼 수 있습니다. 최종 사용자는 고객 한 명을 나타내는 자체 ID입니다. 코드에서 각 요청의 Exayard-End-User 헤더에 이 ID를 담아 보냅니다. 이메일 주소를 ID로 사용하지 마세요.

행을 선택하면 요청 ID, 앱과 최종 사용자, 요청 본문, 응답 본문을 포함한 전체 세부 정보를 볼 수 있습니다. 로그를 사용하여 호출이 정상적으로 처리되었는지 확인하거나 연동이 실패하는 원인을 찾으세요.

키별 및 최종 사용자별 지출

관리자는 설정의 사용량에 있는 앱별 지출에서 각 앱이 이번 달에 지출한 금액을 볼 수 있습니다. 내 회사의 앱도 이곳에 표시됩니다. 각 앱 아래의 키별에는 키마다 지출한 금액이, 상위 최종 사용자에는 가장 많이 지출한 최종 사용자 5명이 표시됩니다. 앱의 키에 연결되지 않은 지출은 기타로 표시됩니다.

월 AI 한도

앱의 월 AI 한도는 앱의 AI 작업이 청구 월마다 회사에 발생시킬 수 있는 최대 비용입니다. 한도를 설정하려면 앱별 지출에서 앱의 추가 작업 메뉴를 열고 월 AI 한도 설정을 클릭합니다. 청구 통화로 금액을 입력하고 저장을 클릭합니다. 한도를 없애려면 빈 칸으로 저장하세요.

앱이 한도에 도달하면 회사에 AI 사용량이 남아 있더라도 해당 청구 월의 나머지 기간 동안 앱의 AI 작업이 거부됩니다. 회사 자체의 한도도 그대로 적용됩니다. 사람이 직접 시작한 AI 작업은 앱의 한도에 포함되지 않습니다.

답변이 도움되었나요?