Create a service account
curl --request POST \
--url https://www.presolve.com/api/v1/service-accounts \
--header 'Content-Type: application/json' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"scopes": [],
"expiresAt": "<string>",
"actingAttorneyId": "<string>",
"reportIncludeChildOrganizations": true,
"webhookAllowedHosts": []
}
'const options = {
method: 'POST',
headers: {
'X-Idempotency-Key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
scopes: [],
expiresAt: '<string>',
actingAttorneyId: '<string>',
reportIncludeChildOrganizations: true,
webhookAllowedHosts: []
})
};
fetch('https://www.presolve.com/api/v1/service-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.presolve.com/api/v1/service-accounts"
payload = {
"name": "<string>",
"scopes": [],
"expiresAt": "<string>",
"actingAttorneyId": "<string>",
"reportIncludeChildOrganizations": True,
"webhookAllowedHosts": []
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}Org & Team
Create a service account
Standard scopes only — elevated (PHI/PII) scopes are rejected on this surface and can only be granted by platform admins. The secret is returned once, in this response only.
organizationId is not supported on this operation. Its existing credential or organization scope applies.
Requires the org:manage scope. Mutations require an X-Idempotency-Key header (responses are stored for replay; reusing a key with a different request returns 409 IDEMPOTENCY_CONFLICT). Rate tier: write.
POST
/
api
/
v1
/
service-accounts
Create a service account
curl --request POST \
--url https://www.presolve.com/api/v1/service-accounts \
--header 'Content-Type: application/json' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"scopes": [],
"expiresAt": "<string>",
"actingAttorneyId": "<string>",
"reportIncludeChildOrganizations": true,
"webhookAllowedHosts": []
}
'const options = {
method: 'POST',
headers: {
'X-Idempotency-Key': '<x-idempotency-key>',
'x-api-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: '<string>',
scopes: [],
expiresAt: '<string>',
actingAttorneyId: '<string>',
reportIncludeChildOrganizations: true,
webhookAllowedHosts: []
})
};
fetch('https://www.presolve.com/api/v1/service-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://www.presolve.com/api/v1/service-accounts"
payload = {
"name": "<string>",
"scopes": [],
"expiresAt": "<string>",
"actingAttorneyId": "<string>",
"reportIncludeChildOrganizations": True,
"webhookAllowedHosts": []
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}{
"success": false,
"error": "<string>",
"code": "<string>"
}Authorizations
Org-issued integration API key (service account credential). The plaintext secret is shown once at creation.
Headers
Stable caller-chosen key (max 200 chars) making the mutation safely retryable.
Maximum string length:
200Body
application/json
Required string length:
1 - 100Minimum array length:
1Available options:
cases:read, cases:write, leads:read, leads:write, clients:read, clients:write, contacts:read, contacts:write, documents:read, documents:write, notes:read, notes:write, tasks:read, tasks:write, calendar:read, calendar:write, deadlines:read, deadlines:write, intake:read, intake:write, esign:read, esign:write, billing:read, billing:write, funds:read, funds:write, referrals:read, referrals:write, communications:read, communications:write, org:read, org:manage, reports:read, events:read, webhooks:manage, medical:read, medical:write, pii:read Required string length:
1 - 200Maximum array length:
20Required string length:
1 - 253