Workroomly / DevelopersBuild with your business context
Browse developer guides · Quickstart

Developer guide

Quickstart

Create a scoped API key and make your first authenticated Workroomly API request.

On this page

Before you start

This first integration reads CRM contacts. You need a Workroomly account, a workroom with Developer tools enabled, and an owner or admin who can create credentials. Developer tools are available on the Team plan. External requests use your workroom’s Data Transfer allowance.

Sign in to Workroomly or create an account. Select the workroom that owns the data, then open Settings → Developers. If you cannot see or manage developer settings, ask your workroom owner or admin. Moderators can inspect the developer platform but cannot issue keys.

Create a read-only key

  1. Open API Keys → Create API Key. Give it a recognizable name, such as “CRM reporting”.
  2. Choose Data Access as its purpose. Select CRM and explicitly select the CRM space you want to read. Use the visible space name; you do not need to guess its identifier.
  3. Create the key and copy its full value into your server’s secret store. It is shown at creation; the key list only displays a prefix afterward.
  4. Open Query Explorer, select this key and the CRM Contact resource, then select your CRM space. Inspect the generated request and copy its scope.crm_space_key value. This stable integration key is different from a record UUID or the space’s display name.

A Test key is not a sandbox. Test and Live identify credential modes in the same workroom. Use a separate workroom with synthetic records when testing changes. This quickstart only reads data.

If there are no spaces to select, create or obtain access to a CRM space first. If you only need another module, use its resource and scope rules.

Make your first request

The public API origin is https://api.workroomly.com. For a different environment, use the base URL shown in the application’s Documentation tab. Run these examples in a terminal or server process. Never put an API key in browser JavaScript, a website form, or a public repository.

Set WORKROOMLY_API_KEY to the secret you just saved and WORKROOMLY_CRM_SPACE_KEY to the stable key copied from Query Explorer. The examples read those environment variables instead of containing a real credential. The shell example requires Bash and Python 3; the Python and Node.js examples work across platforms.

# Set both variables securely in your shell or secret manager first.
# Python encodes the scope key safely into JSON.
python -c 'import json, os; print(json.dumps({"resource":"crm.contact","scope":{"crm_space_key":os.environ["WORKROOMLY_CRM_SPACE_KEY"]},"fields":["id","name","email"],"limit":5,"offset":0}))' > request.json
curl --fail-with-body --silent --show-error \
  'https://api.workroomly.com/api/query' \
  -H "Authorization: Bearer $WORKROOMLY_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @request.json

Read the response

HTTP 200 means the query succeeded. The data array contains only the fields requested. meta.total counts matching records, not just this page.

{
  "data": [
    {
      "id": "11111111-1111-4111-8111-111111111111",
      "name": "Alex Example",
      "email": "alex@example.test"
    }
  ],
  "meta": { "total": 1, "limit": 5, "offset": 0, "duration_ms": 4 }
}

An empty data array can be a successful result: check that your selected CRM space has contacts and that you are using the right workroom’s key. To read more records, increase offset by the number of rows returned until you reach total. Use deterministic sorting for exports; the complete export example handles pagination.

If the request fails

What you see What to check
401 Use the complete key in Authorization: Bearer, not its displayed prefix or your app login token.
403 Check revocation, CRM permission, the selected subspace, Developer-tools entitlement and Data Transfer allowance.
422 Check the resource, fields and top-level scope object against Query Explorer. A space UUID is not a crm_space_key.
429 Reduce concurrency and retry with a bounded backoff.
Network error or 5xx Check the environment URL and retry this read with a bounded backoff. Save X-Request-ID if present.

See Errors & troubleshooting for the exact response envelope and next steps.

Keep the connection healthy

Store the key in a server-side secret manager. Give each integration its own narrowly scoped key so you can revoke it independently. The built-in Rotate action invalidates the old key immediately; for a planned handover, create a separate replacement, update and verify your integration, then revoke the old key. Revoke a compromised key immediately.

Need help with your integration?

Keep the request ID, endpoint and time of the failure. Remove credentials and private records before contacting Workroomly.