diff --git a/paperless.go b/paperless.go
index 18ccf52..212e73e 100644
--- a/paperless.go
+++ b/paperless.go
@@ -108,10 +108,10 @@ func (c *PaperlessClient) GetAllTags(ctx context.Context) (map[string]int, error
 func (c *PaperlessClient) GetDocumentsByTags(ctx context.Context, tags []string) ([]Document, error) {
 	tagQueries := make([]string, len(tags))
 	for i, tag := range tags {
-		tagQueries[i] = fmt.Sprintf("tag:%s", tag)
+		tagQueries[i] = fmt.Sprintf("tags__name__iexact=%s", tag)
 	}
-	searchQuery := strings.Join(tagQueries, " ")
-	path := fmt.Sprintf("api/documents/?query=%s", urlEncode(searchQuery))
+	searchQuery := strings.Join(tagQueries, "&")
+	path := fmt.Sprintf("api/documents/?%s", urlEncode(searchQuery))
 
 	resp, err := c.Do(ctx, "GET", path, nil)
 	if err != nil {
diff --git a/paperless_test.go b/paperless_test.go
index 6c70b9d..17cddde 100644
--- a/paperless_test.go
+++ b/paperless_test.go
@@ -203,7 +203,7 @@ func TestGetDocumentsByTags(t *testing.T) {
 	// Set mock responses
 	env.setMockResponse("/api/documents/", func(w http.ResponseWriter, r *http.Request) {
 		// Verify query parameters
-		expectedQuery := "query=tag:tag1+tag:tag2"
+		expectedQuery := "tags__name__iexact=tag1&tags__name__iexact=tag2"
 		assert.Equal(t, expectedQuery, r.URL.RawQuery)
 		w.WriteHeader(http.StatusOK)
 		json.NewEncoder(w).Encode(documentsResponse)