- API base:
https://dwsoffshorepartners.com/api/v1 - Key management: Dashboard → API access
- Reference: API documentation
- Machine contract: OpenAPI 3.1
- Complete workflow, pagination and signed staging: Developer guide
1. Get approval and create a key
API access is visible in the dashboard and the Enterprise & custom pricing block. Access requires an explicit grant from an Ultiwrite administrator; signing up or buying an analysis does not grant it.- Sign in and open Enterprise & custom pricing in your customer dashboard. Use Request API access and submit the form there; this is the only customer API-access request intake. The documentation and access-status page remain available before approval.
- After approval, open API access again. Your monthly request allowance, usage, remaining requests, reset date and requests per minute appear here.
- Give the key a recognizable name such as “CRM production,” select an expiration and choose Create key.
- Copy the key immediately into your application’s server secret store. It is displayed only once.
ultiwrite_live_. The default expiration is 90 days. The dashboard offers 30, 90 or 365 days; the server accepts 1–365 days. Up to five unexpired active keys or pending creations are permitted per account. These defaults do not imply API approval.
If creation reports an unknown outcome, refresh the list before trying again. A pending creation must be resolved or revoked before creating a replacement. A key created during a lost response cannot be displayed again; revoke it and issue a replacement. The list shows safe metadata, never the full credential.
All keys created through the dashboard receive ultiwrite:read and ultiwrite:evidence. Customers cannot choose another account, user, permission set or request limit when creating a key. The server derives those values from the signed-in account and its saved policy.
2. Make the first request
Store the key inULTIWRITE_API_KEY on your own server. Send it only in the Authorization header. Do not put it in URLs, browser bundles, public repositories or request logs.
GET /me identifies the account the credential actually authorizes. GET /usage returns the existing analysis-credit fields and an additional apiRequests object:
apiRequests object, not a live account balance. The actual response determines your allowance and reset date. The usage request itself counts, so its reported balance includes that request.
Two balances
All keys and Partner API OAuth grants share the account’s request allowance. Creating or rotating a key does not reset it. Requests rejected during authentication, approval, rate, concurrency or quota checks are not admitted and do not spend a request.
Limits default to 1,000 requests per UTC calendar month and 60 requests per minute. Your administrator can change both. A limit change preserves usage already recorded; lowering a limit below usage blocks further requests until the allowance increases or resets. A monthly allowance of zero blocks all Partner API calls, including
/usage; use the dashboard to view the balance.
After admission, responses include:
Another concurrent request may reduce the remaining balance after the snapshot was taken. Rate, quota and concurrency refusals include
Retry-After. Dashboard administration and signed staging transport are not additional Partner API requests; minting a signed upload link is one Partner API request, and the eventual analysis retains its normal analysis-credit checks.
3. Submit evidence and read the result
Usemultipart/form-data with one to six files parts. Do not manually set its Content-Type boundary. The optional documentForensics form field accepts exactly true or false; omit it to let the engine infer relevance from supported contents.
201 indicates a newly completed analysis; a 202 indicates saved processing. A repeated identical package may return 200 and state: "already_persisted". Repeating the same files and frozen forensics choice recovers the same account-scoped case without another analysis credit; each admitted HTTP request still counts.
For larger evidence packages, obtain a signed upload link:
Retry-After. Read paginated findings using the response’s snapshot, page token and cursors; do not manufacture them. Export returns account-authenticated delivery links and entitled inline data. An API key does not authenticate the website’s PDF, Excel or ZIP download routes; sign in to the same account for those downloads.
A complete workflow means a report was saved. It does not mean an opportunity was approved or that missing evidence was clear.
4. Rotate and revoke
For planned rotation, create a replacement, update your server secret, confirmGET /me with the new key, then revoke the previous key in the dashboard. Leave a key slot available for rotation.
Revocation blocks the local credential before the Unkey cleanup request is attempted. If provider cleanup is pending, the dashboard provides a retry action; the locally revoked key remains blocked. A revoked key cannot be reactivated.
Removing API approval blocks every key and Partner API OAuth grant without erasing the key list or request history. Customers can still revoke their own keys while approval is off. Reenabling approval restores eligibility for otherwise active, unexpired keys; revoke keys as well when permanent invalidation is intended. Password resets, deactivated users, closed or suspended organizations, and changed account bindings also invalidate the affected credential.
5. Handle errors
Responses use{"error":{"code":"…","message":"…","requestId":"…"}}.
Do not retry invalid credentials indefinitely. For support, provide the request id and status/code, never the API key.
6. OAuth and existing integrations
OAuth 2.1 with PKCE remains available for integrations that need an interactive customer authorization flow. Use the exact Partner API resourcehttps://dwsoffshorepartners.com/api/v1; an MCP token is bound to a different resource. OAuth Partner API requests require the same explicit approval and share the same account request limits.
The older provisioned uw_live_ credentials apply to the legacy routes separately identified in OpenAPI. Dashboard ultiwrite_live_ keys authorize the Partner API operations above. They do not grant staff, billing, admin or legacy compute access.