# C# SDK Quickstart

> Install the Copyleaks C# SDK, authenticate, and submit your first scan in under 5 minutes with this step-by-step guide.

This guide will walk you through installing the official C# SDK and running your first scan. In just a few minutes, you'll be able to check content for plagiarism, AI-generated text, and more directly from your .NET application.

Before you start, ensure you have the following:
- An active Copyleaks account. If you don't have one, **[sign up for free](https://api.copyleaks.com/signup)**.
- You can find your API key on the **[API Dashboard](https://api.copyleaks.com/dashboard)**.
## Get Started

<Steps>
  <Step title="Installation">
      First, install the official `Copyleaks` package from NuGet into your project using the Package Manager Console.

      ```powershell
      Install-Package Copyleaks
      ```
  </Step>

  <Step title="Quick Example: Scan Text">
      <Warning>
      Remember to replace the placeholder credentials and webhook URL with your actual values.
      </Warning>

      ```csharp title="Program.cs"
      using System;
      using System.Text;
      using System.Threading.Tasks;
      using Copyleaks.SDK.V3.API;
      using Copyleaks.SDK.V3.API.Models.Requests;
      using Copyleaks.SDK.V3.API.Models.Requests.Properties;
      
      public class Program
      {
          // --- Your Credentials ---
          private const string USER_EMAIL = "YOUR_EMAIL_ADDRESS";
          private const string USER_KEY = "YOUR_API_KEY";
          private const string WEBHOOK_URL = "https://your-server.com/webhook/{STATUS}";
          // --------------------

          public static async Task Main(string[] args)
          {
              try
              {
                  // Log in to the Copyleaks API
                  Console.WriteLine("Authenticating...");
                  var identityClient = new CopyleaksIdentityApi();
                  var loginResponse = await identityClient.LoginAsync(USER_EMAIL, USER_KEY);
                  Console.WriteLine(" Logged in successfully!");

                  // Prepare your content for scanning
                  Console.WriteLine("Submitting text for scanning...");
                  var apiClient = new CopyleaksScansApi();
                  var scanId = Guid.NewGuid().ToString();
                  var textToScan = "Hello world, this is a test.";
                  var base64Content = Convert.ToBase64String(Encoding.UTF8.GetBytes(textToScan));

                  // Configure the scan
                  var scanProperties = new ClientScanProperties();
                  scanProperties.Sandbox = true; // Turn on sandbox mode for testing
                  scanProperties.Webhooks = new Webhooks { Status = new Uri($"{WEBHOOK_URL}") };

                  var fileDocument = new FileDocument
                  {
                      Base64 = base64Content,
                      Filename = "test.txt",
                      PropertiesSection = scanProperties
                  };
                  
                  // Submit the scan to Copyleaks
                  await apiClient.SubmitFileAsync(scanId, fileDocument, loginResponse.Token);
                  Console.WriteLine($" Scan submitted successfully! Scan ID: {scanId}");
                  Console.WriteLine("You will be notified via your webhook when the scan is complete.");
              }
              catch (Exception ex)
              {
                  Console.WriteLine($" An error occurred: {ex.Message}");
              }
          }
      }
      ```
  </Step>

  <Step title="Understanding the Code">
      The example code performs four main actions to submit a scan:

      1.  **Login:** It authenticates with your email and API key to get a secure login token. This token is required for all subsequent requests.
      2.  **Prepare Content:** It takes a simple string of text and converts it into a Base64 string.
      3.  **Configure Scan:** It creates a `ClientScanProperties` object to define the scan's behavior. We enable `sandbox` mode for safe testing and provide a `webhook` URL for completion notifications.
      4.  **Submit for Scanning:** It creates a `FileDocument` with the content and properties, then sends it to the Copyleaks API. The process is asynchronous; Copyleaks will notify your webhook URL once the scan is complete.
  </Step>
</Steps>

## Next Steps

<CardGroup cols={2}>
  <Card title="GitHub Repository" icon="github" href="https://github.com/Copyleaks/.net-core-plagiarism-checker">Check the official SDK repository on GitHub for more examples and details.</Card>
  <Card title="NuGet Package" icon="microsoft" href="https://www.nuget.org/packages/Copyleaks">View the official package on the NuGet Gallery to see all available versions.</Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Check for Plagiarism" icon="magnifying-glass" href="/guides/authenticity/detect-plagiarism-text">
    Detect plagiarism in text documents using the Copyleaks API. Search billions of sources to find unoriginal content.
  </Card>
  <Card title="Detect AI-Generated Content" icon="robot" href="/guides/ai-detector/ai-text-detection">
    Detect AI-generated text via sync or async API calls. This guide covers sync detection, see the Authenticity API Guide for async.
  </Card>
  <Card title="Assess Grammar and Writing Quality" icon="spell-check" href="/guides/writing/check-grammar">
    Get writing and grammar suggestions via API. Authenticate, submit text, and access full details in the docs.
  </Card>
  <Card title="Moderate Text" icon="shield-halved" href="/guides/moderation/moderate-text">
    Scan and moderate text content for unsafe or policy-relevant material across 10+ categories.
  </Card>
</CardGroup>
