Some tools take ids as input: a voice, an avatar, a track. You get them from the requests on this page. All of them are free GETs.
Voices
GET /voices - any key. Narration voices for POST /video/create, POST /avatar/video and the content pack (form.voiceId).
curl "https://developers.grem.capital/api/v1/voices?language=de" \
-H "Authorization: Bearer gsk_live_xxx"
language (optional) - an ISO 639-1 code: keeps the voices that speak it.
| Field | Description |
|---|---|
items[].voiceId | id for the voiceId field |
items[].name | voice name |
items[].gender | male or female |
items[].description | voice character |
items[].languages | languages the voice speaks well |
items[].isDefault | the default voice |
Avatars
GET /avatar/avatars - scope tools:avatar. Every avatar your account can use in POST /avatar/video: your own, photo-based and the standard presenters.
| Field | Description |
|---|---|
items[].avatarId | id for the avatarId field |
items[].name | name |
items[].kind | custom (trained), photo (from a photo) or standard |
items[].status | only ready can be used |
items[].gender | for standard presenters |
items[].thumbnailUrl | thumbnail |
You create your own avatar in the cabinet, in the AI avatar tool; through the API you only use ready ones.
Music for video
GET /video/music - scope tools:video. Royalty-free tracks for the musicTrackId field.
| Field | Description |
|---|---|
items[].trackId | track id |
items[].title, items[].artist | title and artist |
items[].license | licence |
items[].genre | genre |
items[].durationSec | duration |
items[].previewPath | listen: https://developers.grem.capital/api/v1 + previewPath (needs the tools:artifacts scope) |
Closing phrases for video
GET /video/endings?language=en - scope tools:video. Ready closing phrases in the video language for POST /video/create, and the maximum length of your own phrase (ctaText).
| Field | Description |
|---|---|
language | phrase language |
maxCustomChars | maximum length of your own phrase |
options | ready phrases |
options[].intent | phrase id - pass it as ctaIntent |
options[].text | the phrase in the requested language |
Tool availability
GET /tools/status - any key.
{ "tools": { "video/create": { "available": true }, "avatar/video": { "available": false } }, "requestId": "req_..." }
A tool with available: false currently answers 503 service_unavailable and charges nothing. Check it before a bulk run. Tools missing from the list have no availability gate.
Work history
GET /works - any key. Your account's results across all tools - both via the API and from the cabinet, newest first.
| Parameter | Description |
|---|---|
tool | tool path: valuation/report, valuation/rent, valuation/review, content/generate, video/create, text/generate, pdf/create, floorplan/create, avatar/video, flyer/create, tour. Photo, site and draft results are not kept in the history |
status | status filter |
limit | items per page, 1-50 (default 20) |
cursor | nextCursor from the previous page; another value - 400 |
from, to | created on or after / on or before this date |
A known parameter with an invalid value is refused with 400 validation naming the field.
| Field | Description |
|---|---|
items[].id | work id |
items[].tool | tool path |
items[].status, items[].title, items[].language | status, title, language |
items[].city, items[].country | listing address, if any |
items[].street, items[].streetNumber | street and house number, if any |
items[].previewUrl, items[].link | preview image and the finished PDF, if any (download via GET /artifacts/{path}); a flyer preview is the image itself (data:image/...) |
items[].object | the listing the result was made for: id, kind, name, isDraft, photoUrl |
items[].repeatIndex, items[].error | how many times it was regenerated; a generic text when the job failed |
items[].createdAt | created at |
nextCursor | for the next page; null - no more pages |