Integrator account

View as Markdown

Your integrator account: names, sign-in email and password, and your EU responsible person. Integrators only, from a signed-in dashboard session.

The eu responsible person object

A GPSR EU responsible person record. Records are never edited: replacing one disables it and adds a new one.

Attributes

  • idstring

    Unique identifier of the eu responsible person, prefixed with erp_. Treat it as an opaque string: store it and compare it, never parse it.

  • objectstring

    Names the type of this object. Always eu_responsible_person.

  • company_namestring or null

    The responsible person, a company established in the EU or UK.

  • emailstring or null

    Where authorities and buyers can reach it.

  • addressstring or null

    Its postal address.

  • countrystring or null

    ISO 3166-1 alpha-2 country code: an EU member state or GB (United Kingdom).

  • activeboolean

    Whether it is the current responsible person. At most one is active; the others are history.

  • created_attimestamp

    Point in time, ISO 8601 in UTC.

  • disabled_attimestamp or null

    When it stopped being the responsible person (replaced or removed). Null while active.

The eu responsible person object
null

Get your account settings

GET/v2/integrator/account

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
get_integrator_account

Returns your account id, sign-in email (and a new one waiting for confirmation), company and contact name, and when the account was created.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Returns200 OK

Your account settings.

Responses

  • 200

    Your account settings.

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

GET/v2/integrator/account
curl "https://public-api.dapi.digital/v2/integrator/account" \
  -H "x-api-key: $DAPI_API_KEY"
Response
{
  "id": "itg_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
  "object": "integrator_account_settings",
  "email": "dev@acme.example",
  "pending_email": null,
  "company_name": "Acme Prints",
  "contact_name": "Ada Lovelace",
  "created_at": "2026-10-20T09:00:00Z"
}

Update your company or contact name

PATCH/v2/integrator/account

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
update_integrator_account

Changes only the fields sent. Billing details and the sign-in email have their own operations.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Request body

  • company_namestring

    Your company name, shown in the dashboard and to 3DAPI staff. Omit to keep it.

  • contact_namestring or null

    Null or an empty string clears it.

Returns200 OK

Saved. Your account settings.

Responses

  • 200

    Saved. Your account settings.

  • 400

    The request is invalid. details.errors lists each problem (validation_failed), or an expand[] path is unknown (invalid_expand).

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

PATCH/v2/integrator/account
curl -X PATCH "https://public-api.dapi.digital/v2/integrator/account" \
  -H "x-api-key: $DAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contact_name": "Ada Lovelace"
}'
Response
{
  "id": "itg_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
  "object": "integrator_account_settings",
  "email": "dev@acme.example",
  "pending_email": null,
  "company_name": "Acme Prints",
  "contact_name": "Ada Lovelace",
  "created_at": "2026-10-20T09:00:00Z"
}

Change your password

POST/v2/integrator/account/password

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
change_integrator_password

Sets a new sign-in password after checking the current one, and emails your sign-in address that it changed. Sessions already open stay signed in.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Request body

  • current_passwordstringRequired

    The password you sign in with now.

  • new_passwordstringRequired

    The new password, 8 to 72 characters.

Returns204 No Content

The password was changed.

Responses

  • 204

    The password was changed.

  • 400

    The request is invalid (validation_failed), the new password is the current one (same_password), or the sign-in service refused it as too weak (weak_password).

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 422

    The current password is not correct (current_password_incorrect).

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

  • 503

    Sign-in details cannot be changed right now (account_service_unavailable).

Errors use the error object.

POST/v2/integrator/account/password
curl -X POST "https://public-api.dapi.digital/v2/integrator/account/password" \
  -H "x-api-key: $DAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "current_password": "correct-horse-battery",
  "new_password": "staple-violet-orbit"
}'
Response
null

Change your sign-in email

POST/v2/integrator/account/email-change

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
request_integrator_email_change

Emails a confirmation link to the new address, and to your current address when the sign-in service asks both to confirm (confirm_current_email). Nothing changes until the links are opened; until then the account signs in with its current email and shows the new one as pending_email. Asking again replaces the earlier links.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Request body

  • emailstringRequired

    The address to sign in with from now on.

Returns202 Accepted

The confirmation email(s) were sent.

Responses

  • 202

    The confirmation email(s) were sent.

  • 400

    The request is invalid (validation_failed), or the address is the one you already sign in with (email_unchanged).

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 409

    Another account uses this address (email_taken).

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

  • 503

    Sign-in details cannot be changed right now (account_service_unavailable), or the confirmation email could not be sent (email_not_sent).

Errors use the error object.

POST/v2/integrator/account/email-change
curl -X POST "https://public-api.dapi.digital/v2/integrator/account/email-change" \
  -H "x-api-key: $DAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "email": "ops@acme.example"
}'
Response
{
  "object": "email_change",
  "new_email": "ops@acme.example",
  "confirm_current_email": true
}

