Installations
The Installations resource lets you register and manage MarkUp SDK installations for a workspace. An installation issues a public key the SDK uses to initialize commenting and, together with your signing key, to exchange customer-signed JWTs for MarkUp tokens.
Create installation
POST /api/v2/installations
curl "https://api.markup.io/api/v2/installations" \
-X POST \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" \
--data '{
"workspaceId": "6f696025-44b1-4144-bd2b-21f7f15e3dd0",
"signingKey": "-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFA...\\n-----END PUBLIC KEY-----",
"allowedOrigins": [
"https://app.example.com"
],
"url": "https://app.example.com",
"name": "My App"
}'{
"data": {
"id": "f9ddb107-1a75-4d8a-9728-e70555622047",
"createdAt": "2026-07-23T17:45:55.647Z",
"modifiedAt": "2026-07-23T17:45:55.648Z",
"workspaceId": "bff9120d-a5d7-41ec-87a0-3054df0ca5cb",
"publicKey": "some publicKey",
"status": "active"
}
}Response Body - InstallationResponse
Request Body CreateInstallationRequest
| Option | Type | |
|---|---|---|
| workspaceId | string | |
| signingKey | string | The customer's RSA public key (PEM, RS256) used to verify SDK-signed JWTs during token exchange. Only RS256 is supported. |
| allowedOrigins optional | string[] | Origins allowed to use this installation. When omitted, origin validation falls back to the SDK exchange defaults. |
| url optional | string | Optional website URL. When provided, a MarkUp is created for it and attached to this installation. |
| name optional | string | Optional name for the MarkUp created from |
List installations
GET /api/v2/installations
curl "https://api.markup.io/api/v2/installations?workspaceId=5da3fd57-0756-4b7d-9971-8aa69280c0be" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"data": [
{}
]
}
}Response Body ListInstallationResponse
| Option | Type | |
|---|---|---|
| data | T[] |
Request Query Params WorkspaceIdRequest
| Option | Type | |
|---|---|---|
| workspaceId | string |
Get installation
GET /api/v2/installations/:id
curl "https://api.markup.io/api/v2/installations/c8bd7438-39f3-40af-ae50-816eee83520e" \
-X GET \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" {
"data": {
"id": "04544712-5205-4cf2-8921-26a8c402a83f",
"createdAt": "2026-07-23T17:45:55.648Z",
"modifiedAt": "2026-07-23T17:45:55.648Z",
"workspaceId": "c851064e-8d04-4588-b3f6-18cf3626434c",
"publicKey": "some publicKey",
"status": "active"
}
}Response Body - InstallationResponse
Request Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Delete installation
DELETE /api/v2/installations/:id
curl "https://api.markup.io/api/v2/installations/504a5cb2-8e81-4a8b-92ec-a627570825be" \
-X DELETE \
-H "Authorization: Bearer <API-KEY-SECRET>" \
-H "Markup-API-Version: 2023-02-22" \
-H "Content-Type: application/json" 204 No ContentRequest Path Params IdRequestParam
| Option | Type | |
|---|---|---|
| id | string |
Related types
InstallationResponse
| Option | Type | |
|---|---|---|
| id | string | |
| createdAt | Iso8601Timestamp | |
| modifiedAt | Iso8601Timestamp | |
| deletedAt | Iso8601Timestamp | |
| workspaceId | string | |
| publicKey | string | Browser-safe public identifier for this installation, used by the SDK to initialize commenting. |
| status | string |