Development — entry 022 of 100

Docker Hub

Verified Jul 2026

Docker Hub's API manages image repositories, tags, organizations, and access tokens for the world's largest container registry, authenticating via a personal access token used directly or exchanged for a short-lived bearer JWT. The free Personal tier covers unlimited public repositories with rate-limited pulls; paid Pro, Team, and Business plans raise pull-rate limits and add private repositories.

containersregistryimagesdevops
AuthenticationAPI KeySign up with the provider to obtain credentials.
HTTPSSupportedTraffic is encrypted in transit.
CORSDisabledBrowser calls need a server-side proxy.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score81out of 100
Authentication15/25API key required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 81 on greatapis.com
<a href="https://greatapis.com/api/docker-hub/"><img src="https://greatapis.com/badge/docker-hub.svg" alt="Scored 81 on greatapis.com"></a>

Auth quickstart

  1. Sign up with the provider to get an API key.
  2. Send it on every request as a headerAuthorization: <key>
  3. The exact header isn't documented — Authorization is a common default; confirm in the provider's docs.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://hub.docker.com/https://docker.com/{version}
authentication2

Most Docker Hub API endpoints require you to authenticate using your Docker credentials before using them. Additionally, similar to the Docker Hub UI features, API endpoint responses may vary depending on your plan (Free, Pro, or Team) and your account's permissions. To learn more about the features available in each plan and to upgrade your existing plan, see [Docker Pricing](https://www.docker.com/pricing).

POST/v2/users/2fa-loginSecond factor authentication.
Request body

application/jsonUsers2FALoginRequest (required)

Responses
StatusDescriptionSchema
200Authentication successfulPostUsersLoginSuccessResponse
401Authentication failed or second factor requiredPostUsers2FALoginErrorResponse
POST/v2/users/loginCreate an authentication token
Request body

application/jsonUsersLoginRequest (required)

Responses
StatusDescriptionSchema
200Authentication successfulPostUsersLoginSuccessResponse
401Authentication failed or second factor requiredPostUsersLoginErrorResponse
access-tokens5

