Programmatic access to the PullWeights registry.
https://api.pullweights.com
Include a Bearer token in the Authorization header:
Authorization: Bearer <token-or-api-key>
JWT Token
From POST /v1/auth/login. Short-lived, for web sessions.
API Key
From the dashboard. Long-lived, for CI/CD. Format: pw_...
Scopes: model:readmodel:pushmodel:deletemodel:adminorg:readorg:adminaccount:readaccount:admin
{
"error": {
"code": 404,
"message": "Model not found"
}
}/v1/auth/registerCreate a new account
Request
{ "username": "...", "email": "...", "password": "..." }Response
{ "token": "jwt..." }/v1/auth/loginAuthenticate and receive a JWT
Request
{ "email": "...", "password": "..." }Response
{ "token": "jwt..." }/v1/auth/logoutAuthInvalidate the current session token
/v1/auth/verify-emailVerify email address with token
Request
{ "token": "..." }/v1/auth/forgot-passwordRequest a password reset email
Request
{ "email": "..." }/v1/auth/reset-passwordReset password with token
Request
{ "token": "...", "password": "..." }/v1/accountAuthGet current user profile
/v1/accountAuthUpdate profile (display_name, bio, avatar_url)
Request
{ "display_name": "...", "bio": "..." }/v1/account/passwordAuthChange password
Request
{ "current_password": "...", "new_password": "..." }/v1/accountAuthDelete account permanently
/v1/search?q=...&type=model|dataset&page=1&per_page=20Search models and datasets by name or description. The type parameter is optional and filters by type (defaults to returning all).
/v1/models/:org/:modelGet model details with all versions. Private models require org membership.
/v1/models/:orgList all models in an organization
/v1/models/:org/:model/push/initAuthInitialize a push. Returns presigned upload URLs for each file.
Request
{
"tag": "v1.0",
"visibility": "public",
"description": "...",
"type": "dataset",
"files": [
{ "filename": "model.safetensors", "size_bytes": 14200000000, "sha256": "abc..." }
]
}/v1/models/:org/:model/push/finalizeAuthFinalize a push after all files are uploaded to S3.
Request
{ "push_id": "...", "tag": "v1.0" }/v1/models/:org/:model/pull/:tagAuthGet download tokens for model files. Private models require org membership.
/v1/models/:org/:modelAuthUpdate model metadata — visibility, description, framework, license, tags
Request
{ "visibility": "private", "description": "...", "framework": "pytorch" }/v1/models/:org/:model/tagsList all tags (versions) for a model
/v1/models/:org/:model/manifests/:tagGet file list and checksums without downloading
/v1/models/:org/:modelAuthDelete a model and all versions
/v1/api-keysAuthList all API keys
/v1/api-keysAuthCreate a new API key with scopes and optional restrictions
Request
{
"name": "CI Pipeline",
"scopes": ["model:read", "model:push"],
"allowed_orgs": ["myorg"],
"allowed_models": ["myorg/gpt"],
"allowed_ips": ["1.2.3.4"],
"expires_at": "2026-12-31T00:00:00Z"
}Response
{
"id": "...",
"key": "pw_...",
"prefix": "pw_abc...",
"name": "CI Pipeline",
"scopes": ["model:read", "model:push"]
}/v1/api-keys/:idAuthRevoke an API key
/v1/orgsAuthList your organizations
/v1/orgsAuthCreate a new organization
Request
{ "name": "...", "display_name": "..." }/v1/orgs/:org/inviteAuthInvite a user to an organization
Request
{ "email": "...", "role": "member" }/v1/billingAuthGet current plan and usage
/v1/billing/checkoutAuthCreate a Stripe checkout session for plan upgrade
Request
{ "plan": "pro" }/v1/billing/portalAuthCreate a Stripe portal session for billing management