> For the complete documentation index, see [llms.txt](https://developerdocs.instructure.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developerdocs.instructure.com/services/journey/api/rest_api.md).

# REST API

Journey exposes a REST API for resource access alongside its GraphQL endpoint. URLs follow a versioned structure under `/api/v1`, and all requests and responses use JSON over HTTPS. The REST surface is intentionally narrow — single-resource lookups, mutations, and proxy passthroughs — while list-style queries live on the GraphQL schema. See [graphql](/services/journey/api/graphql.md).

> **Endpoint reference:** the complete, generated list of REST endpoints lives in [rest\_reference.md](/services/journey/api/rest_reference.md).

## URL structure

Every REST URL is composed of the host, the global prefix `/api`, the version segment `v1/`, and a resource path. For example:

```
https://journey-server-prod.us-east-1.core.inseng.io/api/v1/programs
```

The global `/api` prefix and the `v1/` version segment are applied consistently across all REST endpoints.

## Verbs

Journey follows standard REST verb conventions:

* `GET` — read a resource
* `POST` — create a resource or invoke a non-idempotent action
* `PUT` — replace a resource
* `PATCH` — partially update a resource
* `DELETE` — remove a resource

## Content types

Requests with a body must send `Content-Type: application/json`. Responses are always `application/json`. Form-encoded bodies are not accepted. File uploads (e.g. user imports) use `multipart/form-data` on the specific endpoints that document it.

## Interactive reference

A running server exposes an interactive API reference at `/api` and the OpenAPI JSON document at `/api/openapi/json` — e.g. <https://journey-server-prod.us-east-1.core.inseng.io/api> and <https://journey-server-prod.us-east-1.core.inseng.io/api/openapi/json>.

## Idempotency

`GET`, `PUT`, and `DELETE` are idempotent by HTTP convention. Journey does not honor an `Idempotency-Key` request header; clients that need at-most-once semantics on `POST` should rely on resource-specific idempotency (e.g. the enrollment endpoints return the existing record when called twice with the same inputs).

See also [authentication](/services/journey/api/authentication.md), [errors](/services/journey/api/errors.md), [pagination](/services/journey/api/pagination.md), [permissions](/services/journey/api/permissions.md), [object\_ids](/services/journey/api/object_ids.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developerdocs.instructure.com/services/journey/api/rest_api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