Get your EU responsible person

GET/v2/integrator/eu-responsible-person

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
get_eu_responsible_person

Returns your EU responsible person, earlier ones, and whether you need one. Under the GPSR, products sold to buyers in the EU or UK need a responsible person established there. A business billed outside the EU and UK needs one before its checkout orders can ship to EU or UK addresses; orders to other countries, and wallet orders, do not.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Returns200 OK

Your EU responsible person status.

Responses

  • 200

    Your EU responsible person status.

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

GET/v2/integrator/eu-responsible-person
curl "https://public-api.dapi.digital/v2/integrator/eu-responsible-person" \
  -H "x-api-key: $DAPI_API_KEY"
Response
{
  "object": "eu_responsible_person_status",
  "required": true,
  "billing_country": "US",
  "status": "active",
  "active": {
    "id": "erp_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
    "object": "eu_responsible_person",
    "company_name": "EU Rep GmbH",
    "email": "contact@eurep.example",
    "address": "Hauptstr. 1, 10115 Berlin",
    "country": "DE",
    "active": true,
    "created_at": "2026-10-20T09:00:00Z",
    "disabled_at": null
  },
  "previous": []
}

Add or replace your EU responsible person

PUT/v2/integrator/eu-responsible-person

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
set_eu_responsible_person

Makes this company your active EU responsible person. A current one is disabled and kept in previous; records are never edited. Takes effect at once for new orders.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Request body

  • company_namestringRequired

    Legal name of the EU responsible person, a company established in the EU.

  • emailstringRequired

    Email where authorities can reach the EU responsible person.

  • addressstringRequired

    Street, number, postal code and city.

  • countrystringRequired

    ISO 3166-1 alpha-2 code of an EU member state, or GB. Any other country is refused.

Returns200 OK

Saved. Your EU responsible person status.

Responses

  • 200

    Saved. Your EU responsible person status.

  • 400

    The request is invalid. details.errors lists each problem (validation_failed), or an expand[] path is unknown (invalid_expand).

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 422

    The country is not an EU member state or the United Kingdom (country_not_eu_or_uk). Nothing was saved.

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

PUT/v2/integrator/eu-responsible-person
curl -X PUT "https://public-api.dapi.digital/v2/integrator/eu-responsible-person" \
  -H "x-api-key: $DAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "company_name": "EU Rep GmbH",
  "email": "contact@eurep.example",
  "address": "Hauptstr. 1, 10115 Berlin",
  "country": "DE"
}'
Response
{
  "object": "eu_responsible_person_status",
  "required": true,
  "billing_country": "US",
  "status": "active",
  "active": {
    "id": "erp_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
    "object": "eu_responsible_person",
    "company_name": "EU Rep GmbH",
    "email": "contact@eurep.example",
    "address": "Hauptstr. 1, 10115 Berlin",
    "country": "DE",
    "active": true,
    "created_at": "2026-10-20T09:00:00Z",
    "disabled_at": null
  },
  "previous": []
}

Remove your EU responsible person

DELETE/v2/integrator/eu-responsible-person

Credentials
A signed-in dashboard session only; API keys are refused.
For
Integrators
Operation id
remove_eu_responsible_person

Disables your active EU responsible person. It stays in previous and cannot be re-enabled; add it again to use it again. While you need one, checkout orders to EU or UK addresses are refused from this moment.

Integrators only, and only with a signed-in dashboard session (credential_not_allowed with an API key).

Returns200 OK

Removed.

Responses

  • 200

    Removed.

  • 401

    Credentials are missing (missing_credentials), the API key is unknown or inactive (invalid_api_key), the session expired (invalid_session), or both a key and a session were sent (ambiguous_credentials).

  • 403

    The credentials are valid but not allowed to do this: a scope is missing (missing_scope), the endpoint is for another kind of account (actor_not_allowed) or another kind of credential (credential_not_allowed), the account may no longer use the API (account_blacklisted), or the account must change something first, in which case details.fix_url links to the dashboard page that fixes it.

  • 404

    You have no active EU responsible person (eu_responsible_person_not_found).

  • 429

    Too many requests (rate_limited): the limit is 500 per minute per API key (or signed-in user). Wait for the number of seconds in the Retry-After header, then retry; details has limit, window_seconds, reset_at and retry_after_seconds.

Errors use the error object.

DELETE/v2/integrator/eu-responsible-person
curl -X DELETE "https://public-api.dapi.digital/v2/integrator/eu-responsible-person" \
  -H "x-api-key: $DAPI_API_KEY"
Response
{
  "id": "erp_bfP0GSqKoZFrD72H5Os0rc7HV9XP6eQJu",
  "object": "eu_responsible_person",
  "deleted": true
}