This walkthrough shows you how to create your own PlantDemand API key — the credential you need before connecting any external tool, AI assistant, BI report, or the PlantDemand MCP server to your account. The whole process takes about five minutes and uses the built-in Swagger interface — no developer experience required.

What is a PlantDemand API key?

A PlantDemand API key (sometimes called an API token) is a long string of characters that lets a program — instead of a person typing in a username and password — authenticate to the PlantDemand REST API on your behalf. You add it as an HTTP header (SERVER_API_KEY) on each request, and PlantDemand recognizes the call as coming from your user account.

API keys are how the PlantDemand MCP server, Power BI reports, Postman collections, and custom integrations all read from and write to your PlantDemand schedule.

Before you start

  • You need a working PlantDemand login (the same email and password you use at plantdemand.com/app/login).
  • The API key you create inherits your user permissions. It cannot do anything you cannot do — and if your permissions change later, the key’s effective permissions change with them.
  • Treat the key like a password. Anyone who has it can act as you against the API.

Step 1 — Log in to PlantDemand

Open https://plantdemand.com/app/login in your browser and sign in with your normal PlantDemand account.

Step 2 — Open the Swagger API Manager

Once you are signed in, open https://plantdemand.com/swagger in the same browser tab or a new one. You will see the PlantDemand REST API page with sections for account, api-token-auth, api-token-verify, and api.

The PlantDemand Swagger API Manager landing page showing the REST API base URL, the Authorize button, and the account, api-token-auth, api-token-verify and api endpoint groups
The Swagger API Manager landing page at /swagger.

Step 3 — Open the POST /api/api-key endpoint

Expand the api section, then scroll down to POST /api/api-key and click it to expand. This is the endpoint that creates a new API key for your user.

Step 4 — Click “Try it out” and paste your key configuration

Click the Try it out button on the right side of the endpoint. The Example Value text box will become editable.

Swagger Try it out form for POST /api/api-key showing the request body with description, user, expiration_date and permission_set fields and the green Execute button
The Try it out panel where you paste the request body and press Execute.

Replace the contents of the box with the JSON below. This is a starting point that includes most read and write permissions — you should remove anything you do not need (especially edit_users and any of the other edit_ permissions if your integration only needs to read data).

{
  "description": "Integration API Key",
  "expiration_date": null,
  "permission_set": [
    "edit_users",
    "view_plant_configuration",
    "edit_plant_configuration",
    "edit_order_form",
    "edit_materials",
    "edit_mix_designs",
    "edit_production_modes",
    "view_production_modes",
    "view_orders",
    "edit_orders",
    "create_temporary_orders",
    "view_customers",
    "edit_customers",
    "view_reports",
    "view_order_plan",
    "edit_order_plan",
    "create_order_request",
    "approve_order_request",
    "edit_order_request",
    "view_order_request"
  ]
}

Recommended: use least-privilege permissions

The list above is the maximum set of permissions. For most integrations you only need a small subset. As examples:

  • Read-only AI assistant or BI report: keep only the view_* permissions.
  • Order entry integration: add view_orders, edit_orders, and create_temporary_orders; leave the view_* reads in place.
  • Configuration sync: add the relevant edit_plant_configuration, edit_materials, edit_mix_designs permissions only.

You can always create another key later with a different scope — keys are cheap and revocable.

Recommended: set an expiration date and rotate

For better security, set expiration_date to a real date instead of null. The format is "YYYY-MM-DD", for example "2027-04-16" for a one-year key. Before the key expires, create a replacement and roll your integration over to it.

When expiration_date is null, the key never expires until you delete it.

Press Execute when you are happy with the request body.

Step 5 — Copy the API key from the server response

Scroll down to the Server response section. If the request succeeded you will see HTTP code 201 and a JSON response body that contains a value field — that long alphanumeric string is your API key.

Swagger server response panel showing HTTP 201 response with id, description, value (highlighted API key), user, expiration_date and permission_set fields
A successful 201 response. The “value” field is your API key — copy it now.

Copy the value somewhere safe immediately. PlantDemand does not show it to you again — if you lose it you have to create a new key.

Step 6 — Use the key in the SERVER_API_KEY request header

To authenticate any request to the PlantDemand REST API, set an HTTP header on the request:

SERVER_API_KEY: <your_api_key_value>

In Postman, that looks like this:

Postman headers panel showing eight headers including SERVER_API_KEY set to the API key value, used to authenticate requests to the PlantDemand REST API
Setting the SERVER_API_KEY header in Postman.

If you are using the official Postman collection from the PlantDemand team, paste the API key into the collection’s variables instead — a pre-request script will attach the header automatically to every call.

Where to use your new API key

  • PlantDemand MCP server — let Claude, ChatGPT, Cursor, Copilot Studio and other AI assistants query your live schedule. See the MCP quickstart for setup.
  • Power BI integration — pull your daily order data into a Power BI report using the same API key.
  • Custom Postman collections, internal scripts, or any HTTP client that can set request headers.

Troubleshooting: 403 Forbidden responses

If the API rejects a request with a 403, the JSON response body tells you exactly which of the three problems it is.

Response body What it means How to fix
{"detail": "API key expired"} The key’s expiration_date has passed. Create a replacement key and update your integration.
{"detail": "API key authentication failed"} The key value is wrong, deleted, or pasted with an extra space. Double-check the value and the SERVER_API_KEY header name. Create a new key if needed.
{"detail": "You do not have permission to perform this action."} The endpoint you called requires a permission your key was not granted (or your user no longer has). Add the missing permission to a new key, or grant your user account the permission and create a fresh key.

Important notes about API keys

  • Keys never grant more access than the user. If your user account does not have a permission, neither will any key created under it.
  • Permission changes are live. If your user permissions change, every existing key created under that user immediately gains or loses the same access.
  • Treat keys like passwords. Do not commit them to source control, do not share them in chat, and use a secret manager whenever possible.
  • Rotate keys. Set an expiration_date, rotate before it hits, and delete keys you are no longer using.

Next steps

Frequently Asked Questions

Do I need to be a developer to create a PlantDemand API key?

No. The whole flow happens in your browser at /swagger using a built-in form. You log in, paste a JSON request body, press Execute, and copy the key from the response. It takes about five minutes.

Is it safe to give an API key the full permission list?

It works, but it is not recommended. The key inherits all your user permissions, so a leaked full-permission key gives the holder the same edit access you have. Always remove the edit_ permissions you do not need — particularly edit_users.

How do I rotate a PlantDemand API key?

When you create a key, set “expiration_date” to a real date such as “YYYY-MM-DD”. Before that date, repeat the create-key flow to make a replacement, update your integration, and delete the old key.

Where do I use the API key?

You attach it to every API request as the SERVER_API_KEY HTTP header. The PlantDemand MCP server, Power BI report, Postman collection, or any custom integration all consume it the same way.

This guide is part of PlantDemand’s asphalt software hub for asphalt plant operations, scheduling, and sales management.