1. Create a workspace and invite your team

Qry uses invite-only account setup. An owner creates the workspace, invites teammates, and assigns owner, admin, or member access. Members can use endpoints; owners and admins manage warehouse connections, API keys, and schedules.

2. Choose a publishing path

You can either let Qry run controlled refreshes from a read-only warehouse connection, or build and test dbt models in your own repository and publish the result with the dbt-native workflow.

For managed refresh, continue with a narrowly scoped warehouse identity:

Use a credential that can read only the approved schemas, marts, or models used by the endpoint. Do not give Qry write, DDL, ownership, or account-admin privileges. Keep credentials scoped to the smallest useful dataset and rotate them through your normal secret-management process.

3. Author and publish SQL

Create an endpoint under Endpoints → Create endpoint. Give it a stable path and write the SQL that should become the API interface. Variables use the {{ variable_name }} form and are configured with type and validation metadata in the endpoint editor.

Publishing compiles the SQL, queues a refresh, and activates a snapshot only after the refresh artifact has been written and verified. A failed publish does not replace the previous active snapshot.

4. Make an authenticated request

The public endpoint shape is:

GET https://api.qry.thedatadavis.com/e/<workspace-slug>/<endpoint-path>
Authorization: Bearer <qry-api-key>

For example:

curl "https://api.qry.thedatadavis.com/e/acme/customer-health?account_id=123" \
  -H "Authorization: Bearer $QRY_API_KEY"

Successful responses contain data and meta:

{
  "data": [{"account_id": 123, "health_score": 82}],
  "meta": {
    "row_count": 1,
    "max_response_rows": 1000,
    "page": 1,
    "page_size": 1000,
    "has_next_page": false,
    "last_refreshed_at": "2026-07-12T12:00:00Z"
  }
}

Requests start on page 1. Add page=2 to fetch the next page when meta.has_next_page is true. The endpoint response-row limit controls the page size, and endpoint SQL should include a deterministic ORDER BY for stable pagination.

The generated definition is also available from the public openapi.json document. Use it as the source for variable types, examples, and error responses.