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

# Quickstart

> Get your API key and make your first Everhour API request in minutes.

This guide walks you through getting your API key and making your first authenticated request.

<Steps>
  <Step title="Get your API key">
    Sign in to your Everhour account and open your [profile settings](https://app.everhour.com/#/account/profile). Scroll to the bottom — your API key is listed there.

    <Warning>
      Treat your API key like a password. Anyone with the key has full access to your Everhour account via the API.
    </Warning>
  </Step>

  <Step title="Make your first request">
    Pass the key in the `X-Api-Key` header. A good first request is fetching your own user profile:

    <CodeGroup>
      ```bash Bash/cURL theme={null}
      curl https://api.everhour.com/users/me \
        -H "X-Api-Key: YOUR_API_KEY"
      ```

      ```ruby Ruby theme={null}
      require "net/http"
      require "json"

      uri = URI("https://api.everhour.com/users/me")
      req = Net::HTTP::Get.new(uri)
      req["X-Api-Key"] = "YOUR_API_KEY"

      resp = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
      puts JSON.parse(resp.body)
      ```

      ```python Python theme={null}
      import requests

      response = requests.get(
          "https://api.everhour.com/users/me",
          headers={"X-Api-Key": "YOUR_API_KEY"}
      )
      print(response.json())
      ```

      ```php PHP theme={null}
      $ch = curl_init("https://api.everhour.com/users/me");
      curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Api-Key: YOUR_API_KEY"]);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $body = curl_exec($ch);
      curl_close($ch);
      print_r(json_decode($body, true));
      ```

      ```java Java theme={null}
      import java.net.URI;
      import java.net.http.*;

      HttpClient client = HttpClient.newHttpClient();
      HttpRequest request = HttpRequest.newBuilder()
          .uri(URI.create("https://api.everhour.com/users/me"))
          .header("X-Api-Key", "YOUR_API_KEY")
          .GET()
          .build();
      HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
      System.out.println(response.body());
      ```

      ```javascript JavaScript theme={null}
      const response = await fetch("https://api.everhour.com/users/me", {
        headers: { "X-Api-Key": "YOUR_API_KEY" }
      });
      const user = await response.json();
      console.log(user);
      ```

      ```go Go theme={null}
      package main

      import (
          "fmt"
          "io"
          "net/http"
      )

      func main() {
          req, _ := http.NewRequest("GET", "https://api.everhour.com/users/me", nil)
          req.Header.Set("X-Api-Key", "YOUR_API_KEY")
          resp, _ := http.DefaultClient.Do(req)
          defer resp.Body.Close()
          body, _ := io.ReadAll(resp.Body)
          fmt.Println(string(body))
      }
      ```

      ```csharp .NET theme={null}
      using var client = new HttpClient();
      client.DefaultRequestHeaders.Add("X-Api-Key", "YOUR_API_KEY");
      var body = await client.GetStringAsync("https://api.everhour.com/users/me");
      Console.WriteLine(body);
      ```
    </CodeGroup>
  </Step>

  <Step title="Check the response">
    A successful response returns `200` with a JSON object representing your user:

    ```json theme={null}
    {
      "id": 12345,
      "name": "Jane Smith",
      "email": "jane@example.com",
      "role": "admin"
    }
    ```

    If you see a `401 Unauthorized` response, double-check your API key.
  </Step>
</Steps>

## Next steps

<CardGroup cols={2}>
  <Card title="Authentication" icon="key" href="/authentication">
    Details on how the X-Api-Key header works.
  </Card>

  <Card title="Rate limits" icon="gauge" href="/rate-limits">
    Understand request limits and how to handle 429 responses.
  </Card>

  <Card title="Errors" icon="circle-exclamation" href="/errors">
    HTTP status codes and error response format.
  </Card>

  <Card title="Core concepts" icon="cube" href="/concepts">
    Learn the core objects: teams, projects, tasks, time records, and more.
  </Card>
</CardGroup>
