API Overview
The ampEducator API provides developers with access to a large subset of ampEducator features, allowing you to access and interact with data in your institution's account.
For a complete list of available resources, endpoints, parameters, and response objects, see the ampEducator Developer API Reference.
Before You Begin
Before using the API:
- An administrator must enable API access under Institution Config.
- Generate or copy the institution's API key from Institution Config.
- Keep your API key secure. Your API key provides access to your institution's data and should not be shared or exposed in client-side code.
Making an API Request
API requests are made using the following endpoint structure:
Where:
- {purl} is your institution's unique ampEducator identifier.
- {resource} identifies the section of the application you are accessing.
- {action} identifies the operation you want to perform.
- {parameters} are any additional values required by the action.
Each endpoint in the Developer API Reference specifies whether it requires a GET or POST request and which parameters are required.
Authentication
Your institution's API key is required to authenticate requests.
The API key can be provided using an HTTP Bearer token:
For endpoints that accept parameters, the API key may also be included as a request parameter:
For integrations, using the Authorization Bearer header is recommended where supported.
Form-Encoded POST Request
JSON POST Requests
Endpoints that accept POST requests can also receive a JSON object as the request body.
Use the following headers:
Example:
API Responses
The API returns responses as JSON.
A typical response follows this structure:
Response Fields
- responseCode — The HTTP response code returned for the requested action.
- messages — General, warning, and error messages related to the request.
- action — The action that was requested.
- query — The parsed query parameters.
- body — The contents of the request body.
- page — The current page of returned data.
- totalPages — The total number of pages available.
- totalRecords — The total number of objects available.
- totalMS — The total queue and execution time in milliseconds.
- data — The objects returned by the API.
Always check the messages object for warnings or errors that may provide additional information about the request.
Response Codes
The API may return the following HTTP response codes:
A 200 response may still contain a warning, so integrations should review the messages object rather than relying on the response code alone.
Filtering Results
Most get and list endpoints support filtering directly on fields of the returned object.
Use the field name and desired value as a query parameter:
Multiple filters can be combined:
When multiple filters are provided, results must match all of the specified values.
If a query parameter matches a field on the underlying object, its value is used as an exact-match filter. Parameter names that do not correspond to a valid field are ignored, so check the parameter name carefully if a filter does not appear to be applying.
Filter values are automatically converted to the underlying field's data type, such as numbers, booleans, or dates. If a value cannot be converted to the expected type, the API returns an HTTP 400 response identifying the invalid field and value.
The following parameter names are reserved for pagination and sorting and cannot be used as field filters:
Pagination and Ordering
List endpoints return results one page at a time.
Pagination
The following parameters can be used to control pagination:
For example:
A paginated response includes information such as:
Continue requesting pages until page equals totalPages.
If you request a page beyond totalPages, the API returns an empty data array rather than an error. Use totalPages to determine when you have reached the end of the result set.
When retrieving a large number of records, increasing limit up to the maximum of 500 can significantly reduce the number of API calls required.
Ordering Results
Results can be ordered using orderBy and orderDir.
For example:
Or in a JSON request:
orderDir accepts:
- asc
- desc
orderBy must match a valid field on the returned object. If the field is not recognized, the API ignores it and returns results in the default order.
Request Handling and Rate Limits
API requests are managed on a per-institution basis to maintain reliable performance.
Request Queuing
Requests from the same institution are processed sequentially, one at a time, in the order received.
If an integration submits multiple API requests at the same time, the requests are queued rather than processed concurrently.
Typical API usage should not be affected. However, large bursts of concurrent requests will take longer to complete because later requests must wait for earlier requests to finish.
Each institution has a limited queue depth. If too many requests are waiting at once, additional requests receive:
A request that waits too long in the queue may receive:
If either occurs, wait before retrying the request and consider reducing the number of concurrent calls.
Rate Limiting
In addition to request queuing, each institution has a limit on the number of requests it can make over time.
This protects against a different pattern than concurrent requests: an integration making continuous, high-frequency calls even if those calls are being sent one at a time.
If the rate limit is exceeded, additional requests receive an HTTP 429 response until the request rate decreases.
This is a rolling limit rather than a hard daily cap, so normal usage recovers automatically as the call rate drops.
Exact rate limits are not published and may be adjusted over time. Integrations making occasional or moderately paced requests, including reasonable bursts such as several requests during a page load, should not normally encounter the limit.
Rate limiting is primarily intended to prevent continuous, high-frequency calling, such as repeatedly retrieving individual records when a batch or filtered request could be used instead.
Temporary Blocks for Sustained Excessive Traffic
If an integration repeatedly exceeds the rate limit over a sustained period, it may be temporarily blocked.
This is particularly likely if an integration continues retrying immediately after receiving 429 responses rather than waiting before retrying.
While temporarily blocked, requests from the institution receive an HTTP 429 response indicating the block.
Repeated excessive traffic may increase the duration of the temporary block. After a sustained period of normal activity, the block duration resets.
To avoid temporary blocks, implement retry-with-backoff rather than immediately retrying a request after receiving a 429 response.
Working With Large Data Sets
When retrieving larger amounts of data:
- Use filtering and pagination to retrieve multiple records in fewer, larger requests.
- Use batch endpoints where available instead of requesting individual records one at a time.
- Request a larger limit, up to 500, for bulk or synchronization operations.
- Avoid large bursts of concurrent requests.
- Add pacing or delays between requests when a batch approach is not available.
- Implement retry-with-backoff for temporary 429 and 504 responses.
For example, if a request receives a 429, wait briefly before retrying. If repeated attempts continue to fail, progressively increase the delay rather than immediately sending another request.
Report Generation
Additional limits apply when generating reports through the API.
A report can be regenerated through the API at most once per hour, per report.
If /report/generate is called again for the same report before one hour has passed since it was last generated, ampEducator returns the most recently generated version instead of starting another report-generation job.
The request still returns an HTTP 200 response and includes a warning indicating that the existing report was returned.
This cooldown applies only to automated API requests. Generating the report manually in ampEducator is not affected.
Most SIS data, such as enrollment, grades, courses, and invoices, does not change frequently enough to require regenerating the same report more than once per hour.
If you have a specific need for more frequent generation of a report, please contact us to discuss your requirements.
If your integration calls /report/generate, always check the messages object for warnings as well as errors.
Report Downloads
The /report/download endpoint is being deprecated.
Report downloads currently return the report file as base64-encoded data directly in the API response. This approach is being replaced with a new endpoint that will return a short-lived download URL instead.
Base64 encoding increases the size of the file being transferred, and returning large files directly within API responses can tie up server resources that could otherwise be used to process other requests. Moving to short-lived download links provides a more efficient approach for report downloads.
The existing /report/download endpoint will continue to work during the transition period.
Details about the replacement endpoint, migration process, and sunset date will be provided separately. Integrations using /report/download should plan to migrate once the replacement endpoint becomes available.
API Usage and Troubleshooting
You can view a log of your institution's recent API calls, including timing and any errors.
This can be a useful first place to check if your integration is experiencing:
- 400 responses
- 429 responses
- Slower-than-expected API calls
- Other unexpected request behaviour
Testing an API Call
A simple API request can be useful when confirming your API key and institution URL.
For example:
Replace {purl} and {apikey} with the values for your institution.
Because this example places the API key in the URL, use it only for testing in a secure environment.
For integrations, use the following header where supported:
Recommended Practices
For reliable and efficient API integrations:
- Use filtering to retrieve only the records you need.
- Use pagination and larger page limits when retrieving larger data sets.
- Avoid repeatedly requesting individual records when a filtered or batch request can be used.
- Avoid unnecessary concurrent requests.
- Add pacing between calls where appropriate.
- Implement retry-with-backoff for 429 and 504 responses.
- Review the API usage log when troubleshooting unexpected responses or performance.
- Check the messages object for warnings as well as errors.
API Reference
This guide covers the general requirements and recommended practices for working with the ampEducator API.
For the complete technical reference, including available resources, methods, required parameters, return objects, and field definitions, see the: