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

# Blob S3 Credentials

> Erhalte mit GET /v1/s3/credentials das S3-Zugangsschlüsselpaar deines API-Schlüssels, um aws-cli, boto3, rclone und die AWS SDKs mit Blob Storage zu nutzen.

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  Der API-Schlüssel für Ihr Konto. Sie finden ihn in Ihren [Kontoeinstellungen](https://squarecloud.app/de/account/security).
</ParamField>

S3 Credentials gibt das Zugangsschlüsselpaar zurück, mit dem S3-Tools Requests an das [S3-Gateway](/de/blob-reference/s3-compatibility) signieren. Das Paar wird **aus dem API-Schlüssel abgeleitet**, der diese Route aufruft: Ein erneuter Aufruf gibt dasselbe Paar zurück, und das Widerrufen, Neugenerieren oder Ablaufen des Schlüssels wirkt sich genauso auf das Paar aus. Es gibt nichts weiter zu rotieren oder zu widerrufen.

Rufe die Route mit einem API-Schlüssel auf, der `blob:read` oder `blob:write` hat. Das Paar kann mit `blob:read` lesen und mit `blob:write` schreiben, wie das Feld `access` zeigt.

<Warning>Der `secret_access_key` gewährt denselben Zugriff wie der API-Schlüssel. Bewahre ihn wie den Schlüssel selbst auf.</Warning>

<Tip>Das Paar ändert sich nicht, solange sich der API-Schlüssel nicht ändert. Hol es einmal ab und bewahre es in deinem Secret Manager oder in einer Umgebungsvariable auf: Ruf diese Route nicht bei jedem Start deiner Anwendung auf.</Tip>

### Rate Limits

<Note>10 Requests pro Stunde pro Konto (`RATE_LIMITED`, 429).</Note>

### Antwort

<ResponseField name="status" type="string">
  "success" bei Erfolg, "error" bei Misserfolg.
</ResponseField>

<ResponseField name="response" type="object">
  <Expandable title="Objekt umschalten">
    <ResponseField name="access_key_id" type="string">
      Die Access Key ID (`SQ2_...`).
    </ResponseField>

    <ResponseField name="secret_access_key" type="string">
      Der geheime Zugangsschlüssel.
    </ResponseField>

    <ResponseField name="endpoint" type="string">
      `https://s3-blob.squarecloud.app`
    </ResponseField>

    <ResponseField name="region" type="string">
      `auto`
    </ResponseField>

    <ResponseField name="buckets" type="string[]">
      Die Buckets deines Kontos: `public`, `private` und `legacy`.
    </ResponseField>

    <ResponseField name="access" type="object">
      `read` und `write`, jeweils `true` oder `false`, entsprechend den Scopes des Schlüssels.
    </ResponseField>

    <ResponseField name="expires_at" type="ISO 8601 | null">
      Wann der API-Schlüssel und damit das Paar abläuft. `null`, wenn er nicht abläuft.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://blob.squarecloud.app/v1/s3/credentials' \
    --header 'Authorization: YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json theme={null}
  {
    "status": "success",
    "response": {
      "access_key_id": "SQ2_3155597145698959364_k7Hq2mX9",
      "secret_access_key": "vR8nLq2Wz5Tc1Yb7Hs0Kd4Jf6Gm3Pa9Xe",
      "endpoint": "https://s3-blob.squarecloud.app",
      "region": "auto",
      "buckets": ["public", "private", "legacy"],
      "access": { "read": true, "write": true },
      "expires_at": null
    }
  }
  ```
</ResponseExample>

### Fehler

| Code                 | HTTP | Wann                                                                                                                  |
| -------------------- | ---- | --------------------------------------------------------------------------------------------------------------------- |
| `API_KEY_REQUIRED`   | 400  | Mit einer Dashboard-Sitzung aufgerufen. Verwende einen API-Schlüssel.                                                 |
| `LEGACY_API_KEY`     | 400  | Der Schlüssel verwendet ein älteres Format, das keine S3-Requests signieren kann. Erstelle einen neuen API-Schlüssel. |
| `INVALID_CREDENTIAL` | 401  | Der API-Schlüssel konnte nicht verifiziert werden.                                                                    |
| `MISSING_SCOPE`      | 403  | Der Schlüssel hat weder `blob:read` noch `blob:write`.                                                                |
| `RATE_LIMITED`       | 429  | Mehr als 10 Requests in einer Stunde.                                                                                 |
