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

# Developing in a Sandbox Workspace

> Develop and test mobile key integrations without real hardware by using a Seam sandbox workspace and simulated phones for user identities.

Seam's sandbox workspaces enable you to develop integrations without access to a real system. Use your sandbox workspace to test out issuing mobile keys and other related aspects of your integration.

## Creating a Simulated Phone for a User Identity

When issuing mobile credentials, some systems require the user identity to have a provisioned phone. While you are developing and testing your integration, you can add a simulated phone in your sandbox workspace. Use the following flow to [add a simulated phone](/api/phones/simulate/create_sandbox_phone) for a user identity:

**Command:**

<CodeGroup>
  ```javascript JavaScript theme={null}
  // Step 1: Create the user identity.
  const userIdentity = await seam.userIdentities.create({
    user_identity_key: 'jean_doe',
    full_name: 'Jean Doe',
  })

  // Step 2: Create a simulated, sandbox phone.
  await seam.phones.simulate.createSandboxPhone({
    user_identity_id: userIdentity.user_identity_id,
  })
  ```

  ```bash cURL theme={null}
  # Step 1: Create the user identity.
  user_identity=$(curl -X 'POST' \
    'https://connect.getseam.com/user_identities/create' \
    -H 'accept: application/json' \
    -H "Authorization: Bearer ${SEAM_API_KEY}" \
    -H 'Content-Type: application/json' \
    -d '{
    "user_identity_key": "jean_doe",
    "full_name": "Jean Doe"
  }')

  # Step 2: Create a simulated, sandbox phone.
  curl -X 'POST' \
    'https://connect.getseam.com/phones/simulate/create_sandbox_phone' \
    -H 'accept: application/json' \
    -H "Authorization: Bearer ${SEAM_API_KEY}" \
    -H 'Content-Type: application/json' \
    -d "{
    \"user_identity_id\": \"$(jq -r '.user_identity.user_identity_id' <<< ${user_identity})\"
  }"
  ```

  ```python Python theme={null}
  # Step 1: Create the user identity.
  user_identity = seam.user_identities.create(
    user_identity_key = "jean_doe",
    full_name = "Jean Doe"
  )

  # Step 2: Create a simulated, sandbox phone.
  seam.phones.simulate.create_sandbox_phone(
    user_identity_id = user_identity.user_identity_id
  )
  ```

  ```ruby Ruby theme={null}
  # Step 1: Create the user identity.
  user_identity = seam.user_identities.create(
    user_identity_key: "jean_doe",
    full_name: "Jean Doe",
  )

  # Step 2: Create a simulated, sandbox phone.
  seam.phones.simulate.create_sandbox_phone(
    user_identity_id: user_identity.user_identity_id,
  )
  ```

  ```php PHP theme={null}
  // Step 1: Create the user identity.
  $seam->user_identities->create(
    user_identity_key: "jean_doe",
    full_name: "Jean Doe"
  );

  // Step 2: Create a simulated, sandbox phone.
  $seam->phones->simulate->create_sandbox_phone(
    user_identity_id: $user_identity->user_identity_id
  );
  ```

  ```csharp C# theme={null}
  Coming soon!
  ```
</CodeGroup>

**Output:**

<CodeGroup>
  ```json JavaScript theme={null}
  {
    "user_identity_id": "22222222-2222-2222-2222-222222222222",
    "full_name": "Jean Doe",
    ...
  }

  {
    "device_id": "22222222-2222-2222-2222-444444444444",
    "device_type": "android_phone",
    "created_at": "2025-01-01T10:40:00+00:00",
    ...
  }
  ```

  ```json cURL theme={null}
  {
    "user_identity": {
      "user_identity_id": "22222222-2222-2222-2222-222222222222",
      "full_name": "Jean Doe",
      ...
    },
    "ok": true
  }

  {
    "phone": {
      "device_id": "22222222-2222-2222-2222-444444444444",
      "device_type": "android_phone",
      "created_at": "2025-01-01T10:40:00+00:00",
      ...
    },
    "ok": true
  }
  ```

  ```json Python theme={null}
  UserIdentity(
    user_identity_id='22222222-2222-2222-2222-222222222222',
    user_identity_key='jean_doe',
    full_name='Jean Doe',
    ...
  )

  Phone(
    device_id='22222222-2222-2222-2222-444444444444',
    device_type='android_phone',
    created_at='2025-01-01T10:40:00+00:00',
    ...
  )
  ```

  ```json Ruby theme={null}
  <Seam::Resources::UserIdentity:0x005f0
    user_identity_id="22222222-2222-2222-2222-222222222222"
    full_name="Jean Doe"
    ...
  >

  <Seam::Resources::Phone:0x005f0
    device_id="22222222-2222-2222-2222-444444444444"
    device_type="android_phone"
    created_at="2025-01-01T10:40:00+00:00"
    ...
  >
  ```

  ```json PHP theme={null}
  {
    "user_identity_id": "22222222-2222-2222-2222-222222222222",
    "full_name": "Jean Doe",
    ...
  }

  {
    "device_id": "22222222-2222-2222-2222-444444444444",
    "device_type": "android_phone",
    "created_at": "2025-01-01T10:40:00+00:00",
    ...
  }
  ```

  ```json C# theme={null}
  Coming soon!
  ```
</CodeGroup>
