Get the account profile
GET /v1/me
Returns the profile of the account that owns the API key: a display name, a one-character initial, a masked email hint and, when the account has a profile picture, the URL and ETag of that picture. The response contains exactly these fields and never the full email address.
Requires an API key, sent as Authorization: Bearer <key> or in the x-api-key header; when both are sent, Authorization is used. Missing and invalid keys return the same errors as GET /v1/models. Only account API keys (sk-devup-...) are accepted: a scoped token returns HTTP 403 scoped_token_not_allowed. The response is sent with Cache-Control: private, max-age=300. The request is not billed and counts against the account's per-minute rate limit.
Authentication
Bearer API key required.
Responses
HTTP 200
The account profile.
application/json
AccountProfileAn account with a profile picture
{
"object": "account_profile",
"display_name": "Ada Lovelace",
"initial": "A",
"email_hint": "a•••@example.com",
"avatar": {
"url": "https://api.devupai.com/v1/me/avatar",
"etag": "\"3f2a9c1b7d4e6a58\""
}
}An account with no name and no profile picture
{
"object": "account_profile",
"display_name": null,
"initial": "A",
"email_hint": "a•••@example.com",
"avatar": null
}HTTP 401
Missing, empty, or revoked API key.
This response covers three distinct codes depending on the authentication path:
- missing_api_key: Authorization header absent or Bearer token is empty. On GET /v1/models, GET /v1/models/{model}, GET /v1/me and GET /v1/me/avatar, which also accept the x-api-key header, the message is "Provide your API key as: Authorization: Bearer sk-devup-..., or in the x-api-key header."
- invalid_api_key: Key not found, deactivated, or not valid.
- token_revoked: The scoped JWT credential has been explicitly revoked.
application/json
ErrorResponseAuthorization header absent or empty Bearer token
{
"error": {
"message": "Provide your API key as: Authorization: Bearer sk-devup-...",
"type": "devup_error",
"code": "missing_api_key"
}
}Key not found, deactivated, or not valid
{
"error": {
"message": "The API key provided is invalid or has been deactivated.",
"type": "devup_error",
"code": "invalid_api_key"
}
}Scoped JWT credential has been explicitly revoked (scoped-token auth only)
{
"error": {
"message": "This scoped token has been revoked.",
"type": "devup_error",
"code": "token_revoked"
}
}HTTP 403
Account suspended or scoped credential does not permit the requested model.
- account_suspended: The DEVUP account is suspended; all requests are blocked.
- model_not_allowed: The scoped credential does not grant access to the requested model.
This code is never returned for unrestricted master API keys.
- scoped_token_not_allowed: On GET /v1/me and GET /v1/me/avatar, which accept
account API keys (sk-devup-...) only, a scoped token was sent.
application/json
ErrorResponseDEVUP account is suspended
{
"error": {
"message": "Account suspended. Contact support.",
"type": "devup_error",
"code": "account_suspended"
}
}Scoped credential does not permit the requested model (scoped-token auth only)
{
"error": {
"message": "This scoped token does not grant access to the requested model.",
"type": "devup_error",
"code": "model_not_allowed"
}
}HTTP 429
Too many requests. error.code is rate_limit_exceeded (your account's per-minute limit), model_at_capacity (the model is momentarily at capacity; Retry-After: 5 and retry-after-ms: 5000, no X-RateLimit-* headers; the OpenAI and Anthropic SDKs retry it automatically), concurrency_limit_exceeded, tpm_limit_exceeded, or flex_capacity_unavailable. Wait the number of seconds in Retry-After before retrying.
application/json
ErrorResponseYour account's per-minute limit is reached
{
"error": {
"message": "Rate limit exceeded. Please slow down your requests and try again shortly.",
"type": "devup_error",
"code": "rate_limit_exceeded"
}
}The model is momentarily at capacity
{
"error": {
"message": "This model is currently at capacity. Retry in a few seconds.",
"type": "devup_error",
"code": "model_at_capacity"
}
}HTTP 503
Requests are temporarily paused or the requested model is temporarily unavailable. Retry according to the delay communicated in Retry-After and/or retry-after-ms when present.
application/json
ErrorResponseRequests are paused for a few seconds
{
"error": {
"message": "Requests are paused for a few seconds. Retry after the delay in the Retry-After header.",
"type": "devup_error",
"code": "service_unavailable"
}
}The requested model is temporarily unavailable
{
"error": {
"message": "The requested model is temporarily unavailable. Retry shortly.",
"type": "devup_error",
"code": "model_unavailable"
}
}