Every method below is currently registered in the live Jakarta Data API registry. Unsupported legacy enum values such as wavelet.create are intentionally excluded.
robot.createWaveletRobotCreateWaveletRequest / RobotCreateWaveletResponse
Creates a new conversational wave and returns the real wave, wavelet, and root blip IDs.
Auth: bearer JWT
Required: waveletData
Optional: message
Request body schema
{
"id": "op-1",
"method": "robot.createWavelet",
"params": {
"waveletData": {
"waveId": "example.com!TBD_wave_1",
"waveletId": "example.com!conv+root",
"rootBlipId": "TBD_blip_1",
"participants": [
"alice@example.com",
"bob@example.com"
]
},
"message": "created from the Data API"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"message": "created from the Data API",
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.createWavelet",
"params": {
"waveletData": {
"waveId": "example.com!TBD_wave_1",
"waveletId": "example.com!conv+root",
"rootBlipId": "TBD_blip_1",
"participants": [
"alice@example.com",
"bob@example.com"
]
},
"message": "created from the Data API"
}
}
]'
Notes: Use temporary IDs in the request. The success payload contains the real IDs.
robot.fetchWaveRobotFetchWaveRequest / RobotFetchWaveResponse
Fetches wave state for a specific wavelet or returns visible wavelet IDs when returnWaveletIds=true.
Auth: bearer JWT
Required: waveId
Optional: waveletId, returnWaveletIds, message
Request body schema
{
"id": "op-1",
"method": "robot.fetchWave",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"returnWaveletIds": false,
"message": "optional fetch tag"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"robotAddress": "helper-bot@example.com",
"rpcServerUrl": "https://wave.example.com/robot/dataapi/rpc",
"blipId": "b+root",
"message": "optional fetch tag",
"waveletData": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"rootBlipId": "b+root",
"title": "Project kickoff"
},
"blips": {
"b+root": {
"blipId": "b+root",
"content": "\nWelcome to the wave",
"contributors": [
"alice@example.com"
]
}
},
"threads": {
"thread+root": {
"id": "thread+root",
"blipIds": [
"b+root"
]
}
}
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.fetchWave",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"returnWaveletIds": false,
"message": "optional fetch tag"
}
}
]'
Notes: When returnWaveletIds=true the server returns waveletIds instead of the waveletData/blips/threads bundle. Fetch bundles include robotAddress and, on current servers, rpcServerUrl. Treat missing threads as {} when reading older payloads.
wavelet.appendBlipWaveletAppendBlipRequest / WaveletAppendBlipResponse
Appends a new blip to the root thread of the target conversation.
Auth: bearer JWT
Required: waveId, waveletId, blipData
Optional: none
Request body schema
{
"id": "op-1",
"method": "wavelet.appendBlip",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipData": {
"blipId": "TBD_blip_2",
"content": "\nHello from the API"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"newBlipId": "b+new"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "wavelet.appendBlip",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipData": {
"blipId": "TBD_blip_2",
"content": "\nHello from the API"
}
}
}
]'
Notes: Returns a WaveletBlipCreatedEvent payload with the new blip ID.
wavelet.addParticipantWaveletAddParticipantRequest / WaveletAddParticipantResponse
Adds a participant to the target wavelet.
Auth: bearer JWT
Required: waveId, waveletId, participantId
Optional: none
Request body schema
{
"id": "op-1",
"method": "wavelet.addParticipant",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"participantId": "bob@example.com"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"participantsAdded": [
"bob@example.com"
],
"participantsRemoved": []
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "wavelet.addParticipant",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"participantId": "bob@example.com"
}
}
]'
Notes: Returns a WaveletParticipantsChangedEvent payload.
wavelet.removeParticipantWaveletRemoveParticipantRequest / WaveletRemoveParticipantResponse
Removes a participant from the target wavelet.
Auth: bearer JWT
Required: waveId, waveletId, participantId
Optional: none
Request body schema
{
"id": "op-1",
"method": "wavelet.removeParticipant",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"participantId": "bob@example.com"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"participantsAdded": [],
"participantsRemoved": [
"bob@example.com"
]
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "wavelet.removeParticipant",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"participantId": "bob@example.com"
}
}
]'
Notes: Returns a WaveletParticipantsChangedEvent payload.
wavelet.setTitleWaveletSetTitleRequest / WaveletSetTitleResponse
Sets the visible title of the target wavelet.
Auth: bearer JWT
Required: waveId, waveletId, waveletTitle
Optional: none
Request body schema
{
"id": "op-1",
"method": "wavelet.setTitle",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"waveletTitle": "Project kickoff"
}
}
Response shape
[
{
"id": "op-1",
"data": {}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "wavelet.setTitle",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"waveletTitle": "Project kickoff"
}
}
]'
Notes: Successful responses are empty.
blip.createChildBlipCreateChildRequest / BlipCreateChildResponse
Creates a reply-thread child blip under the specified parent blip.
Auth: bearer JWT
Required: waveId, waveletId, blipId, blipData
Optional: none
Request body schema
{
"id": "op-1",
"method": "blip.createChild",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+parent",
"blipData": {
"blipId": "TBD_child_1",
"content": "\nChild reply"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"newBlipId": "b+child"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "blip.createChild",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+parent",
"blipData": {
"blipId": "TBD_child_1",
"content": "\nChild reply"
}
}
}
]'
Notes: Returns a WaveletBlipCreatedEvent payload.
blip.continueThreadBlipContinueThreadRequest / BlipContinueThreadResponse
Appends a new blip to the end of the current thread for the specified blip.
Auth: bearer JWT
Required: waveId, waveletId, blipId, blipData
Optional: none
Request body schema
{
"id": "op-1",
"method": "blip.continueThread",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+parent",
"blipData": {
"blipId": "TBD_thread_1",
"content": "\nThread continuation"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"newBlipId": "b+thread"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "blip.continueThread",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+parent",
"blipData": {
"blipId": "TBD_thread_1",
"content": "\nThread continuation"
}
}
}
]'
Notes: Returns a WaveletBlipCreatedEvent payload.
blip.deleteBlipDeleteRequest / BlipDeleteResponse
Deletes the specified blip.
Auth: bearer JWT
Required: waveId, waveletId, blipId
Optional: none
Request body schema
{
"id": "op-1",
"method": "blip.delete",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+old"
}
}
Response shape
[
{
"id": "op-1",
"data": {}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "blip.delete",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+old"
}
}
]'
Notes: Successful responses are empty.
document.modifyDocumentModifyRequest / DocumentModifyResponse
Applies a DocumentModifyAction to the target blip content.
Auth: bearer JWT
Required: waveId, waveletId, blipId, modifyAction
Optional: range, index, modifyQuery
Request body schema
{
"id": "op-1",
"method": "document.modify",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"modifyAction": {
"modifyHow": "REPLACE",
"values": [
"Updated text"
],
"annotationKey": "",
"elements": [],
"bundledAnnotations": [],
"useMarkup": false
},
"range": {
"start": 1,
"end": 8
}
}
}
Response shape
[
{
"id": "op-1",
"data": {}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "document.modify",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"modifyAction": {
"modifyHow": "REPLACE",
"values": [
"Updated text"
],
"annotationKey": "",
"elements": [],
"bundledAnnotations": [],
"useMarkup": false
},
"range": {
"start": 1,
"end": 8
}
}
}
]'
Notes: Use range, index, or modifyQuery to target the document region. To insert an attachment-backed inline image after robot.importAttachment, send modifyHow=INSERT with an IMAGE element whose properties include attachmentId, caption, and optional display-size=small|medium|large. Successful responses are empty.
document.appendMarkupDocumentAppendMarkupRequest / DocumentAppendMarkupResponse
Appends markup to the specified blip.
Auth: bearer JWT
Required: waveId, waveletId, blipId, content
Optional: none
Request body schema
{
"id": "op-1",
"method": "document.appendMarkup",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"content": "<p><b>Marked up text</b></p>"
}
}
Response shape
[
{
"id": "op-1",
"data": {}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "document.appendMarkup",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"content": "<p><b>Marked up text</b></p>"
}
}
]'
Notes: The content value is parsed as XML/markup. Successful responses are empty.
document.appendInlineBlipDocumentAppendInlineBlipRequest / DocumentAppendInlineBlipResponse
Appends a new inline blip on a new line within the specified parent blip.
Auth: bearer JWT
Required: waveId, waveletId, blipId, blipData
Optional: none
Request body schema
{
"id": "op-1",
"method": "document.appendInlineBlip",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"blipData": {
"blipId": "TBD_inline_1",
"content": "\nInline details"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"newBlipId": "b+inline"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "document.appendInlineBlip",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"blipData": {
"blipId": "TBD_inline_1",
"content": "\nInline details"
}
}
}
]'
Notes: Returns a WaveletBlipCreatedEvent payload.
document.insertInlineBlipDocumentInsertInlineBlipRequest / DocumentInsertInlineBlipResponse
Inserts an inline blip at the provided API text index.
Auth: bearer JWT
Required: waveId, waveletId, blipId, index, blipData
Optional: none
Request body schema
{
"id": "op-1",
"method": "document.insertInlineBlip",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"index": 12,
"blipData": {
"blipId": "TBD_inline_2",
"content": "\nInline details"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"newBlipId": "b+inline"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "document.insertInlineBlip",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"index": 12,
"blipData": {
"blipId": "TBD_inline_2",
"content": "\nInline details"
}
}
}
]'
Notes: The index must be greater than zero. Returns a WaveletBlipCreatedEvent payload.
document.insertInlineBlipAfterElementDocumentInsertInlineBlipAfterElementRequest / DocumentInsertInlineBlipAfterElementResponse
Inserts an inline blip immediately after the specified element.
Auth: bearer JWT
Required: waveId, waveletId, blipId, element, blipData
Optional: none
Request body schema
{
"id": "op-1",
"method": "document.insertInlineBlipAfterElement",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"element": {
"type": "IMAGE",
"properties": {
"url": "https://example.test/image.png"
}
},
"blipData": {
"blipId": "TBD_inline_3",
"content": "\nElement follow-up"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {
"blipId": "b+root",
"newBlipId": "b+inline"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "document.insertInlineBlipAfterElement",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"blipId": "b+root",
"element": {
"type": "IMAGE",
"properties": {
"url": "https://example.test/image.png"
}
},
"blipData": {
"blipId": "TBD_inline_3",
"content": "\nElement follow-up"
}
}
}
]'
Notes: The server resolves the actual element location before inserting the inline thread.
robot.exportSnapshotRobotExportSnapshotRequest / RobotExportSnapshotResponse
Exports a committed wavelet snapshot as raw JSON.
Auth: bearer JWT
Required: waveId, waveletId
Optional: none
Request body schema
{
"id": "op-1",
"method": "robot.exportSnapshot",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"rawSnapshot": "{\"waveletId\":\"example.com!conv+root\",\"version\":42}"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.exportSnapshot",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root"
}
}
]'
Notes: The rawSnapshot string contains serialized snapshot JSON.
robot.exportDeltasRobotExportDeltasRequest / RobotExportDeltasResponse
Exports serialized deltas plus the target hashed version.
Auth: bearer JWT
Required: waveId, waveletId, fromVersion, toVersion
Optional: none
Request body schema
{
"id": "op-1",
"method": "robot.exportDeltas",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"fromVersion": "BASE64_HASHED_VERSION_START",
"toVersion": "BASE64_HASHED_VERSION_END"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"rawDeltas": [
"BASE64_DELTA_BYTES"
],
"targetVersion": "BASE64_HASHED_VERSION_TARGET"
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.exportDeltas",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"fromVersion": "BASE64_HASHED_VERSION_START",
"toVersion": "BASE64_HASHED_VERSION_END"
}
}
]'
Notes: Both version parameters are required by the current service implementation.
robot.exportAttachmentRobotExportAttachmentRequest / RobotExportAttachmentResponse
Exports attachment bytes together with the stored file metadata.
Auth: bearer JWT
Required: attachmentId
Optional: none
Request body schema
{
"id": "op-1",
"method": "robot.exportAttachment",
"params": {
"attachmentId": "att+123"
}
}
Response shape
[
{
"id": "op-1",
"data": {
"attachmentData": {
"fileName": "design.pdf",
"creator": "alice@example.com",
"data": "BASE64_ATTACHMENT_BYTES"
}
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.exportAttachment",
"params": {
"attachmentId": "att+123"
}
}
]'
Notes: The attachment data payload includes fileName, creator, and raw bytes.
robot.importDeltasRobotImportDeltasRequest / RobotImportDeltasResponse
Imports serialized deltas into the target wavelet and reports the first imported version.
Auth: bearer JWT
Required: waveId, waveletId, rawDeltas
Optional: none
Request body schema
{
"id": "op-1",
"method": "robot.importDeltas",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"rawDeltas": [
"BASE64_DELTA_BYTES"
]
}
}
Response shape
[
{
"id": "op-1",
"data": {
"importedFromVersion": 42
}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.importDeltas",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"rawDeltas": [
"BASE64_DELTA_BYTES"
]
}
}
]'
Notes: The server can return an error if the current wavelet version changes during import.
robot.importAttachmentRobotImportAttachmentRequest / RobotImportAttachmentResponse
Stores attachment bytes in the target wavelet context.
Auth: bearer JWT
Required: waveId, waveletId, attachmentId, attachmentData
Optional: none
Request body schema
{
"id": "op-1",
"method": "robot.importAttachment",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"attachmentId": "att+123",
"attachmentData": {
"fileName": "design.pdf",
"creator": "alice@example.com",
"data": "BASE64_ATTACHMENT_BYTES"
}
}
}
Response shape
[
{
"id": "op-1",
"data": {}
}
]
curl example
curl -sS \
-X POST https://supawave.ai/robot/dataapi/rpc \
-H 'Authorization: Bearer $TOKEN' \
-H 'Content-Type: application/json' \
--data-binary '[
{
"id": "op-1",
"method": "robot.importAttachment",
"params": {
"waveId": "example.com!w+abc123",
"waveletId": "example.com!conv+root",
"attachmentId": "att+123",
"attachmentData": {
"fileName": "design.pdf",
"creator": "alice@example.com",
"data": "BASE64_ATTACHMENT_BYTES"
}
}
}
]'
Notes: Successful responses are empty. After import, insert an attachment-backed inline image with document.modify using an IMAGE element whose properties include attachmentId, caption, and optional display-size.