The Personal Access Token endpoints lets you manage personal access tokens. For more information, see [Access Tokens](https://docs.docker.com/docker-hub/access-tokens/). You can use a personal access token instead of a password in the [Docker CLI](https://docs.docker.com/engine/reference/commandline/cli/) or in the [Create an authentication token](#operation/PostUsersLogin) route to obtain a bearer token. ### Scopes For each scope grouping (in this case "repo"), you only need to define 1 scope as any lower scopes are assumed. For example: If you define `repo:write`, the API assumes the scope of both `repo:read` *and* `repo:public_read` as well. If you were to define both `repo:write` *and* `repo:read`, then `repo:read` is assumed by `repo:write` and ignored. ***Treat your personal access token like your password and keep it secret. You cannot retrieve your token after it is generated.***

GET/v2/access-tokensGet a list of personal access tokens
Parameters
NameInRequiredType
pagequerynonumber
page_sizequerynonumber
Responses
StatusDescriptionSchema
200OKgetAccessTokensResponse
400
401
POST/v2/access-tokensCreate a personal access token
Request body

application/jsoncreateAccessTokenRequest (required)

Responses
StatusDescriptionSchema
201CreatedcreateAccessTokensResponse
400
401
GET/v2/access-tokens/{uuid}Get a personal access token
Parameters
NameInRequiredType
uuidpathyesstring
Responses
StatusDescriptionSchema
200OK
401
404
PATCH/v2/access-tokens/{uuid}Update a personal access token
Parameters
NameInRequiredType
uuidpathyesstring
Request body

application/jsonpatchAccessTokenRequest (required)

Responses
StatusDescriptionSchema
200OKpatchAccessTokenResponse
400
401
DELETE/v2/access-tokens/{uuid}Delete a personal access token
Parameters
NameInRequiredType
uuidpathyesstring
Responses
StatusDescriptionSchema
204A successful response.
401
404
images4

The Advanced Image Management API endpoints allow you to manage Docker images across all repositories. For more information, see [Advanced Image Management dashboard](https://docs.docker.com/docker-hub/image-management/).

POST/v2/namespaces/{namespace}/delete-imagesDelete images
Parameters
NameInRequiredType
namespacepathyesstring
Request body

application/jsonPostNamespacesDeleteImagesRequest (required)

Responses
StatusDescriptionSchema
200Deletion completedPostNamespacesDeleteImagesResponseSuccess
400Deletion not possiblePostNamespacesDeleteImagesResponseError
403Forbidden - this API is only available to users on Pro or Team plansErrorResponse
GET/v2/namespaces/{namespace}/repositories/{repository}/imagesGet details of repository's images
Parameters
NameInRequiredType
namespacepathyesstring
repositorypathyesstring
statusquerynostring
currently_taggedquerynoboolean
orderingquerynostring
active_fromquerynostring
pagequerynointeger
page_sizequerynointeger
Responses
StatusDescriptionSchema
200SuccessGetNamespaceRepositoryImagesResponse
401Unauthorized - user does not have read access to the namespace.ErrorResponse
403Forbidden - this API is only available to users on Pro or Team plans.ErrorResponse
GET/v2/namespaces/{namespace}/repositories/{repository}/images-summaryGet summary of repository's images
Parameters
NameInRequiredType
namespacepathyesstring
repositorypathyesstring
active_fromquerynostring
Responses
StatusDescriptionSchema
200SuccessGetNamespaceRepositoryImagesSummaryResponse
401Unauthorized - user does not have read access to the namespaceErrorResponse
GET/v2/namespaces/{namespace}/repositories/{repository}/images/{digest}/tagsGet image's tags
Parameters
NameInRequiredType
namespacepathyesstring
repositorypathyesstring
digestpathyesstring
pagequerynointeger
page_sizequerynointeger
Responses
StatusDescriptionSchema
200SuccessGetNamespaceRepositoryImagesTagsResponse
401Unauthorized - user does not have read access to the namespaceErrorResponse
403Forbidden - this API is only available to users on Pro or Team plansErrorResponse
audit-logs2

The Audit Logs API endpoints allow you to query audit log events across a namespace. For more information, see [Audit Log](https://docs.docker.com/docker-hub/audit-log/)

GET/v2/auditlogs/{account}Returns list of audit log events.
Parameters
NameInRequiredType
accountpathyesstring
actionquerynostring
namequerynostring
actorquerynostring
fromquerynostring
toquerynostring
pagequerynointeger
page_sizequerynointeger
Responses
StatusDescriptionSchema
200A successful response.GetAuditLogsResponse
429
500
defaultAn unexpected error response.rpcStatus
GET/v2/auditlogs/{account}/actionsReturns list of audit log actions.
Parameters
NameInRequiredType
accountpathyesstring
Responses
StatusDescriptionSchema
200A successful response.GetAuditActionsResponse
429
500
defaultAn unexpected error response.rpcStatus
org-settings2

The Org Settings API endpoints allow you to manage your organization's settings.

GET/v2/orgs/{name}/settingsGet organization settings
Parameters
NameInRequiredType
namepathyesstring
Responses
StatusDescriptionSchema
200OKorgSettings
401
403
404
PUT/v2/orgs/{name}/settingsUpdate organization settings
Parameters
NameInRequiredType
namepathyesstring
Request body

application/json (required)

Responses
StatusDescriptionSchema
200OKorgSettings
401
403
404
repositories4

The repository endpoints allow you to manage your repository's configuration like description.

GET/v2/namespaces/{namespace}/repositories/{repository}/tagsList repository tags
Responses
StatusDescriptionSchema
200
403
404
HEAD/v2/namespaces/{namespace}/repositories/{repository}/tagsCheck repository tags
Responses
StatusDescriptionSchema
200Repository contains tags
403
404
GET/v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}Read repository tag
Responses
StatusDescriptionSchema
200
403
404
HEAD/v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}Check repository tag
Responses
StatusDescriptionSchema
200Repository tag exists
403
404
scim9

SCIM is a provisioning system that lets you manage users within your identity provider (IdP). For more information, see [System for Cross-domain Identity management](https://docs.docker.com/docker-hub/scim/).

GET/v2/scim/2.0/ResourceTypesList resource types
Responses
StatusDescriptionSchema
200
401
500
GET/v2/scim/2.0/ResourceTypes/{name}Get a resource type
Parameters
NameInRequiredType
namepathyesstring
Responses
StatusDescriptionSchema
200
401
404
500
GET/v2/scim/2.0/SchemasList schemas
Responses
StatusDescriptionSchema
200
401
500
GET/v2/scim/2.0/Schemas/{id}Get a schema
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200
401
404
500
GET/v2/scim/2.0/ServiceProviderConfigGet service provider config
Responses
StatusDescriptionSchema
200
401
500
GET/v2/scim/2.0/UsersList users
Parameters
NameInRequiredType
startIndexquerynointeger
countquerynointeger
filterquerynostring
sortOrderquerynostring
sortByquerynostring
Responses
StatusDescriptionSchema
200
400
401
403
404
500
POST/v2/scim/2.0/UsersCreate user
Responses
StatusDescriptionSchema
201
400
401
403
404
409
500
GET/v2/scim/2.0/Users/{id}Get a user
Responses
StatusDescriptionSchema
200
400
401
403
404
500
PUT/v2/scim/2.0/Users/{id}Update a user
Responses
StatusDescriptionSchema
200
400
401
403
404
409
500

Try it

Developer reference

Base URLhttps://hub.docker.com
Rate limit

180 requests/min per IP on the Hub API, confirmed live via `x-ratelimit-limit: 180` on hub.docker.com — distinct from image *pull* rate limits (100/6h anonymous, 200/6h authenticated-free), which apply to registry pulls, not these API calls.

Key endpoints
  • GET/v2/namespaces/{namespace}/repositories/{repository}/tags
  • GET/v2/namespaces/{namespace}/repositories/{repository}/tags/{tag}
  • GET/v2/namespaces/{namespace}/repositories/{repository}/images
  • POST/v2/users/login
  • GET/v2/access-tokens