> 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.md).

# API

Journey is a separate Instructure service that lives alongside Canvas LMS. It hosts skills, experiences, programs, the learning library, and dashboards for users who are already authenticated through Canvas. Journey owns its own resources and reads users, accounts, courses, and enrollments from Canvas via the Canvas REST and GraphQL APIs — see [canvas\_integration](/services/journey/api/canvas_integration.md).

The API has two surfaces, both served by the same service on the same authentication: a **REST** API rooted at `/api/v1` and a **GraphQL** API at `/graphql`. REST hosts single-resource lookups and mutations with standard HTTP semantics; GraphQL hosts list queries and relational reads where you want to pick fields and traverse relationships in one round trip.

The docs in this directory are conceptual and cross-cutting — authentication, permissions, error shape, ID conventions, and so on. Per-endpoint reference is auto-generated from the running app; see [Endpoint reference](#endpoint-reference) below.

## Schema basics

* All API access is over HTTPS.
* All requests and responses use JSON. Form-encoded bodies are not accepted outside of the file-upload endpoints that explicitly document `multipart/form-data`.
* Timestamps are ISO 8601 strings in UTC.
* IDs that originate in Journey are v4 UUIDs; IDs that originate in Canvas are preserved as Canvas-format strings — never JSON numbers. See [object\_ids](/services/journey/api/object_ids.md).
* Credentials are always sent as `Authorization: Bearer <token>`. See [authentication](/services/journey/api/authentication.md).

## Getting started

The guides below are roughly ordered from "you need this on every request" to "you need this only when something specific comes up":

* [Authentication](/services/journey/api/authentication.md) — Canvas JWT for end users; service token / outbound service JWT for inter-service traffic.
* [Permissions](/services/journey/api/permissions.md) — Canvas-backed permission checks, account scoping, and the difference between `401` and `403`.
* [REST API conventions](/services/journey/api/rest_api.md) — URL structure under `/api/v1`, verbs, content types, and the interactive reference at `/api`.
* [GraphQL](/services/journey/api/graphql.md) — endpoint at `/graphql`, when to pick it over REST, and how to view the schema.
* [Pagination](/services/journey/api/pagination.md) — GraphQL cursor convention; REST list endpoints are mostly unpaginated, with Canvas-proxy routes preserving Canvas's `Link`-header semantics.
* [Errors](/services/journey/api/errors.md) — error response envelope, HTTP status codes, and the shape of GraphQL `errors` entries.
* [Object IDs](/services/journey/api/object_ids.md) — Journey UUIDs vs. Canvas global IDs / UUIDs, and how GraphQL evolves via `@deprecated`.
* [Canvas Integration](/services/journey/api/canvas_integration.md) — how Journey relates to Canvas: identity, data ownership, and outbound calls.

## Endpoint reference - BASE URLs

The Journey API is available at the following base URLs. Be sure to use the AWS region appropriate for your account.

```
https://journey-server-prod.ap-southeast-1.core.inseng.io
https://journey-server-prod.ap-southeast-2.core.inseng.io
https://journey-server-prod.ca-central-1.core.inseng.io
https://journey-server-prod.eu-central-1.core.inseng.io
https://journey-server-prod.eu-west-1.core.inseng.io
https://journey-server-prod.us-east-1.core.inseng.io
https://journey-server-prod.us-west-2.core.inseng.io
```

Throughout these docs, we refer to the base URL as `https://journey-server-prod.us-east-1.core.inseng.io` for simplicity, but replace the region as appropriate.

**REST.** The interactive REST reference is available at `/api`, and the OpenAPI JSON document at `/api/openapi/json`.

**GraphQL.** The schema is available via introspection against the GraphQL endpoint in non-production environments. To inspect it, point a GraphQL client at the running endpoint.

## Stability

`v1/` is the current — and only — stable major version of the REST API. Additive changes (new endpoints, new optional parameters, new response fields) ship under `v1/` without a version bump; clients should tolerate unknown fields. Breaking changes are avoided and would require a `v2/` prefix. GraphQL is unversioned and evolves in place: fields are retired with the `@deprecated` directive and continue to return data until a later removal.


---

# 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.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.
