> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudservices.ecowestern.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Make your first authenticated ECS API request

You need an ECS account and an API key. Create the key in the dashboard before making service requests.

<Steps>
  <Step title="Create an API key in the dashboard">
    Sign in at [cloudservices.ecowestern.net](https://cloudservices.ecowestern.net), open **Dashboard → API Keys**, and select **Create New Key**.

    Choose the services, resources, actions, and expiration you need. Copy the full key when it is shown. It will not be shown again.
  </Step>

  <Step title="Deploy a function">
    Use the new ECS API key for service requests.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl -X POST https://api.cloudservices.ecowestern.net/v1/flow/functions \
      -H "Authorization: Bearer YOUR_ECS_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "hello",
        "entrypoint": "main.ts",
        "assets": {
          "main.ts": {
            "content": "Deno.serve(() => new Response(\"Hello from Flow\"));"
          }
        }
      }'
    ```
  </Step>

  <Step title="Invoke it">
    Send application traffic through the invocation endpoint.

    ```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
    curl https://api.cloudservices.ecowestern.net/v1/flow/functions/hello \
      -H "Authorization: Bearer YOUR_ECS_API_KEY"
    ```
  </Step>
</Steps>

<Tip>
  Do not share your API key. If it is exposed, deactivate it from the dashboard and create a replacement.
</Tip>

## Request basics

* Send JSON bodies with `Content-Type: application/json`.
* Send the key as `Authorization: Bearer <token>`.
* Creates return `201 Created`.
* Deletes return `204 No Content`.

## Where to go next

<CardGroup cols={3}>
  <Card title="Scope your key" icon="sliders-horizontal" href="/guides/permissions">
    Give every integration only the access it needs.
  </Card>

  <Card title="Deploy a site" icon="globe-2" href="/services/canopy/publish">
    Move from a function to a hosted static surface.
  </Card>

  <Card title="Store objects" icon="database" href="/services/clearlake/transfers">
    Upload and download files with short-lived URLs.
  </Card>
</CardGroup>
