Docs

Quickstart

Last updated: 2026-10-033 min read

The GREM API gives programmatic access to what the cabinet offers: the tools (valuation, texts, video, photos, PDFs, sites), your listings, leads and events. Every request goes to one address:

https://developers.grem.capital/api/v1

The full machine-readable description is /openapi.json; an interactive one is at /docs.

Create a key

In the cabinet open API → Keys and click Create key. The key is shown once - store it in a secrets manager. A new key gets every scope; you can narrow them when creating it. Details: Authentication.

Check the key

curl https://developers.grem.capital/api/v1/ping \
  -H "Authorization: Bearer gsk_live_xxx"

{"ok": true, ...} means the key works. GET /ping is free and needs no scope. GET /me shows what exactly the key may do.

Call a synchronous tool

The express valuation answers right away:

curl -X POST https://developers.grem.capital/api/v1/valuation/express \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 6b1f0c2e-6c1e-4a8e-9f5d-3c2a1b0e9d87" \
  -d '{"propertyCategory":"apartment","addressText":"Torstraße 12, Berlin","totalArea":64,"rooms":2,"currency":"EUR"}'
{
  "estimate": { "pricePoint": <number>, "rangeLow": <number>, "rangeHigh": <number>, "confidence": "<level>", "currency": "EUR" },
  "requestId": "req_..."
}

Idempotency-Key makes a retry safe: repeating the request with the same key returns the first result and does not charge again.

Start an async job

Long tools answer 202 with a job. If you want the result by webhook, subscribe first (step 5): a job started before the subscription does not send its event.

curl -X POST https://developers.grem.capital/api/v1/text/generate \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"city":"Berlin","totalArea":64,"rooms":2,"propertyCategory":"apartment","language":"en"}'
{ "jobId": "...", "status": "...", "state": "pending", "requestId": "req_..." }

Poll the status (free) until state is completed, partial or failed:

curl https://developers.grem.capital/api/v1/text/generate/jobs/JOB_ID \
  -H "Authorization: Bearer gsk_live_xxx"

How jobs work and how to download the files: Jobs and results.

Get the result by webhook

Instead of polling, subscribe to the event - GREM sends a POST to your URL when the job finishes. Subscribe before starting the job: a job started before the subscription does not send its event.

curl -X POST https://developers.grem.capital/api/v1/webhooks \
  -H "Authorization: Bearer gsk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/grem-hook","events":["text.completed","text.failed"]}'

The response contains the signing secret whsec_... - it is shown once. How to verify the signature: Webhooks.

Test without spending: a key prefixed gsk_test (choose the key type Test when you create it) runs in the sandbox: tools answer with sample results, nothing is created or charged.

Next

Was this article helpful?