Get Profile and Workspaces
Retrieve your profile and workspace details using your API key or OAuth token
Updated
/v1/mecurl -X GET "https://api.orshot.com/v1/me" \
-H "Authorization: Bearer <ORSHOT_API_KEY>"const res = await fetch("https://api.orshot.com/v1/me", {
method: "GET",
headers: {
Authorization: "Bearer <ORSHOT_API_KEY>",
},
});
const data = await res.json();import requests
response = requests.get(
"https://api.orshot.com/v1/me",
headers={"Authorization": "Bearer <ORSHOT_API_KEY>"},
)
data = response.json()$ch = curl_init("https://api.orshot.com/v1/me");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <ORSHOT_API_KEY>",
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);require "net/http"
require "json"
uri = URI("https://api.orshot.com/v1/me")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer <ORSHOT_API_KEY>"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)Retrieve your user profile and associated workspaces. Works with both API keys and OAuth access tokens.
- API Key: Returns the single workspace linked to the key
- OAuth Token: Returns the workspaces the token has been granted access to that you still belong to
Endpoint#
https://api.orshot.com/v1/meRequest#
await fetch("https://api.orshot.com/v1/me", {
method: "GET",
headers: {
Authorization: "Bearer <ORSHOT_API_KEY>",
},
});{
"data": {
"user_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "user@example.com",
"name": "John Doe",
"workspaces": [
{
"id": 890,
"name": "My Workspace",
"slug": "my-workspace"
}
],
"plan": {
"title": "Launch39",
"type": "launch",
"interval": "month",
"is_trial": false,
"render_credits": {
"used": 320, "limit": 1500, "remaining": 1180,
"unit": "1 credit = 1 image, 1 PDF page or 1 video second"
},
"ai_credits": {
"used": 12, "limit": 300, "remaining": 288,
"unit": "Shared by AI images, AI video and voiceovers",
"image": { "allowed": true, "credits_per_image": 2 },
"video": {
"allowed": true, "speech": true,
"max_clip_seconds": 15, "max_speech_seconds": 90,
"credits_per_second": 3, "credits_per_second_full_hd": 6
},
"audio": {
"allowed": true, "premium_voices": false,
"max_chars_per_render": 5000, "byok": false,
"credits_per_10s": 1, "premium_credits_per_10s": 2
}
},
"limits": { "members": 2, "workspaces": 2, "rate_per_minute": 100 },
"workflows": { "allowed": true, "max_steps": 5, "max_active_workflows": 3 },
"embed": { "allowed": true },
"video": { "allowed": true }
}
}
}Response Fields#
| Field | Type | Description |
|---|---|---|
user_id | String | Your unique user ID |
email | String | Your email address |
name | String | Your full name |
workspaces | Array | List of workspaces accessible with this token |
workspaces[].id | Number | Workspace ID |
workspaces[].name | String | Workspace name |
workspaces[].slug | String | Workspace slug |
plan | Object | Your current plan and live usage |
plan.render_credits | Object | Template renders this period: used, limit, remaining. 1 credit = 1 image, 1 PDF page or 1 video second |
plan.ai_credits | Object | AI generation this period: used, limit, remaining. One meter shared by AI images, AI video and voiceovers, with each capability nested below |
plan.ai_credits.image | Object | allowed, credits_per_image |
plan.ai_credits.video | Object | allowed, speech (speaking portraits), max_clip_seconds, max_speech_seconds, credits_per_second (HD), credits_per_second_full_hd |
plan.ai_credits.audio | Object | allowed, premium_voices, max_chars_per_render, byok (custom voice provider key), credits_per_10s, premium_credits_per_10s |
plan.limits | Object | Member, workspace and rate limits |
plan.workflows | Object | allowed, max_steps, max_active_workflows |
plan.embed | Object | Whether Orshot Embed is included |
plan.video | Object | Whether video rendering is included |
The same render_credits, ai_credits, limits, workflows, embed and video objects describe every tier in the public plan catalog at GET /v1/plans, without the used and remaining fields.
Reviewers#
A token that acts for a reviewer, like the Orshot MCP server once a reviewer connects it, answers with the reviewer's own user_id, email and name. plan is null, because reviewers don't see the workspace's plan or usage.
{
"data": {
"user_id": "6f1c3a8e-9b2d-4f70-a5e4-1d8b6c3f9a02",
"email": "maya@clientco.com",
"name": "Maya Chen",
"workspaces": [{ "id": 890, "name": "Acme", "slug": "acme" }],
"plan": null
}
}GET /v1/me/user_id also answers with the reviewer's own user_id, email and name.
After you leave a workspace#
With an OAuth token, this endpoint ignores the x-workspace-id header. If you're no longer a member of the token's first workspace, it answers for the first of its other workspaces you still belong to, and workspaces lists only the ones you can still reach. Send one of those IDs in the x-workspace-id header on your next calls.
Other endpoints aimed at a workspace you've left answer 403 with the code workspace_not_accessible, and so does this one when you belong to none of the token's workspaces. See Workspace Not Accessible.
Error Responses#
Unauthorized (401)#
Returned when using an expired or invalid OAuth token.
{
"error": "Access Forbidden",
"message": "Invalid or expired OAuth token",
"code": "oauth_token_invalid"
}Forbidden (403)#
Returned when the API key is missing or invalid.
{
"error": "Access Forbidden"
}Returned with an OAuth token when you no longer belong to any of its workspaces.
{
"error": "Access Forbidden",
"message": "You are no longer a member of this workspace, so this connection can't reach it. Ask an owner or admin to add you again.",
"code": "workspace_not_accessible"
}Ready to automate?
Start rendering images, PDFs and videos from your templates in under 2 minutes. Free plan, no credit card.
Get your API key- Image, PDF and video generation via API
- Visual editor with AI and smart layouts
- Zapier, Make, MCP and 40+ integrations
- White-label embed for your own app
- 100 free credits a month, no credit card required