Personal Access Tokens
Quick setup guide — Simplify API
/api/auth/login to fetch an access token will no longer work for automated integrations. The fix takes about five minutes: create a Personal Access Token (PAT) below, then use it as your Bearer token in place of the access token you get today — no other changes to your integration are needed.A personal access token lets a program call the Simplify API on your behalf — a script, a scheduled job, or another system you run — without a browser sign-in and without your password.
The token acts as you. Anything your account is allowed to do, a token of yours can do, unless you deliberately narrow it when you create the token.
1. Before you start
| Who can own tokens | Host, Reseller and Customer accounts |
|---|---|
| Who cannot | Partner accounts, and blocked accounts |
| How many | Up to 10 active tokens per account |
Tokens are personal. You only ever see your own, and another user cannot see or use yours — not even an administrator.
Where to find the page
- Sign in to Simplify.
- Click your name in the top-right corner of the header.
- Choose Profile from the menu. This opens your Settings page.
- Open the Personal Access Tokens tab, on the row of tabs next to Profile, Password and API Credentials.
Or go straight there: https://simplify.ecgrid.com/app/account/personal-access-tokens
2. Choosing what a token may do
Every token is created with one of two access settings.
Full access — the token can do everything your account can do. Simple, and the right choice when the token drives your own integration end to end.
Custom defined — you pick exactly what the token may do, and the token can do nothing else. Use this for anything you would rather keep narrow: a token that only submits documents, a token handed to a contractor, a token living in a system you do not fully control.
With Custom defined, you choose from a list of your features, each offering three levels:
| Level | Grants | Name used by the API |
|---|---|---|
| Read | View that kind of item | FlowRead, MapRead, DocumentRead, … |
| Edit | View and change it | FlowEdit, MapEdit, DocumentEdit, … |
| Delete | View, change and delete it | FlowDelete, MapDelete, DocumentDelete, … |
The levels include each other: choosing Edit also grants Read, and Delete grants all three — you cannot change something you cannot see. On screen this happens automatically as you tick the boxes; through the API you list the names yourself, so include FlowRead alongside FlowEdit.
Separately from that list sits Run transformations through the API (WorkflowExecute),
the one permission needed to submit a file to a map and read the result. A token meant only for pushing documents
does not need this permission.
- A token can never do more than you can. You can only grant what you hold yourself. If your own permissions are reduced later, every token of yours is reduced with them, straight away.
- Access is checked on every request, so a token stops working the moment it is revoked, the moment it expires, and the moment your account is blocked — no waiting, no cache.
3. Rules and limits
| Rule | Detail | If you break it |
|---|---|---|
| Name | Required, up to 100 characters, and different from your other active tokens. | A token with this name already exists. |
| Expiration | Optional. Must be a future date. Leave it empty and the token never expires. | Expiration date must be in the future. |
| Active tokens | At most 10 at a time. Revoked and expired tokens do not count. | You have reached the maximum of 10 active personal access tokens. |
| Custom access | At least one item, and every item must be something you hold yourself. | Invalid permission scope. or Requested scopes exceed your current permissions. |
| Account type | Host, Reseller or Customer. | You are not allowed to create personal access tokens. |
Revoking a token frees up its name, so a replacement can carry the same one.
Part 1 — Manage tokens in the web app
4. Create a token
- Open the page as described in Section 1.
- Click Generate token.
- Fill in the form:
Field Required Notes Name Yes Use something that says where the token is used — Nightly order upload,Partner X sandbox.Expiration (optional) No Pick a future date, or leave empty for a token that never expires. Access Yes Full access, or Custom defined and then tick what the token may do. - Click Generate.
5. Copy the token immediately
The token is shown once, in a dialog, right after it is created. Copy it and store it somewhere safe before closing that dialog. It cannot be displayed again and there is no way to recover it — if you lose it, revoke the token and create a new one.
A token looks like this:
From then on you only see a short hint such as pat_••••4aI — enough to recognize which token is which, not enough to use.
6. Review your tokens
The list shows:
| Column | What it tells you |
|---|---|
| Name | The name you gave it |
| Token | The hint, e.g. pat_••••4aI |
| Status | Active or Expired |
| Expires | The expiry date, empty when the token never expires |
| Last Used | When the token last authenticated, or Never used |
| Created On | When you created it |
Open the row menu (…) and choose Info for the full picture, including the exact list of items a custom token is allowed to do.
Two details about this list: Last Used is recorded at most once every few minutes, so on a busy token it can lag slightly behind the real last call. Expired tokens stay on the list for 30 days so you can still see what happened, then drop off. Revoked tokens disappear from the list immediately.
7. Revoke a token
Revoke a token as soon as it is no longer needed, or the moment you suspect someone else has seen it.
- Open the row menu (…) and choose Revoke — or open Info and click Revoke there.
- Confirm.
The token stops working immediately and cannot be brought back. Anything still using it starts failing at once, so put the replacement in place first if that matters.
Part 2 — Manage tokens through the API
Everything in Part 1 can also be done from a script. This is useful for rotating a token on a schedule, or for reading which tokens exist from your own monitoring.
8. How these calls authenticate
These endpoints take the same credential as any other API call: either your signed-in session or an existing personal access token (see Section 12). They require no particular permission — being signed in as yourself is enough.
Nothing here can exceed your own account. A token you create through the API is checked against your live permissions exactly as it is on screen, and it can only ever cover your own tokens.
All five endpoints sit under /api/personal-access-tokens:
| Action | Request |
|---|---|
| Create a token | POST /api/personal-access-tokens |
| List your tokens | POST /api/personal-access-tokens/grid |
| Read one token | GET /api/personal-access-tokens/{id} |
| Revoke a token | PUT /api/personal-access-tokens/{id}/revoke |
| See what you may grant | GET /api/personal-access-tokens/available-permissions |
9. Create a token
| Field | Required | Notes |
|---|---|---|
name | Yes | Up to 100 characters, unique among your active tokens. |
expiresOn | No | A future date and time. Omit it for a token that never expires. |
scopeType | No | FullAccess (the default) or Custom. |
scopes | Only with Custom | The permission names from Section 2, at least one. |
The response carries the token itself — the only time it is ever returned:
Write token straight into your secret store. Nothing can read it back afterwards, and it is deliberately kept out of the request logs.
Before offering Custom scopes, you can ask what you are allowed to grant:
Any name outside that list is rejected with Requested scopes exceed your current permissions.
10. List and read your tokens
The list is a paged request, so the parameters go in the body:
Like the screen, this returns your active and recently expired tokens — revoked ones are left out, and expired ones drop off 30 days after expiry. For one token in full, including the scopes of a custom token, ask for it by id:
Unlike the list, this one still answers for a revoked token, with status reading Revoked. Asking for a token that is not yours gives 404 Not Found — the same answer as one that does not exist.
11. Revoke a token
A success is 204 No Content, with no body. The token stops working immediately and cannot be brought back. Revoking a token that is already revoked gives 400 Bad Request — This personal access token is already revoked.
A rotation script therefore runs in this order: create the new token, put it in place and confirm it works, then revoke the old one. Revoking first breaks everything still holding the old token.
12. Authenticate your API calls
Whatever you are calling — the token endpoints above, a document push, or anything else — send the token in the Authorization header, with the word Bearer in front of it:
That is all. There is no separate sign-in step, no session to keep alive and nothing to refresh. The token works on every API endpoint your account can reach, limited further by its own access setting.
/api/auth/loginwith your new PAT — everything else about the call stays the same:/api/auth/login at all.13. When something goes wrong
| Response | What it usually means | What to do |
|---|---|---|
| 401 Unauthorized | The token is wrong, revoked, expired, or your account is blocked. | Check the header reads exactly Authorization: Bearer pat_... with no line breaks or missing characters. Check the token's status on the page. If it is gone or expired, create a new one. |
| 403 Forbidden | The token authenticated, but it is not allowed to do this. | A custom token is missing that permission — Info shows what it has. Your own permissions may also have changed. |
| 404 Not Found | The item does not exist, or does not belong to your account. | For tokens: check the id, and that the token is yours. For document pushes: confirm your Connection ID is correct. |
| 400 Bad Request | Something in the request is wrong. | The response says which field. See the messages in Section 3. |
14. Keeping tokens safe
A token is a password with no second step behind it — treat it like one.
- Store it in your system's secret store or an environment variable. Never in source code, a shared spreadsheet, a ticket, a chat message or a screenshot.
- One token per use. A separate token per script or integration means you can revoke one without breaking the others, and Last Used actually tells you something.
- Set an expiration. A token that expires on its own limits the damage of one you forgot about.
- Grant only what is needed. A token used only to push documents needs no
WorkflowExecuteor edit/delete permissions. - Revoke instead of reusing. If a token may have been exposed, revoke it and issue a new one; there is nothing to "reset" on an existing token.
- Send it over HTTPS only, and in the header — never in a URL, where it ends up in logs and browser history.
- Review the list from time to time and revoke anything you no longer recognize.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article