> For the complete documentation index, see [llms.txt](https://docs.twistly.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.twistly.ai/api/account.md).

# Account

API key validation and account information.

## Validate API key and get account info

> Lightweight key-validation endpoint. Returns the account associated with the provided API key — useful as an authentication test (e.g., for Zapier or other integration platforms) and for checking remaining credits. Returns \`401 UNAUTHORIZED\` if the key is missing or invalid.<br>

```json
{"openapi":"3.1.0","info":{"title":"Twistly Presentation Generation API","version":"1.0.0"},"tags":[{"name":"Account","description":"API key validation and account information."}],"servers":[{"url":"https://api.appsdowonders.com","description":"Production"}],"security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"ppsk_ API key","description":"Recommended. Pass your API key (starts with `ppsk_`) as `Authorization: Bearer ppsk_…`. One active key per Pro/Team account — to rotate, revoke the old one first.\n"},"apiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Alternative to bearer auth. Pass your `ppsk_` key in the `x-api-key` header."}},"schemas":{"Me":{"type":"object","description":"Account associated with the API key.","required":["userId","email","plan","credits"],"properties":{"userId":{"type":"integer","description":"Internal account id."},"email":{"type":"string","format":"email","description":"Account owner's email address."},"plan":{"type":"string","description":"Subscription plan of the account (e.g., `pro`, `team`)."},"credits":{"type":"object","required":["remaining"],"properties":{"remaining":{"type":["integer","null"],"description":"Remaining generation credits. `null` for internal/unlimited keys.\n"}}}}},"ErrorResponse":{"type":"object","description":"Uniform error envelope for all 4xx/5xx responses.","required":["error"],"properties":{"error":{"type":"object","required":["code","message","status"],"properties":{"code":{"type":"string","enum":["BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","UNPROCESSABLE_ENTITY","RATE_LIMIT_EXCEEDED","INTERNAL_SERVER_ERROR"]},"message":{"type":"string","description":"Human-readable message. For invalid enum fields, lists the allowed values.\n"},"status":{"type":"integer","description":"HTTP status code mirrored in the body."},"request_id":{"type":"string","description":"Present only on 5xx — include in support tickets."}},"additionalProperties":true}}}},"responses":{"Unauthorized":{"description":"API key missing or wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InternalServerError":{"description":"Server-side failure — retry, and include `request_id` when reporting.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"paths":{"/v1/me":{"get":{"tags":["Account"],"operationId":"getMe","summary":"Validate API key and get account info","description":"Lightweight key-validation endpoint. Returns the account associated with the provided API key — useful as an authentication test (e.g., for Zapier or other integration platforms) and for checking remaining credits. Returns `401 UNAUTHORIZED` if the key is missing or invalid.\n","responses":{"200":{"description":"The account associated with the API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"500":{"$ref":"#/components/responses/InternalServerError"}}}}}}
```
