Docs

TypeScript SDK

最后更新: 2026-07-21阅读约 2 分钟

一个用于 GREM API 的轻量、零依赖客户端。可在 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);

基础地址默认为 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' }); // missing totalArea
} catch (e) {
  if (e instanceof GremError) console.error(e.status, e.detail, e.requestId);
}

幂等性

传入幂等键即可安全地重试 POST

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

Webhook

对每次投递,请针对原始请求体校验签名:

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);
  // handle event.type / event.data ...
  res.sendStatus(200);
});

每个方法都与交互式浏览器中的一个接口一一对应。底层请求见快速开始Webhook

这篇文章对您有帮助吗?