Showing results for 
Show  only  | Search instead for 
Did you mean: 
Community Member

Multiple technical/API questions


I just started working on automated integrations against the Canvas API and I've gathered a bunch of questions that I wanted to check if anyone here could help me with. Here goes:

  1. Can you route outgoing mails from Canvas via a SMTP-server hosted by us to allow pre-processing of mails?
  2. Is it possible to route activity logs from Canvas to a log server (ELK) hosted by us?
  3. Is it possible to obtain machine friendly ouput (json, xml..) from to allow us to monitor it from our own monitoring systems?
  4. Does Canvas in any way support the client credential grant for OAuth server-to-server authentication? The current implementation of manually generating tokens via the UI is first of all not by any mean a standardised way to work with OAuth. And if you don't want to manually generate a new token every now and again, this also poses a security risk since the token gives full administrative access via the API. This also prohibits use of most existing OAuth libraries, since they often use standardised OAuth grant flows out of the box.
  5. How come the API uses different field names for different HTTP verbs? For example; when using GET for a course, the name of the course has the field name "name". When using PUT to update that same course, the field should all of a sudden be called "course[name]". This has several implications on integrations; it prohibits use of ORMs in a straight forward way and it also prohibits the possibility of directly updating obtained data through GET and directly posting it back to the API via a PUT without altering the data schema.

If anyone could point me in the right direction regarding any of the above questions I would be super grateful Smiley Happy


Jens Tinglev

IT Architect at KTH - Royal Institute of Technology

Labels (1)
2 Replies
Community Participant


At least of few of your questions can be answered with the Canvas API Docs​.

I am not sure about the answer to 1, though I have never seen any options like that in Canvas.

2) Depending on the logs you want, there are several API endpoints that might help (mostly Analytics). If you have access to Canvas Data for your account, then there is even more available.

3) There is an RSS feed of Canvas Status

4) Canvas supports OAuth

5) I agree that Canvas field naming for POST and PUT requests seems incorrect. However, the prefix is always the name of the resource (e.g. user, course, enrollment) so it is fairly easy to handle in your own code.

I hope this helps!

Community Participant

I believe Jens and I ran into the same problem: we wanted to use OAuth for server-to-server communication, however the flow that Canvas supports (Authorization Code Grant) is not well suited for that. OAuth 2 does have a flow named Client Credentials Grant that would be a better fit. I will be submitting a feature request for that addition.