> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://contentful.com/developers/docs/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://contentful.com/_mcp/server. # Get a profile GET https://experience.ninetailed.co/v2/organizations/{organizationId}/environments/{environmentSlug}/profiles/{profileId} Returns a profile with its currently selected experience variants. The `organizationId` is the **Client ID** from **Settings → SDK Keys → Optimization**. Reference: https://contentful.com/developers/docs/references/experience-api/profiles/get-a-profile ## Request ### Path parameters - `environmentSlug` (string, required, default: main) — The slug of the environment of the profile to retrieve - `organizationId` (string, required) — The ID of the organization of the profile to retrieve - `profileId` (string, required) — The ID of the profile to retrieve ### Query parameters - `locale` (string, optional, default: en) — An ISO 639-1 language code used for experience evaluation. ## Response ### 200 Successful response ## Errors ### 400 Bad Request Error Bad Request - `message` (string, required) - `data` (BadRequestData, required) - `error` (BadRequestError, optional) ### 404 Not Found Error Profile not found - `GetAProfileRequestNotFoundError` ### 429 Too Many Requests Error Profile overload - `GetAProfileRequestTooManyRequestsError` ### 500 Internal Server Error Internal server error - `message` (string, required) - `data` (InternalServerErrorData, required) - `error` (InternalServerErrorError, optional) ## Types ### BadRequestData ### BadRequestError - `code` (string, optional) ### profileNotFoundError - `message` (string, required) - `data` (ProfileNotFoundErrorData, required) - `error` (ProfileNotFoundErrorError, optional) ### notFoundError - `message` (string, required) - `data` (NotFoundErrorData, required) - `error` (NotFoundErrorError, optional) ### profileOverloadError - `message` (string, required) - `data` (ProfileOverloadErrorData, required) - `error` (ProfileOverloadErrorError, optional) ### tooManyRequests - `message` (string, required) - `data` (TooManyRequestsData, required) - `error` (TooManyRequestsError, optional) ### InternalServerErrorData ### InternalServerErrorError - `code` (string, optional) ### ProfileNotFoundErrorData ### ProfileNotFoundErrorError - `code` (string, optional) ### NotFoundErrorData ### NotFoundErrorError - `code` (string, optional) ### ProfileOverloadErrorData ### ProfileOverloadErrorError - `code` (string, optional) ### TooManyRequestsData ### TooManyRequestsError - `code` (string, optional) ## Examples **Response** ```json { "data": { "changes": [], "experiences": [ { "experienceId": "exp-1", "variantIndex": 1, "variants": { "entryA": "entryB" } } ], "profile": { "audiences": [ "audience-1" ], "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "location": {}, "random": 0.42, "session": {}, "stableId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "traits": { "favAnimal": "fox" } } }, "error": null, "message": "ok" } ``` **SDK Code** ```javascript JavaScript const response = await fetch('https://experience.ninetailed.co/v2/organizations/{organizationId}/environments/{environmentSlug}/profiles/{profileId}', { method: 'GET', headers: {}, }); const data = await response.json(); ``` ```python Python import requests response = requests.get( "https://experience.ninetailed.co/v2/organizations/{organizationId}/environments/{environmentSlug}/profiles/{profileId}", headers={}, ) data = response.json() ``` ```http HTTP GET /v2/organizations/{organizationId}/environments/{environmentSlug}/profiles/{profileId} HTTP/1.1 Host: experience.ninetailed.co Accept: */* ```