<!-- Markdown copy of https://docs.creatorain.com/reference/operations/getonboardingsession/ -->
# Poll an onboarding session (session secret, no key)

**Not live yet:** the v1 API and its hosts are not open. See [Sandbox](/get-started/sandbox/).

GET

/onboarding\_sessions/{id}

Select code sampleFetchcURL

```js
const url = 'https://api.creatorain.com/v1/onboarding_sessions/obs_3f2a9c1e5b7d4a6f8e0c2b4d6f8a0c2e';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
curl --request GET \
  --url https://api.creatorain.com/v1/onboarding_sessions/obs_3f2a9c1e5b7d4a6f8e0c2b4d6f8a0c2e \
  --header 'Authorization: Bearer <token>'
```

-   Live (crp\_live\_ keys)
-   Sandbox (crp\_test\_ keys)

`Authorization: Bearer <session_secret>`. The first poll after the human approves carries `key.secret`; no later poll does (`key_delivered: true`, `next_action: create_new_session` if it was lost). Polling sooner than `interval` is `429 slow_down`: the interval grows by 5 seconds, up to 60, and `Retry-After` carries it. A wrong secret and an unknown id are the same `404`; failures count toward the address block like bad keys.

## Authorizations

-   **[sessionSecret](/reference/#sessionsecret)**

## Parameters

### Path Parameters

**id**

required

string

#### Example

```
obs_3f2a9c1e5b7d4a6f8e0c2b4d6f8a0c2e
```

## Responses

### 200

The session.

Media typeapplication/json

object

**id**

required

string

**object**

required

string

Allowed values: onboarding\_session

**status**

required

string

Allowed values: pending approved denied expired

**expires\_at**

required

string format: date-time

**interval**

required

integer

**key\_delivered**

required

boolean

**key**

required

object

**id**

required

string

**secret**

On the first poll after approval only.

string

**prefix**

required

string

**last4**

required

string

nullable

**livemode**

required

boolean

**scopes**

required

Array<string>

**next\_action**

required

{type: human\_approval, url} while pending; {type: create\_new\_session} once expired or collected.

object

**type**

string

Allowed values: human\_approval create\_new\_session

**url**

string format: uri

**blockers**

required

Why the approval cannot produce a key yet (for example live\_key\_requires\_top\_up, key\_limit\_reached, owner\_changed).

Array<string>

#### Example

```json
{
  "object": "onboarding_session",
  "status": "pending",
  "key": {
    "id": "key_3f2a9c1e5b7d4a6f8e0c2b4d6f8a0c2e",
    "prefix": "crp_test_AbCd"
  },
  "next_action": {
    "type": "human_approval"
  }
}
```

#### Headers

**Request-Id**

string format: uuid

This request’s id. Equal to error.request\_id; quote it to support.

**Cache-Control**

string

Allowed values: no-store

No-store. The answer may carry a secret.

### 401

Invalid\_key, test\_key\_on\_live or live\_key\_on\_sandbox.

Media typeapplication/json

object

**error**

required

object

**type**

required

string

Allowed values: invalid\_request\_error authentication\_error permission\_error idempotency\_error rate\_limit\_error api\_error

**code**

required

string

Allowed values: parameter\_invalid invalid\_json idempotency\_key\_invalid idempotency\_key\_required customization\_not\_supported videos\_per\_month\_out\_of\_range batch\_invalid terms\_not\_accepted invalid\_key test\_key\_on\_live live\_key\_on\_sandbox insufficient\_balance scope\_missing forbidden\_ip forbidden live\_key\_requires\_top\_up limit\_raise\_requires\_dashboard not\_found idempotency\_conflict idempotency\_in\_progress conflict location\_already\_in\_network external\_id\_conflict dispute\_open request\_too\_large address\_not\_verified not\_food\_business metro\_not\_served package\_not\_available account\_location\_limit commit\_limit\_exceeded top\_up\_exceeds\_feasible no\_saved\_card rate\_limited quota\_exceeded slow\_down internal\_error service\_unavailable

**message**

required

string

**field**

The request field at fault

string

**doc\_url**

required

string format: uri

**request\_id**

required

string format: uuid

**items**

Batch\_invalid only. Every refused location, by its index in the request.

Array<object>

object

**index**

required

integer

**code**

required

One of the error codes above.

string

**field**

string

**message**

required

string

#### Example

```json
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "doc_url": "https://www.creatorain.com/api/errors#scope_missing",
    "items": [
      {
        "field": "locations.1.videos_per_month"
      }
    ]
  }
}
```

#### Headers

**Request-Id**

string format: uuid

This request’s id. Equal to error.request\_id; quote it to support.

### 404

Not\_found.

Media typeapplication/json

object

**error**

required

object

**type**

required

string

Allowed values: invalid\_request\_error authentication\_error permission\_error idempotency\_error rate\_limit\_error api\_error

**code**

required

string

Allowed values: parameter\_invalid invalid\_json idempotency\_key\_invalid idempotency\_key\_required customization\_not\_supported videos\_per\_month\_out\_of\_range batch\_invalid terms\_not\_accepted invalid\_key test\_key\_on\_live live\_key\_on\_sandbox insufficient\_balance scope\_missing forbidden\_ip forbidden live\_key\_requires\_top\_up limit\_raise\_requires\_dashboard not\_found idempotency\_conflict idempotency\_in\_progress conflict location\_already\_in\_network external\_id\_conflict dispute\_open request\_too\_large address\_not\_verified not\_food\_business metro\_not\_served package\_not\_available account\_location\_limit commit\_limit\_exceeded top\_up\_exceeds\_feasible no\_saved\_card rate\_limited quota\_exceeded slow\_down internal\_error service\_unavailable

**message**

required

string

**field**

The request field at fault

string

**doc\_url**

required

string format: uri

**request\_id**

required

string format: uuid

**items**

Batch\_invalid only. Every refused location, by its index in the request.

Array<object>

object

**index**

required

integer

**code**

required

One of the error codes above.

string

**field**

string

**message**

required

string

#### Example

```json
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "doc_url": "https://www.creatorain.com/api/errors#scope_missing",
    "items": [
      {
        "field": "locations.1.videos_per_month"
      }
    ]
  }
}
```

#### Headers

**Request-Id**

string format: uuid

This request’s id. Equal to error.request\_id; quote it to support.

### 429

Rate\_limited (600 a minute per workspace, an onboarding create limit, or an address blocked after failed authentication), or slow\_down (an onboarding session polled too fast).

Media typeapplication/json

object

**error**

required

object

**type**

required

string

Allowed values: invalid\_request\_error authentication\_error permission\_error idempotency\_error rate\_limit\_error api\_error

**code**

required

string

Allowed values: parameter\_invalid invalid\_json idempotency\_key\_invalid idempotency\_key\_required customization\_not\_supported videos\_per\_month\_out\_of\_range batch\_invalid terms\_not\_accepted invalid\_key test\_key\_on\_live live\_key\_on\_sandbox insufficient\_balance scope\_missing forbidden\_ip forbidden live\_key\_requires\_top\_up limit\_raise\_requires\_dashboard not\_found idempotency\_conflict idempotency\_in\_progress conflict location\_already\_in\_network external\_id\_conflict dispute\_open request\_too\_large address\_not\_verified not\_food\_business metro\_not\_served package\_not\_available account\_location\_limit commit\_limit\_exceeded top\_up\_exceeds\_feasible no\_saved\_card rate\_limited quota\_exceeded slow\_down internal\_error service\_unavailable

**message**

required

string

**field**

The request field at fault

string

**doc\_url**

required

string format: uri

**request\_id**

required

string format: uuid

**items**

Batch\_invalid only. Every refused location, by its index in the request.

Array<object>

object

**index**

required

integer

**code**

required

One of the error codes above.

string

**field**

string

**message**

required

string

#### Example

```json
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "doc_url": "https://www.creatorain.com/api/errors#scope_missing",
    "items": [
      {
        "field": "locations.1.videos_per_month"
      }
    ]
  }
}
```

#### Headers

**Request-Id**

string format: uuid

This request’s id. Equal to error.request\_id; quote it to support.

**Retry-After**

integer

\>= 1

Seconds to wait before retrying (at least 1).

### 500

Internal\_error (500) or service\_unavailable (503). The message never carries a cause.

Media typeapplication/json

object

**error**

required

object

**type**

required

string

Allowed values: invalid\_request\_error authentication\_error permission\_error idempotency\_error rate\_limit\_error api\_error

**code**

required

string

Allowed values: parameter\_invalid invalid\_json idempotency\_key\_invalid idempotency\_key\_required customization\_not\_supported videos\_per\_month\_out\_of\_range batch\_invalid terms\_not\_accepted invalid\_key test\_key\_on\_live live\_key\_on\_sandbox insufficient\_balance scope\_missing forbidden\_ip forbidden live\_key\_requires\_top\_up limit\_raise\_requires\_dashboard not\_found idempotency\_conflict idempotency\_in\_progress conflict location\_already\_in\_network external\_id\_conflict dispute\_open request\_too\_large address\_not\_verified not\_food\_business metro\_not\_served package\_not\_available account\_location\_limit commit\_limit\_exceeded top\_up\_exceeds\_feasible no\_saved\_card rate\_limited quota\_exceeded slow\_down internal\_error service\_unavailable

**message**

required

string

**field**

The request field at fault

string

**doc\_url**

required

string format: uri

**request\_id**

required

string format: uuid

**items**

Batch\_invalid only. Every refused location, by its index in the request.

Array<object>

object

**index**

required

integer

**code**

required

One of the error codes above.

string

**field**

string

**message**

required

string

#### Example

```json
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "doc_url": "https://www.creatorain.com/api/errors#scope_missing",
    "items": [
      {
        "field": "locations.1.videos_per_month"
      }
    ]
  }
}
```

#### Headers

**Request-Id**

string format: uuid

This request’s id. Equal to error.request\_id; quote it to support.

### 503

Internal\_error (500) or service\_unavailable (503). The message never carries a cause.

Media typeapplication/json

object

**error**

required

object

**type**

required

string

Allowed values: invalid\_request\_error authentication\_error permission\_error idempotency\_error rate\_limit\_error api\_error

**code**

required

string

Allowed values: parameter\_invalid invalid\_json idempotency\_key\_invalid idempotency\_key\_required customization\_not\_supported videos\_per\_month\_out\_of\_range batch\_invalid terms\_not\_accepted invalid\_key test\_key\_on\_live live\_key\_on\_sandbox insufficient\_balance scope\_missing forbidden\_ip forbidden live\_key\_requires\_top\_up limit\_raise\_requires\_dashboard not\_found idempotency\_conflict idempotency\_in\_progress conflict location\_already\_in\_network external\_id\_conflict dispute\_open request\_too\_large address\_not\_verified not\_food\_business metro\_not\_served package\_not\_available account\_location\_limit commit\_limit\_exceeded top\_up\_exceeds\_feasible no\_saved\_card rate\_limited quota\_exceeded slow\_down internal\_error service\_unavailable

**message**

required

string

**field**

The request field at fault

string

**doc\_url**

required

string format: uri

**request\_id**

required

string format: uuid

**items**

Batch\_invalid only. Every refused location, by its index in the request.

Array<object>

object

**index**

required

integer

**code**

required

One of the error codes above.

string

**field**

string

**message**

required

string

#### Example

```json
{
  "error": {
    "type": "invalid_request_error",
    "code": "parameter_invalid",
    "doc_url": "https://www.creatorain.com/api/errors#scope_missing",
    "items": [
      {
        "field": "locations.1.videos_per_month"
      }
    ]
  }
}
```

#### Headers

**Request-Id**

string format: uuid

This request’s id. Equal to error.request\_id; quote it to support.
