---
id: pat-list
title: List personal access tokens
description: >-
  Lists your own personal access tokens. You only ever see the tokens you
  created.
sidebar_label: List personal access tokens
hide_title: true
hide_table_of_contents: true
api: >-
  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
sidebar_class_name: get api-method
info_path: docs/api/authorization
custom_edit_url: null
canonical: 'https://docs.nullplatform.com/docs/api/pat-list'
---
<Heading
  as={"h1"}
  className={"openapi__heading"}
  children={"List personal access tokens"}
>
</Heading>

<MethodEndpoint
  method={"get"}
  path={"/pat"}
  context={"endpoint"}
>

</MethodEndpoint>

Lists your own personal access tokens. You only ever see the tokens you created.

> ℹ️ **Note:** Personal access tokens are managed with your own login session. A request authenticated with an API key, a personal access token included, is rejected with a `403`.

<Heading
  id={"request"}
  as={"h2"}
  className={"openapi-tabs__heading"}
  children={"Request"}
>
</Heading>

<ParamsDetails
  parameters={[{"in":"query","name":"search","description":"Matches a token's name, or the key or value of one of its tags. Case-insensitive, up to 255 characters.","schema":{"type":"string"},"required":false,"example":"mcp"},{"in":"query","name":"status","description":"One or more statuses, separated by commas: `active`, `expiring_soon` (expires within the next 7 days), and `expired`.\n","schema":{"type":"string"},"required":false,"example":"active,expiring_soon"},{"in":"query","name":"expires_at:range","description":"Tokens that expire between two dates, inclusive, as `from,to`. A date without a time covers the whole UTC day.","schema":{"type":"string"},"required":false,"example":"2026-10-01,2026-12-31"},{"in":"query","name":"expires_at:gte","description":"Tokens that expire on or after this date.","schema":{"type":"string"},"required":false,"example":"2026-10-01"},{"in":"query","name":"expires_at:lte","description":"Tokens that expire on or before this date.","schema":{"type":"string"},"required":false,"example":"2026-12-31"},{"in":"query","name":"sort","description":"The order of the results. Tokens never used sort last when sorting by `last_used_at`.","schema":{"type":"string","enum":["name:asc","name:desc","last_used_at:asc_nulls_last","last_used_at:desc_nulls_last"]},"required":false,"example":"name:asc"},{"in":"query","name":"limit","description":"Maximum number of tokens per page, from 1 to 100. Defaults to 30.","schema":{"type":"integer"},"required":false,"example":30},{"in":"query","name":"offset","description":"The number of tokens to skip. Defaults to 0.","schema":{"type":"integer"},"required":false,"example":0}]}
>

</ParamsDetails>

<RequestSchema
  title={"Body"}
  body={undefined}
>

</RequestSchema>

