The wxrks REST API lets you build integrations and scripts against your workspace — creating projects, pulling translation memory, managing users, and more — outside the Portal UI. Every request to the API must carry an authentication token in the X-AUTH-TOKEN header, which you get by exchanging a permanent API key pair for it.
💡 Who is this for? This guide is for the Account Admin who needs to generate API credentials and authenticate requests to the wxrks REST API.
1. Find your API credentials
API credentials are generated per user, from that user's own profile — there is no separate admin screen for issuing keys to other people. Only users with the User API Token permission can generate them. By default this is the Account Admin role; an Account Admin can grant the permission to another user through a Permission Group.
Sign in to wxrks and open your Profile.
Go to the Security tab and find the API Token card.
Click Generate. A confirmation dialog warns that this replaces any existing key pair for your user — click through it to confirm.
A modal shows your API ID and API Secret Key. Copy both immediately: the secret is shown only once and can't be retrieved again, only reset.
The Age in Days field is informational — once you have a key pair, it shows how old that pair is, so you know when it might be worth rotating.
Generating a new pair immediately invalidates the old one. If you're setting up a shared integration (a CI pipeline, a connector, a bot), create a dedicated wxrks user for it first and generate the key from that account — not from a personal admin account whose key might get regenerated later for unrelated reasons. See Limit what an API key can do.
ℹ️ Note: To test an integration without touching production work, use a dedicated Organizational Unit or, on Quantum and above, a sandbox account. See API - limits and conventions.
2. Exchange your credentials for a token
Requests to the wxrks API don't use your API ID and API Secret Key directly. Instead, you exchange them once for a token, then use that token on every subsequent request.
Send a POST request to /api/v3/auth on your workspace's host, with your credentials as JSON:
POST https://app.wxrks.com/api/v3/authContent-Type: application/json{ "accessKey": "your-api-id", "secret": "your-api-secret-key"}Most workspaces use https://app.wxrks.com; European workspaces use https://eu.wxrks.com.
A successful response returns your authentication token in the X-AUTH-TOKEN response header — not in the response body, so make sure your client is reading response headers (with curl, that means passing -i or -D -).
3. Use the token on every request
Copy the token from that header and send it back as a request header, named the same way, on every call you make to the API:
GET https://app.wxrks.com/api/v3/projectsX-AUTH-TOKEN: <token from step 2>
You don't need to repeat step 2 for every request — reuse the same token until it expires.
4. Token expiration
The token from X-AUTH-TOKEN is valid for 10 days. There is no refresh call: when it expires, your requests start failing authentication — at that point, repeat step 2 (POST /api/v3/auth with the same API ID and API Secret Key) to get a fresh one.
You never need to generate a new key pair just because a token expired — the API ID/API Secret Key pair itself stays valid until you explicitly click Generate again on the Security tab. A long-running integration should catch the authentication failure and automatically re-run the exchange in step 2, rather than hardcoding a single token.
⚠️ Warning: The token is a JWT whose exp value is in milliseconds, not seconds as the JWT standard says, so a library that decodes it by the standard shows a date thousands of years away. Don't use exp to schedule renewals; renew when a request fails authentication.
5. Limit what an API key can do
An API key can do exactly what the user it belongs to can do. A key generated from an Account Admin user has the access of the Account Admin role, so for an integration that needs only part of that, don't use an admin user.
Create a dedicated user for each integration, so that you can rotate or switch off one integration's access without affecting the others.
Give that user only the permissions the integration needs, using a Permission Group. See How to manage Permission Groups.
Generate the API key from that user's own Profile, as in step 1. The user must have the permission to generate an API token.
ℹ️ Note: If you deactivate the user, the key stops working: exchanging its API ID and API Secret Key for a token fails, and a token issued earlier stops working within about 5 minutes. This is the quickest way to cut off an integration.
Troubleshooting
"Invalid Credentials" on the auth request: your API ID or API Secret Key is wrong, or the key pair was regenerated since you saved it (generating a new pair invalidates the old one immediately). Generate a fresh pair from the Security tab and update wherever you stored it.
Requests are rejected even with a valid key: check that the user the key belongs to is still active. A deactivated user can't exchange a key for a token.
Authentication suddenly stops working after about 10 days: your X-AUTH-TOKEN has expired. Repeat the exchange in step 2 with your existing API ID/API Secret Key — you don't need a new key pair.
Related articles
Connecting an AI assistant or terminal tool instead of calling the REST API directly? See MCP and CLI for wxrks — it uses the same API ID/API Secret Key pair from this article, generated from the same Security tab.
Full endpoint reference: wxrks API documentation.
Webhooks: event notifications — get notified when something changes instead of polling the API.
API - limits and conventions — token lifetime, rate limits, pagination, API versions and testing.

