> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pomerado.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Import logins

> Save up to 1,000 website logins at once from the Dashboard or the API.

This page shows how to save many website logins in one step, for example when you move them from a password manager.

## Prepare the records

Write the logins as a JSON array. Each record takes the same fields as a single save:

```json theme={null}
[
  {
    "site_url": "instacart.com",
    "label": "Family groceries",
    "email": "jo@example.com",
    "password": "first-password"
  },
  {
    "site_url": "google.com",
    "label": "Google Flights",
    "email": "jo@example.com",
    "password": "second-password"
  }
]
```

* `site_url` is required, with at least one of `username`, `email`, `phone` or `account_number`, and a `password`.
* Optional fields are `label`, `authenticator_secret`, `date_of_birth` (as `YYYY-MM-DD`), `zip`, `recovery_codes` (a list) and `preferred_method`.

## Import on the Dashboard

<Steps>
  <Step title="Open the import page">
    In the Dashboard, open **Logins** and select **Import logins**.
  </Step>

  <Step title="Paste and import">
    Paste the JSON array and select **Import website logins**. Keep the page open until it finishes.
  </Step>

  <Step title="Check the result">
    The page says how many logins it imported and why each other one was refused.
  </Step>
</Steps>

## Import through the API

Send `POST /v1/logins/import` with up to 1,000 records as `logins`. In an MCP client, call `call_pomerado_api` with `logins.import`.

The answer has one entry in `results` per record, in order: its `index` and either the saved `login` or an `error`. One refused record doesn't stop the others.

<Note>
  Values sent through the API or an MCP client pass through that client and its model provider. Send `"deliver": "dashboard"` alone to get a `dashboard_url` for the import page instead.
</Note>

<Accordion title="Details">
  * For a website that signs in by code, send `"sign_in": "code"` and no password.
  * Your plan's login policy applies to each record. On a Personal account, a second login for a site you already have is refused with `site_login_exists`.
  * If Pomerado can't confirm an import, don't import the same logins again; check the Logins page after a few minutes.
  * See [errors](/errors) for every refusal code.
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.