Your image workflow, in code.

Upload a photo, remove embedded metadata and download the copy. Website and API usage share your credits.

Download the OpenAPI specification

1. Create an API key.

Sign in and open API access. Give your integration a name and select only the permissions it needs. The full key is shown once. Save it in a secret manager or server environment variable.

Send Authorization: Bearer YOUR_API_KEY with every request. All paths below start at https://deprint.ai/api/v1. Use HTTPS. Do not put keys in URLs, browser code or logs.

curl https://deprint.ai/api/v1/account \
  -H "Authorization: Bearer $DEPRINT_API_KEY"

A key can access only its owner’s data and its selected permissions. Give an automation keys:write only if it needs to create or revoke keys. Initial account sign-up and recovery use Clerk’s secure account screens.

2. Upload and export.

Send one JPEG, PNG or WebP image in the multipart file field. Maximum file size is 3 MiB; maximum decoded size is 25 megapixels. Animated files are not accepted. A successful export costs one credit.

curl https://deprint.ai/api/v1/images \
  -H "Authorization: Bearer $DEPRINT_API_KEY" \
  -H "Idempotency-Key: photo-2026-001" \
  -F "file=@photo.jpg"

The response contains an image with its ID, file dimensions, hashes, private URLs and processing result. A metadata export reports metadata: "removed" and synthid: "not_processed". It does not claim watermark removal.

curl -L https://deprint.ai/api/v1/images/IMAGE_ID/download \
  -H "Authorization: Bearer $DEPRINT_API_KEY" \
  --output export.jpg

curl -X DELETE https://deprint.ai/api/v1/images/IMAGE_ID \
  -H "Authorization: Bearer $DEPRINT_API_KEY"

Download links expire after five minutes. Request a new link when needed. Keep the bearer key on your server; signed links themselves grant temporary access to the file.

3. Check credits and add more.

Your account starts with 25 free credits. Website and API exports share one balance. Read /account for available and reserved credits, /usage for consumption, and /billing for purchases and receipts.

curl https://deprint.ai/api/v1/billing/checkout \
  -H "Authorization: Bearer $DEPRINT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: top-up-2026-001" \
  -d '{"pack":"credits_1000"}'

When purchases are enabled, this returns a Stripe checkout url. Open it to approve the one-time $10 USD payment for 1,000 credits. Payment details stay with Stripe. Credits arrive after verified payment confirmation, not from visiting a return URL. Check your balance before submitting more work.

This does not create a subscription or authorize automatic top-ups. Billing is unavailable if the payment connection is not ready.

SynthID jobs — currently unavailable
curl https://deprint.ai/api/v1/jobs \
  -H "Authorization: Bearer $DEPRINT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: synthid-photo-001" \
  -d '{"imageId":"IMAGE_ID","operation":"synthid_remove"}'

The job interface is prepared for Cosmo processing. While no processor is connected, it returns 503 with an unavailable job and consumes no credit. Use the returned ID to read its status. Do not treat job creation or metadata cleanup as a successful SynthID removal.

Endpoints and permissions
MethodPathPermissionPurpose
GET/accountaccount:readCredit balance and successful export totals.
GET/usageaccount:readUsage summary and daily totals; optional since and until dates.
GET / POST/keyskeys:writeList keys or create a named key with selected scopes.
DELETE/keys/{id}keys:writeRevoke a key, including the key making the request.
GET / POST/imagesimages:read / images:writeList images or upload a multipart file for metadata cleanup.
GET / DELETE/images/{id}images:read / images:writeRead an owned image or delete its original and export.
GET/images/{id}/downloadimages:read302 redirect to a short-lived private export URL.
GET / POST/jobsjobs:read / jobs:writeList jobs or request SynthID processing for an owned image.
GET/jobs/{id}jobs:readRead the durable processing state.
POST/jobs/{id}/canceljobs:writeCancel an eligible processing job.
GET/billingaccount:readPurchase availability, pricing and your receipt history.
POST/billing/checkoutbilling:writeCreate a hosted checkout URL for a credit pack.

Only authenticated account data is returned. Account identity comes from your credential; an owner ID in the request body never grants access.

Connect an assistant with MCP.

Use https://deprint.ai/api/mcp with a client that supports Streamable HTTP and an Authorization header. Create a separate API key with only account:read, images:read and jobs:read as needed.

{
  "url": "https://deprint.ai/api/mcp",
  "headers": { "Authorization": "Bearer YOUR_DEPRINT_API_KEY" }
}

Your assistant can read your balance and usage, find your images, retrieve their details and request a private download link. Job lists use a cursor. Only tools allowed by the key are offered. Private links expire after five minutes.

MCP does not upload, delete, buy credits or start processing. Use the REST API for those actions. This endpoint uses API keys; clients that require OAuth discovery are not supported. Store the key in your client’s secret settings, never in a shared prompt or public config.

Retries, errors and limits

Send a stable Idempotency-Key for uploads, processing jobs and checkout. Reuse it only when retrying the same request. A different payload with the same key returns a conflict. Use a new key for a genuinely new operation. If an upload returns 202 or its response is lost, keep the same key and poll GET /api/v1/exports/{idempotencyKey}. A reserved request is still running; only a confirmed refunded request can safely start again with a new key.

Errors are JSON with an error field. Handle 400 invalid input, 401 invalid authentication, 403 missing permission, 404 unavailable or unowned resource, 402 insufficient credits, 409 request conflict, 410 a previously completed export was deleted, 413 oversized upload, 429 quota or rate limit, and 503 temporary service unavailability. Insufficient credits prevent a new paid operation.

Back off on temporary failures. Do not repeatedly retry an unavailable Cosmo operation until availability changes. A network timeout is not proof of failure; retry with the original idempotency key to recover the recorded outcome.

Requests are limited to 60 per account per minute across the website API and all API keys. Respect the Retry-After header on a rate-limit response. You can have 20 active keys. Lists return up to 100 images, jobs or purchases; key lists include active keys only. Storage is limited to 100 images and 100 MiB per account, counting both originals and exports. Delete files you no longer need. API keys do not bypass storage limits or billing.

Usage totals cover the account lifetime by default, with the last 30 days of daily detail. For a date range, supply both since and until, up to 366 days.

Need help? Contact support@deprint.ai with the request or image ID, not your API key or a private photo.