Build with Portal

Run assessments in your own interface and use the same clients, reports and credits as your Portal workspace.

Open Developer settings

API quickstart

Create an integration key in Developer settings. Keep it on your server. Set PORTAL_API_BASE to the Portal backend address for your environment, ending in /partner/v1.

Check your connection. This request also returns the keys permissions. Existing connection-only keys cannot run the remaining steps.

cURL · Bash
export PORTAL_API_BASE='<PORTAL_BACKEND_ORIGIN>/partner/v1'
export PORTAL_API_KEY='<YOUR_SERVER_SIDE_KEY>'

curl --fail-with-body --request GET "$PORTAL_API_BASE/status" \
  --header "Authorization: Bearer $PORTAL_API_KEY"

Set each returned ID as a Bash environment variable before the next request. These examples do not run in your browser.

Documentation & downloads

Postman starts with an empty host and key. Configure them locally; the Generate report request spends a credit. No sample answers are filled in for you.

Integration guide
Earlier API

Historical reference only. Its provider IDs and endpoints do not apply to current Portal accounts. Open earlier reference

What to expect

Where does API work appear?

Clients and their reports appear in the normal workspace. Credit spending appears on the Credits page. Your externalId stays integration metadata and is omitted from recipient reports, emails and PDFs.

Does this share a report or send an email?

No. This flow saves assessments and creates owner reports. Sharing remains a separate action in Portal.

How do retries work?

Reuse the same Idempotency-Key and body for assessment or report creation. Changing the body with that key returns a conflict. Incomplete assessments return 409; insufficient credits return 402. After a failed report request, top up or resolve the error and retry with the same key.

What can an integration key access?

It can update clients, manage API-created assessments, read all entitled full reports and use credits in its account. Keys expire after 90 days; revoking one stops its access. There is no provider ID to configure.