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

# Skapa en AceDataCloud-plattformstjänstansökan

> Platform API guide - Ace Data Cloud

「Ansökan（Application）」avser det aktuella kontots prenumerationsrelation till en viss tjänst — du måste först ansöka innan du kan skapa API-autentiseringsuppgifter för denna ansökan och anropa affärsgränssnitt. Vid första ansökan till en tjänst får Application tjänstens för närvarande konfigurerade `free_amount`; detta värde kan vara 0.

> ℹ️ Detta gränssnitt tillhör **AceDataCloud-plattformens hanterings-API**, med det gemensamma prefixet `https://platform.acedata.cloud/api/v1/`. För ett fullständigt gränssnittsindex, se [Hämta AceDataCloud-plattformens dokumentlista](https://platform.acedata.cloud/documents/platform-document-list).

## Fullständig integrationsprocess

Nya användare går vanligtvis igenom dessa 5 steg från registrering till att få sitt första affärsgränssnitt att fungera:

1. **Hämta kontotoken** → [Hantera AceDataCloud-plattformens kontotoken](https://platform.acedata.cloud/documents/platform-token)
2. **Välj tjänst** → [Hämta AceDataCloud-plattformens tjänstelista](https://platform.acedata.cloud/documents/platform-service-list)
3. **Skapa ansökan**（detta dokument） → Få initial kvot enligt tjänstekonfigurationen
4. **Skapa API-autentiseringsuppgifter** → [Skapa AceDataCloud-plattformens API-autentiseringsuppgifter](https://platform.acedata.cloud/documents/platform-credential-create)
5. **Anropa affärsgränssnitt** → Använd den erhållna 32-siffriga token för att anropa `https://api.acedata.cloud/<path>`

## Gränssnittsöversikt

| Objekt | Innehåll |
| - | - |
| Metod | `POST` |
| URL | `https://platform.acedata.cloud/api/v1/applications/` |
| Autentisering | ✅ Kontotoken krävs |
| Content-Type | `application/json` |

## Autentiseringsbeskrivning（hur man hämtar kontotoken）

Begärandehuvud:

```http theme={null}
Authorization: Bearer ${PLATFORM_TOKEN}
```

Kontotoken（Account Token）är utvecklarens "kontonivånyckel" för att hantera sina egna kontoresurser via API. Sätt att hämta den:

1. **Skapa med ett klick i konsolen（rekommenderas）**：Logga in på [AceDataCloud-plattformen](https://platform.acedata.cloud) → [Account Token-konsolen](https://platform.acedata.cloud/console/platform-tokens) → Klicka på 「Skapa」 för att få en token som börjar med `platform-v1-`.
2. **Skapa via API**：Använd en befintlig kontotoken eller JWT för webbläsarens inloggningssession för att anropa `POST /api/v1/platform-tokens/`, se [Hantera AceDataCloud-plattformens kontotoken](https://platform.acedata.cloud/documents/platform-token) för detaljer.

> ⚠️ Kontotoken är lika känslig som lösenord och får inte skrivas in i frontend-kod eller offentliga kodförråd. Om den läcker ska den omedelbart tas bort och återskapas i konsolen.

## Begärandetext

| Parameter | Typ | Obligatorisk | Beskrivning |
| - | - | - | - |
| `service_id` | UUID | ✅ | ID för tjänsten som ska ansökas om. Kan hämtas från `items[].id` i [tjänstelistan](https://platform.acedata.cloud/documents/platform-service-list) |

## Begärandeexempel

### cURL

```shell theme={null}
curl -X POST 'https://platform.acedata.cloud/api/v1/applications/' \
  -H 'accept: application/json' \
  -H "authorization: Bearer ${PLATFORM_TOKEN}" \
  -H 'content-type: application/json' \
  -d '{"service_id": "38ecf158-36f2-42f2-8e7f-6786cdfc2452"}'
```

### Python

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

PLATFORM_TOKEN = os.environ["PLATFORM_TOKEN"]
SERVICE_ID = "38ecf158-36f2-42f2-8e7f-6786cdfc2452"

resp = requests.post(
    "https://platform.acedata.cloud/api/v1/applications/",
    headers={
        "accept": "application/json",
        "authorization": f"Bearer {PLATFORM_TOKEN}",
        "content-type": "application/json",
    },
    json={"service_id": SERVICE_ID},
    timeout=10,
)

if resp.status_code == 201:
    app = resp.json()
    print(f"申请成功！application_id={app['id']}")
    print(f"初始额度：{app['remaining_amount']} {app.get('service', {}).get('unit', '')}")
elif resp.status_code == 400 and resp.json().get("code") == "duplication":
    print("⚠️ 已经申请过此服务，请到 /applications/ 列表里找到现成的 application_id")
else:
    print(f"申请失败：HTTP {resp.status_code} - {resp.text}")
```

### Node.js

```javascript theme={null}
const PLATFORM_TOKEN = process.env.PLATFORM_TOKEN
const SERVICE_ID = '38ecf158-36f2-42f2-8e7f-6786cdfc2452'

const resp = await fetch('https://platform.acedata.cloud/api/v1/applications/', {
  method: 'POST',
  headers: {
    accept: 'application/json',
    authorization: `Bearer ${PLATFORM_TOKEN}`,
    'content-type': 'application/json',
  },
  body: JSON.stringify({ service_id: SERVICE_ID }),
})

if (resp.status === 201) {
  const app = await resp.json()
  console.log('application_id =', app.id)
} else {
  console.error(await resp.text())
}
```

## Svarsexempel

### Lyckades（HTTP 201）

```json theme={null}
{
  "id": "82f57141-2323-4453-8730-60f7d833a2da",
  "service_id": "38ecf158-36f2-42f2-8e7f-6786cdfc2452",
  "remaining_amount": 1.0,
  "used_amount": 0.0,
  "paid": false,
  "user_id": "89518d07-5560-4b05-92c1-667f3ddf6a4b",
  "disabled": false,
  "allow_consume_global": false,
  "scope": "Individual",
  "type": "Usage",
  "expired_at": null,
  "tags": null,
  "metadata": null,
  "client_ip": null,
  "client_fingerprint": null,
  "created_at": "2026-04-26T07:52:27.462400Z",
  "updated_at": "2026-04-26T07:52:27.462400Z"
}
```

Strukturen för returfält är densamma som i [Hämta detaljer om AceDataCloud-plattformens tjänsteansökan](https://platform.acedata.cloud/documents/platform-application-detail).

### Redan ansökt（HTTP 400）

```json theme={null}
{
  "detail": "Item already exists.",
  "code": "duplication",
  "trace_id": "1a87524f8cbba0b790b2951e2e43117e"
}
```

Detta är en hård begränsning i designen: **varje användare kan endast ha en Application för varje tjänst**. Om den redan finns, sök efter den befintliga via [Hämta AceDataCloud-plattformens lista över tjänsteansökningar](https://platform.acedata.cloud/documents/platform-application-list).

### Tjänsten finns inte（HTTP 404）

```json theme={null}
{
  "detail": "Service not found.",
  "code": "not_found",
  "trace_id": "..."
}
```

### Tjänsten kräver granskning（HTTP 403）

```json theme={null}
{
  "detail": "This service requires manual verification.",
  "code": "need_verify",
  "trace_id": "..."
}
```

Om tjänsten har `need_verify=true`（detta fält kan ses i tjänstelistan）måste du ansöka om vitlistning via ärendeprocessen.

## Felhantering

| HTTP | kod | Betydelse |
| - | - | - |
| 400 | `duplication` | Tjänsten har redan ansökts om av det aktuella kontot |
| 400 | `invalid` | `service_id` saknas eller har fel format |
| 401 | `not_authenticated` | Kontotoken saknas eller token har tagits bort |
| 403 | `need_verify` | Tjänsten kräver granskning, följ ärendeprocessen |
| 404 | `not_found` | Tjänsten finns inte eller har tagits offline |

Enhetligt format för felsvar:

```json theme={null}
{
  "detail": "...",
  "code": "...",
  "trace_id": "..."
}
```

## Praktiska tips

* **Själva skapandet debiteras inte**: Vid första skapandet anges den initiala kvoten enligt tjänstens aktuella `free_amount`; detta värde kan vara 0, och att skapa samma typ av Application igen garanterar inte att gåvan upprepas.
* **Om betalning krävs avgörs av fältet `paid`**: Precis efter ansökan är `paid=false`, och efter att [skapa en AceDataCloud-plattformens påfyllningsorder](https://platform.acedata.cloud/documents/platform-order-create) har anropats för att slutföra betalningen blir det `true`.
* **`disabled=true` betyder att den är tillfälligt inaktiverad**—till exempel på grund av aktiverad riskkontroll, obetalda avgifter osv. När den är inaktiverad returnerar affärsgränssnittet `403`.
* **Skapa inte med obegränsad samtidighet**: Hämta först mål-`service_id` från den paginerade tjänstelistan och ansök sedan om dem en i taget enligt verksamhetsbehov; återanvänd befintlig Application när `duplication` inträffar.

## Relaterade gränssnitt

* [Hämta AceDataCloud-plattformens tjänstelista](https://platform.acedata.cloud/documents/platform-service-list) — välj först en tjänst
* [Hämta AceDataCloud-plattformens lista över tjänsteansökningar](https://platform.acedata.cloud/documents/platform-application-list) — visa alla redan ansökta
* [Hämta detaljer om AceDataCloud-plattformens tjänsteansökan](https://platform.acedata.cloud/documents/platform-application-detail) — visa en enskild ansökan
* [Skapa AceDataCloud-plattformens API-autentiseringsuppgifter](https://platform.acedata.cloud/documents/platform-credential-create) — nästa steg efter godkänd ansökan
* [Skapa AceDataCloud-plattformens påfyllningsorder](https://platform.acedata.cloud/documents/platform-order-create) — fyll på efter att den kostnadsfria kvoten har använts upp


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.