# FAQ

For designers and integrators.

Quick answers about keys, limits, files, webhooks, money and AI assistants. Each one links to the guide with the full details. The answers follow the account type you chose at the top of the page.

## Getting started

### What is the base URL, and which version should I use?

Every request goes to `https://public-api.dapi.digital`, with paths starting `/v2`. Use v2 for anything new. v1 keeps working for existing integrations but gets no new features, and it does not accept integrator keys. See the [Quickstart](https://public-api.dapi.digital/docs/guides/quickstart.md).

### How do I get an API key?

Create one on the API keys page of your 3DAPI dashboard, then send it in the `x-api-key` header on every request. Keep it on your server, never in a browser or mobile app. See [Authentication](https://public-api.dapi.digital/docs/guides/authentication.md#api-keys).

### Is there a sandbox or test mode?

No. Every request works on your real account. Test reads freely, and test orders with a small order. Integrators can cover a first test print with the $15 sample credit they get on approval (see [Orders you pay](https://public-api.dapi.digital/docs/guides/integrator-business.md#wallet-orders)).

### Are there SDKs?

There are no official SDKs. The API is described by an OpenAPI 3.1 spec at [/docs/openapi.json](https://public-api.dapi.digital/docs/openapi.json), which works with any client generator. AI tools can read [llms.txt](https://public-api.dapi.digital/docs/llms.txt) for an index of every page.

## Keys and permissions

### Can I limit what a key can do?

Yes. Each key carries scopes, such as `orders:read` or `products:write`. A request outside the key's scopes is refused with `403 missing_scope`. Give each app or assistant its own key with only the scopes it needs. See [Scopes](https://public-api.dapi.digital/docs/guides/authentication.md#scopes).

### Why do I get `actor_not_allowed`?

The endpoint belongs to the other kind of account. Designer and integrator accounts each have their own endpoints, and the reference marks which is which. See [Account kinds](https://public-api.dapi.digital/docs/guides/authentication.md#account-kinds).

### Why can't my key top up the wallet or add a card?

Endpoints that move money into or out of your account (billing details, cards, top-ups, auto top-up and withdrawals) only work from your signed-in dashboard, never with an API key. They answer a key with `credential_not_allowed`.

## Requests, errors and limits

### What are the rate limits?

500 requests per minute per key, plus a tighter 60 per minute for creating quotes, uploads and orders, cancelling orders and money operations. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`. Past a limit you get `429 rate_limited` with a `Retry-After` header. See [Rate limits](https://public-api.dapi.digital/docs/guides/rate-limits.md).

### How should I handle errors?

Every error has the same body. Branch on its `code`, never on the message. When the fix is in your dashboard (billing details, compliance, your plan), `details.fix_url` links to the page. See [Errors](https://public-api.dapi.digital/docs/guides/errors.md).

### What should I send support when a request fails?

The `Request-Id` response header, also in `details.request_id`. Requests are kept in your logs for 30 days.

### How does pagination work?

Lists use cursors. Pass `limit` (1 to 100, default 20), then pass `next_cursor` back as `cursor` while `has_more` is true. Do not edit or build cursors yourself. See [Pagination](https://public-api.dapi.digital/docs/guides/pagination.md).

### Can I safely retry a request that timed out?

Yes, if you send an `Idempotency-Key` header. A retry with the same key within 24 hours returns the first response instead of creating a second order, quote or upload. Reusing a key with a different body is refused. See [Idempotency](https://public-api.dapi.digital/docs/guides/idempotency.md).

### Can I get related objects in one request?

Yes. Add `expand[]=` with the field path, up to three levels deep. The key needs read access to the expanded object, otherwise you get the plain reference back. See [Expanding](https://public-api.dapi.digital/docs/guides/expanding.md).

## Files and webhooks

### How do I send a file?

In three steps: create an upload with `POST /v2/uploads`, PUT the file to the `upload_url` it returns, then pass the upload id in your request. Files never go in a JSON body. Upload ids expire after 24 hours if unused. See [Uploads](https://public-api.dapi.digital/docs/guides/uploads.md).

### How large can files be?

Up to 25 MB for images, attachments and compliance documents, 150 MB for design files, 250 MiB for quote files (`.stl`, `.3mf`, `.obj`, `.step`, `.stp`) and 1 GiB for order files. See [Upload purposes](https://public-api.dapi.digital/docs/guides/uploads.md#purposes).

### How do I know a webhook really came from 3DAPI?

Each delivery is signed with HMAC-SHA256 in the `X-Dapi-Webhook-Signature` header. Check the signature against the raw body and reject timestamps more than 5 minutes old. See [Signatures](https://public-api.dapi.digital/docs/guides/webhooks.md#signatures).

### What happens if my endpoint is down?

Answer with a 2xx within 10 seconds. Otherwise the delivery is retried with growing gaps for 24 hours, so the same event can arrive more than once: deduplicate on `X-Dapi-Event-Id`. Events stay in your log for 30 days and can be sent again. See [Delivery](https://public-api.dapi.digital/docs/guides/webhooks.md#delivery).

## Integrators: approval

### Can I use my seller account as an integrator?

No. Sign up as an integrator with an email that has no 3DAPI seller account. A seller account cannot be converted, and one account cannot be both. See [Your account](https://public-api.dapi.digital/docs/guides/integrator-business.md#accounts).

### How do I get approved?

Quote your files, then send 10 ready quotes for review. People check each file, usually within 24 to 48 hours, and you get an email with the result. See [File requirements](https://public-api.dapi.digital/docs/guides/file-requirements.md).

### What happens if some files are rejected?

Approved files stay approved. Each rejected file comes with a reason, a new round starts, and you only send replacements for the files that were rejected.

### Are there limits before approval?

Yes. You can upload 25 files per round and a set number of quotes per day, reset at midnight UTC. Once you are approved, quotes are unlimited. See [Quotes](https://public-api.dapi.digital/docs/guides/integrator-business.md#quotes).

## Integrators: pricing, wallet and VAT

### What does it cost?

Quoting is free, and there is no monthly fee or minimum quantity. A quote's `price` is the production price of one unit. In wallet mode you pay that plus shipping. In checkout mode your customer pays your sales price plus shipping on a 3DAPI payment page, and you earn the sales price minus the production price and the card fee. See the [Business guide](https://public-api.dapi.digital/docs/guides/integrator-business.md).

### How do I fund my wallet?

From the dashboard: add your billing details, save a card, then top up between $1.00 and $100,000.00. When an order needs more than your balance, the difference is charged to your saved card. Auto top-up does this for you.

### Why do I need billing details?

They appear on your invoices and decide the VAT on your top-ups. Until they are saved, you cannot place orders, add a card or top up.

### Do I pay VAT on top-ups?

Businesses in the EU and UK pay VAT on top-ups unless they have a confirmed VAT number. EU VAT numbers are checked with VIES when you save your billing details: a confirmed number means reverse charge, so no VAT. A number VIES cannot confirm goes to manual review by our team, and VAT is charged until it is approved. Businesses outside the EU and UK pay no VAT.

### What is the sample credit?

$15 added when your account is approved, valid for 30 days. Use it on a wallet order shipped to your own country, with `use_sample_credit: true`. See [Orders you pay](https://public-api.dapi.digital/docs/guides/integrator-business.md#wallet-orders).

### How do I withdraw my earnings?

Checkout earnings reach your wallet when the order is completed. Request a withdrawal from the dashboard with a USD invoice or payment link, at most once every 14 days. The amount is held until it is paid out, and returned if the request is cancelled or rejected.

## Integrators: orders and shipping

### Where do you ship, and how long does it take?

Worldwide, except Russia, Belarus, Iran and Syria. Production takes 3 to 5 business days, then delivery takes 1 to 3 business days locally or 5 to 10 internationally. Estimate shipping before ordering with the shipping endpoints. See [Shipping](https://public-api.dapi.digital/docs/guides/integrator-business.md#shipping).

### Do I get tracking?

Yes. Shipped orders carry the carrier and tracking number, and the `order.shipped` webhook tells you when that happens.

### Do I need an EU responsible person?

Only for checkout-mode orders shipped to the EU or UK when your business is outside the EU and UK. Add one in the dashboard. See [Compliance](https://public-api.dapi.digital/docs/guides/integrator-business.md#compliance).

### Can I cancel an order?

Yes, while it is `paid` (or before a checkout order is paid), for a full refund: to your wallet, or to the card within 5 to 10 business days. After production starts, email [contact@dapi.digital](mailto:contact@dapi.digital). Lost parcels are reprinted. See [Refunds](https://public-api.dapi.digital/docs/guides/integrator-business.md#refunds).

## Designers: what the API does

### What can I automate as a designer?

Products, variants and designs, attachments, stock and stock purchases, extras, orders from every channel, quality-control tickets, compliance documents, webhooks and a read-only view of your wallet. See [Account kinds](https://public-api.dapi.digital/docs/guides/authentication.md#account-kinds).

### Can I place orders through the API?

Yes. `create_order` orders prints of your own variants at cost (production, shipping and VAT where it applies), paid from your wallet, with any shortfall charged to your saved card. You can cancel an order while it is `paid`, for a full refund.

### Can I buy stock through the API?

Yes, if your plan includes prepaid stock. Stock purchases are paid from your wallet balance only.

### Why won't my product publish?

Read `publishing.blockers` on the product. It lists everything still in the way, in the order to fix it: unfinished onboarding, a store not registered as a business or not public, a missing or unapproved design, a missing category, or missing compliance documents. Each public product counts toward your plan's limit.

### Can an AI assistant sync orders from my other shops?

Yes. An assistant connected to your account can place orders from other platforms by SKU. See [Orders from any platform](https://public-api.dapi.digital/docs/guides/orders-from-any-platform.md).

## AI assistants

### Can I use 3DAPI from Claude, ChatGPT or Grok?

Yes. Add `https://mcp.dapi.digital/mcp` as a connector in the app and sign in to 3DAPI. No API key or install needed. See [Connect Claude, ChatGPT or Grok](https://public-api.dapi.digital/docs/guides/connect-ai-apps.md).

### Can an assistant spend my money?

Only if you tick orders and purchases when you connect it. Even then, each order or purchase shows you the cost first and needs your confirmation. ChatGPT never gets orders and purchases. See [Orders and purchases](https://public-api.dapi.digital/docs/guides/connect-ai-apps.md#money).

### Can I run the MCP server myself?

Yes. Run `npx -y @dapi-digital/mcp` with an API key, or install the Claude Desktop extension. Set `DAPI_ALLOW_WRITES=false` for read only, or `DAPI_ALLOW_MONEY=false` to block orders and purchases. See [Connect an AI assistant](https://public-api.dapi.digital/docs/guides/mcp.md).

### How do I disconnect an app?

On the API keys page of your dashboard, under Connected apps. Access ends at once. See [Disconnect an app](https://public-api.dapi.digital/docs/guides/connect-ai-apps.md#disconnect).

## Support

### How do I contact support?

Email [contact@dapi.digital](mailto:contact@dapi.digital). Include the `Request-Id` of any failing request and, for an order, its number.

---

3DAPI API Docs. This page on the web: https://public-api.dapi.digital/docs/guides/faq. Index of every page: https://public-api.dapi.digital/docs/llms.txt.
