Production API key returns 403 while Sandbox works and dashboard shows 10/10 trial images

Hello PhotoRoom API Community,

I am integrating the PhotoRoom Image Editing API into an image-processing workflow for M87 Clothing.

The Sandbox API works correctly, but the production API key returns HTTP 403.

Workspace:
Lucadonadio1’s Space

Dashboard status:

  • Free trial: 10 of 10 production images remaining
  • Production usage: 0
  • Production API key is present in the API dashboard
  • No paid API subscription is currently active

Observed production responses:

1. Account endpoint

GET https://image-api.photoroom.com/v2/account

Response:
HTTP 403

{"error":{"message":"Unauthorized"}}

2. Image Editing endpoint

POST https://image-api.photoroom.com/v2/edit

Response:
HTTP 403

{"error":{"message":"You do not have permission to perform this action."}}

The equivalent Image Editing request works successfully in Sandbox mode and returns a watermarked PNG.

I copied the production key again directly from the PhotoRoom API dashboard and verified locally that the key stored in the environment matches the Live key. The API key is passed using the x-api-key header.

No production output image is generated because the request is rejected before image processing begins.

Questions:

  1. Does the 10-image free trial support direct production API calls?
  2. Is an additional onboarding or activation step required for Live API access?
  3. Should GET /v2/account be accessible during the free trial?
  4. Why does Sandbox work while both production endpoints return 403?
  5. Could this be caused by a workspace permission or API entitlement issue?

Standalone code to reproduce (GET /v2/account):

import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("PHOTOROOM_API_KEY")

if not api_key:
    raise RuntimeError("PHOTOROOM_API_KEY is not configured")

request = urllib.request.Request(
    "https://image-api.photoroom.com/v2/account",
    method="GET",
    headers={
        "x-api-key": api_key,
        "Accept": "application/json",
    },
)

try:
    with urllib.request.urlopen(request, timeout=30) as response:
        body = response.read().decode("utf-8", errors="replace")
        print("HTTP status:", response.status)
        print(json.dumps(json.loads(body), indent=2))
except urllib.error.HTTPError as error:
    body = error.read().decode("utf-8", errors="replace")
    print("HTTP status:", error.code)
    print("Response:", body)

No production output image is available because the API returns HTTP 403 before processing the input.

No API keys or secret values are included in this post.

Thank you,
Luca Donadio
M87 Clothing

Hello,

I found two previous staff-confirmed cases that may be relevant:

  • “New Trial Account 402 Issue”: the account was eligible for the free trial, but the credits had not been applied automatically, and PhotoRoom fixed this manually.
  • “Pro Account receiving 402 on Live Key”: PhotoRoom confirmed that no API plan was enabled for the Space until the API subscription was activated.

My case is not identical because I receive HTTP 403 rather than 402, but the pattern is similar:

  • Sandbox works
  • Live key fails
  • Dashboard shows 10/10 trial images available
  • Production usage remains 0

Could a PhotoRoom staff member please verify whether the free-trial credits and Live API entitlement are actually enabled for “Lucadonadio1’s Space”?

Thank you.