---
title: "Get a service’s OpenAPI document – Superbot API"
canonical_url: "https://superbot.gg/developers/endpoints/getServiceDocument"
summary: "One shipped service’s learned endpoints as an OpenAPI 3.1 document (`x-path-templates`, `x-superbot-replay`): endpoint shapes, header rule names and provenance, never an example value or a credential."
---

> Markdown of https://superbot.gg/developers/endpoints/getServiceDocument. Site index: /llms.txt.

# Get a service’s OpenAPI document

`GET /docs/services/{service_id}.json`

One shipped service’s learned endpoints as an OpenAPI 3.1 document (`x-path-templates`, `x-superbot-replay`): endpoint shapes, header rule names and provenance, never an example value or a credential.

- Operation id: `getServiceDocument`
- Group: [Endpoints](https://superbot.gg/developers/endpoints.md)
- Auth: No credential needed; any live caller key (`Authorization: Bearer sbc_…` or `x-api-key: sbc_…`), or a signed-in session is also accepted.
- Scopes: none

## Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `service_id` | string | required | The service id, e.g. `doordash`. |

## Response 200

The service as OpenAPI 3.1.

`application/json`: object.

## Errors

Every refusal carries `error`, `message`, `doc_url` and `request_id`; the gateway routes answer in the dialect you dialed.

| Status | Codes | When |
| --- | --- | --- |
| 404 | [`not_found`](https://superbot.gg/developers#errors-not_found) | No such resource on this account. |

## Examples

```sh
curl -sS -X GET "https://superbot.gg/docs/services/$SERVICE_ID.json"
```

```js
const serviceId = 'SERVICE_ID';
const res = await fetch(`https://superbot.gg/docs/services/${serviceId}.json`, {
  method: 'GET',
});
console.log(res.status, await res.json());
```

```python
import os
import requests

service_id = "SERVICE_ID"
res = requests.request(
    "GET",
    f"https://superbot.gg/docs/services/{service_id}.json",
)
print(res.status_code, res.json())
```
