Discover organisations
const url = 'https://secure.ethicsportal.eu/identity.json?limit=50';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://secure.ethicsportal.eu/identity.json?limit=50' \ --header 'Authorization: Bearer <token>'Return the organisations that an access token can read, with the token’s scopes and expiry date. Use it to find organisation IDs. An assistant connection of a person who has no organisation yet returns an empty list.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Follow the Link response header unchanged. Signed cursor expires after one hour.
Header Parameters
Section titled “Header Parameters”The ETag of a response you already hold. If nothing changed, the response is 304 Not Modified with no body. It still counts toward rate limits and, where reads are audited, the audit trail.
Responses
Section titled “Responses”Metadata only. Dates describe recorded workflow state, not proof of notification delivery.
object
Personal: acts as its user, with that user’s current role, in each of their organisations. organization: belongs to one organisation and ignores roles; its scopes alone apply.
The name given to the token when it was created, as shown on the token list.
The token’s last four characters, as shown on the token list.
When the token was last used before this request, recorded to the minute; null if this is its first use.
object
Pass as the cursor parameter for the next page; null on the last page. The Link header carries the same next page.
Example
{ "type": "personal", "name": "Case dashboard", "last_four": "x7Qa", "scopes": [ "reports:read", "channel:read" ], "expires_at": "2027-02-05T10:00:00Z", "last_used_at": "2026-11-09T16:42:00Z", "organizations": [ { "id": "gHiJkl", "name": "Example organisation", "reports_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/reports.json", "channel_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/portal.json", "members_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/members.json", "webhooks_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/webhooks.json", "audit_trail_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/audit_logs.json", "documents_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/whistleblower/documents.json", "billing_url": "https://secure.ethicsportal.eu/organizations/gHiJkl/subscriptions.json" } ], "next_cursor": null}Headers
Section titled “Headers”Weak validator of this response body. Send it back as If-None-Match.
Not modified since the ETag sent in If-None-Match. No body.
Invalid query or cursor
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "invalid_request", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Missing, invalid, expired or revoked bearer token
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "invalid_token", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Headers
Section titled “Headers”Bearer realm=“EthicsPortal”
Required agreement not accepted or permission denied
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "agreement_required", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Missing or inaccessible organisation or resource, or feature disabled
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "not_found", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Rate limit exceeded
object
object
Where to tell EthicsPortal what went wrong: POST product feedback here with the same token.
Example
{ "error": { "code": "rate_limited", "feedback_url": "https://secure.ethicsportal.eu/me/feedback.json" }}Headers
Section titled “Headers”60 seconds