Download OpenAPI specification:
RESTful API for controlling Temi robots in an organization.
Authenticate every request with an Organization Access Token (OAT) in the
x-api-key header. Tokens are scoped; each endpoint requires the permission
noted in its description.
Validates the OAT and returns organization, scope, and robot access metadata.
{- "status": "ok",
- "organizationId": "string",
- "tokenId": "string",
- "scopes": [
- "string"
], - "robotScope": "all",
- "robotIds": [
- "string"
]
}Returns identity and presence status for a single robot.
Required scope: read:robot:status
| robotId required | string Robot identifier from |
{- "robotId": "<robotClientId>",
- "teminame": "Reception",
- "serialNumber": "1234567",
- "status": "online"
}Returns named map locations for the robot. Use these names as
extra.locationName in MOVEMENT actions.
Required scope: read:robot:locations
| robotId required | string Robot identifier from |
{- "robotId": "string",
- "mapId": "string",
- "mapName": "string",
- "locations": [
- {
- "name": "string"
}
]
}Returns organization members and contacts that can receive a video call.
Use temiId as contactId in START_CALL actions.
Required scope: read:org:contact
{- "contacts": [
- {
- "temiId": "string",
- "name": "string",
- "kind": "member",
- "source": "organization",
- "robotId": "string"
}
]
}Returns guest contacts associated with the robot. Use temiId as
contactId in START_CALL actions.
Required scope: read:robot:contact
| robotId required | string Robot identifier from |
{- "contacts": [
- {
- "temiId": "string",
- "name": "string",
- "kind": "member",
- "source": "organization",
- "robotId": "string"
}
]
}Runs a sequence on a robot. A sequence is an ordered list of actions (navigate, speak, place a video call). The request is accepted asynchronously; the robot executes the sequence after delivery.
Recommended flow
GET /robots — select robotIdGET /robots/{robotId}/locations — resolve location names for navigationGET /contacts or GET /robots/{robotId}/contacts — resolve temiId for callsPOST /sequences/play — submit the sequenceSupported action types
| Type | Alias | Purpose | Required fields |
|---|---|---|---|
MOVEMENT |
goto |
Navigate to a map location | extra.locationName or location |
SPEAK |
speak |
Speak text | extra.tts or tts |
START_CALL |
meeting |
Start a video call | contactId (temiId from contacts) |
Compact requests may use aliases with step instead of startStep/endStep.
See the minimal example.
Constraints
type and either step or startStep/endStep.startStep and endStep to the same value (or use step).MOVEMENT/goto and SPEAK/speak may share a step. START_CALL/meeting must be alone on its step.GET /robots/{robotId}/locations.Required scope: action:robot:sequence
| robotId required | string Target robot from |
required | Array of objects (SequenceAction) non-empty Ordered actions for the robot to execute. |
| name | string Optional sequence name. |
| description | string |
| volume | number Playback volume. |
| fixedVolume | boolean If true, volume is fixed for the sequence duration. |
| startFromStep | integer >= 1 Step at which playback begins. Defaults to the lowest step in |
| repeatSequence | integer Number of times to repeat the sequence after the first run. |
object (SequenceStopBy) Conditions that allow a user to interrupt the sequence. | |
| tags | Array of strings |
| imageKey | string |
| expireAtHours | number Hours to retain the sequence on the server. Default is 24. |
{- "robotId": "<robotClientId>",
- "actions": [
- {
- "type": "goto",
- "step": 1,
- "location": "Room 12"
}, - {
- "type": "speak",
- "step": 2,
- "tts": "Hello, your robot is here.",
- "language": "en"
}, - {
- "type": "meeting",
- "step": 3,
- "contactId": "<temiId>"
}, - {
- "type": "goto",
- "step": 4,
- "location": "home base"
}
]
}{- "status": "accepted",
- "sequenceId": "string",
- "robotId": "string"
}