GREMDocs

TypeScript SDK

Последнее обновление: 2026-07-212 мин чтения

Маленький клиент для API GREM без зависимостей. Работает в Node 18+ и современных браузерах (использует глобальный fetch и Web Crypto).

Установка

Это один файл — без сборки и зависимостей. Скачайте и положите в проект:

Скачать grem.ts

Быстрый старт

import { GremClient } from './grem';

const grem = new GremClient({ apiKey: process.env.GREM_API_KEY });

const { estimate } = await grem.valuation.express({
  propertyCategory: 'apartment',
  totalArea: 50,
});
console.log(estimate.pricePoint, estimate.currency);

Базовый URL по умолчанию — https://developers.grem.capital/api/v1. Ключ создаётся в кабинете: AI-инструменты -> API -> Ключи.

Асинхронные задачи

Долгие инструменты возвращают jobId. Опрашивайте результат (опрос бесплатный):

const { jobId } = await grem.content.generate({ /* ... */ });
const result = await grem.jobs.wait('content/generate', jobId);

Ошибки

Ответы не-2xx бросают GremError (RFC 7807):

import { GremError } from './grem';

try {
  await grem.valuation.express({ propertyCategory: 'apartment' }); // нет totalArea
} catch (e) {
  if (e instanceof GremError) console.error(e.status, e.detail, e.requestId);
}

Идемпотентность

Передайте ключ идемпотентности, чтобы безопасно повторить POST:

await grem.valuation.express(input, crypto.randomUUID());

Вебхуки

Проверяйте подпись каждой доставки по сырому телу:

import { verifyWebhookSignature } from './grem';

app.post('/grem-hook', express.raw({ type: 'application/json' }), async (req, res) => {
  const raw = req.body.toString('utf8');
  const ok = await verifyWebhookSignature(process.env.GREM_WEBHOOK_SECRET, req.get('x-grem-signature'), raw);
  if (!ok) return res.status(400).send('invalid signature');
  const event = JSON.parse(raw);
  // обрабатываем event.type / event.data ...
  res.sendStatus(200);
});

Каждый метод соответствует эндпоинту в интерактивном обозревателе. См. Быстрый старт и Вебхуки для исходных запросов.

Эта статья была полезной?