<StatusCodes
  id={undefined}
  label={undefined}
  responses={{"200":{"description":"The operation was successful.","content":{"application/json":{"schema":{"type":"object","required":["paging","results"],"properties":{"paging":{"type":"object","required":["offset","limit"],"properties":{"offset":{"type":"integer","description":"The start of the paging window.","example":0},"limit":{"type":"integer","description":"Maximum number of tokens per page.","example":30},"total":{"type":"integer","description":"The number of tokens that match the filters.","example":5}}},"results":{"type":"array","items":{"type":"object","required":["id","name","access","tags","grants","expires_at","created_at","updated_at"],"properties":{"id":{"type":"integer","description":"Unique ID for the token.","example":1234},"name":{"type":"string","description":"The descriptive name given to the token.","example":"local-scripts"},"masked_api_key":{"type":"string","description":"The token, masked.","example":"AAAAxxxxxPTs="},"access":{"type":"string","enum":["grants","same_as_user"],"description":"Whether the token follows your access (`same_as_user`) or holds its own grants (`grants`).","example":"same_as_user"},"tags":{"type":"array","description":"Tags associated with the token. Empty when it has none.","items":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string","description":"Tag key.","example":"team"},"value":{"type":"string","description":"Tag value.","example":"platform"}}}},"grants":{"type":"array","description":"What the token can do. For a `same_as_user` token, these are your own grants in the organization at the moment of the request. A token that no longer works, because it expired or your user is inactive, reports none.\n","items":{"type":"object","properties":{"id":{"type":"integer","description":"The ID of the grant.","example":5678},"nrn":{"type":"string","description":"The NRN of the resource the grant applies to.","example":"organization=1:account=2"},"role_id":{"type":"integer","description":"The ID of the role granted.","example":700317756},"role_slug":{"type":"string","description":"The slug of the role granted.","example":"developer"},"actions":{"type":"array","description":"The action names the grant resolves to, present when it was created from `actions` or `inherits`.","items":{"type":"string"},"example":["application:read","deployment:create"]}}}},"personal":{"type":"boolean","description":"Always `true` for a personal access token.","example":true},"owner_id":{"type":"integer","description":"The ID of the user who created the token.","example":42},"acting_user_id":{"type":"integer","description":"The ID of the user the token acts as: you.","example":42},"last_used_at":{"type":"string","format":"date-time","nullable":true,"description":"The ISO-8601 UTC timestamp of when the token was last exchanged for an access token.","example":"2026-10-08T12:00:00.000Z"},"expires_at":{"type":"string","format":"date-time","description":"The ISO-8601 UTC timestamp of when the token stops working.","example":"2027-01-06T00:00:00.000Z"},"expired":{"type":"boolean","description":"Whether the token has expired.","example":false},"created_at":{"type":"string","format":"date-time","description":"The ISO-8601 UTC timestamp of when the token was created.","example":"2026-10-08T00:00:00.000Z"},"updated_at":{"type":"string","format":"date-time","description":"The ISO-8601 UTC timestamp of when the token was last updated.","example":"2026-10-08T00:00:00.000Z"}},"title":"patResponse"}}},"title":"patPaginatedResponse"}}}},"4XX":{"description":"The request couldn't be processed. For example, a parameter is invalid, the resource doesn't exist, or you don't have permission. The body is a problem details object (RFC 9457).","content":{"application/problem+json":{"schema":{"type":"object","description":"Describes what went wrong, following the RFC 9457 problem details format.","required":["type","title","status"],"properties":{"type":{"type":"string","description":"A URI that identifies the kind of problem. It's an identifier, not a link, and it's the same every time this problem occurs.","example":"urn:nullplatform:error:routes-helper:invalid-params"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"There are invalid parameters on the request"},"status":{"type":"integer","description":"The HTTP status code of the response.","example":400},"code":{"type":"string","description":"A stable, machine-readable error code. Use it to handle specific errors in your integrations.","example":"ROUTES_HELPER.INVALID_PARAMS"},"detail":{"type":"string","nullable":true,"description":"More information about what went wrong in this request, when available.","example":null},"errors":{"type":"array","description":"One entry per invalid field or parameter. Only present on validation errors.","items":{"type":"object","properties":{"field":{"type":"string","description":"The name of the invalid field or parameter.","example":"application_id"},"in":{"type":"string","description":"Where the field was sent: `body`, `query`, or `params` (path parameters).","example":"query"},"issue":{"type":"string","description":"What's wrong with the field, such as `required` or `invalid`.","example":"invalid"},"value":{"description":"The value that was sent, when relevant.","example":"not-a-number"},"message":{"type":"string","description":"A human-readable explanation of the issue."}}}},"message":{"type":"string","deprecated":true,"description":"Same value as `title`, kept for backward compatibility. Use `title` or `code` instead.","example":"There are invalid parameters on the request"},"traceId":{"type":"string","description":"An identifier for this request, when available. Include it when you contact nullplatform support."}}}}}},"5XX":{"description":"Something went wrong on nullplatform's side. The body is a problem details object (RFC 9457).","content":{"application/problem+json":{"schema":{"type":"object","description":"Describes what went wrong, following the RFC 9457 problem details format.","required":["type","title","status"],"properties":{"type":{"type":"string","description":"A URI that identifies the kind of problem. It's an identifier, not a link, and it's the same every time this problem occurs.","example":"about:blank"},"title":{"type":"string","description":"A short, human-readable summary of the problem.","example":"Oops.. there was an internal error"},"status":{"type":"integer","description":"The HTTP status code of the response.","example":500},"code":{"type":"string","description":"A stable, machine-readable error code. Use it to handle specific errors in your integrations."},"detail":{"type":"string","nullable":true,"description":"More information about what went wrong in this request, when available.","example":null},"message":{"type":"string","deprecated":true,"description":"Same value as `title`, kept for backward compatibility. Use `title` or `code` instead.","example":"Oops.. there was an internal error"},"traceId":{"type":"string","description":"An identifier for this request, when available. Include it when you contact nullplatform support."}}}}}}}}
>

</StatusCodes>

