Skip to content

Upload a file

POST
/v1/files
curl --request POST \
--url https://api.learningaide.ai/v1/files \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "purpose": "question_paper", "filename": "example", "content_type": "application/pdf", "size_bytes": 1 }'
Idempotency-Key
string
/^[\x21-\x7e]{1,255}$/

A unique value, such as a v4 UUID, that you reuse only to retry this request.

Media typeapplication/json
object
purpose
required
string
Allowed values: question_paper marking_scheme answer_script
filename
required
string
>= 1 characters <= 255 characters /^[^\u0000-\u001f\u007f-\u009f\u202a-\u202e\u2066-\u2069]*$/
content_type
required
string
Allowed values: application/pdf image/jpeg image/png
size_bytes
required
integer
>= 1 <= 104857600

A new object was created. Its processing may continue in the background.

Media typeapplication/json
object
id
required
string
object
required
string
Allowed value: file
livemode
required
boolean
purpose
required
string
Allowed values: question_paper marking_scheme answer_script
filename
required
string
content_type
required
string
Allowed values: application/pdf image/jpeg image/png
size_bytes
required
integer
pages
required
Any of:
integer
status
required
string
Allowed values: awaiting_upload uploaded attached expired
upload
required
Any of:
object
url
required
string format: uri
method
required
string
Allowed value: PUT
headers
required
object
key
additional properties
string
expires_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:Z))$/
created_at
required
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:Z))$/
expires_at
required
Any of:
string format: date-time
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:Z))$/

Example

{
"object": "file",
"purpose": "question_paper",
"content_type": "application/pdf",
"status": "awaiting_upload",
"upload": {
"method": "PUT"
}
}
X-Request-Id
required
string

This request’s ID. Quote it when you contact support.

RateLimit-Limit
integer

Requests allowed per window.

RateLimit-Remaining
integer

Requests left in the current window.

RateLimit-Reset
integer

Seconds until the window resets.

Idempotent-Replayed
string
Allowed value: true

On the saved response to an earlier request with this Idempotency-Key.

An error (client docs, “Errors”).

Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error billing_error permission_error rate_limit_error api_error
code
required
string
Allowed values: parameter_missing parameter_invalid parameter_unknown invalid_json idempotency_key_missing api_key_missing api_key_invalid api_key_revoked insufficient_credits credits_expired insufficient_scope ip_not_allowed account_suspended resource_missing route_not_found idempotency_key_reused idempotency_request_in_progress external_id_taken paper_not_ready paper_not_awaiting_review paper_in_progress paper_has_empty_question review_link_unavailable file_already_attached file_purpose_mismatch file_not_uploaded file_expired submission_exists submission_not_cancelable submission_not_releasable submission_in_progress result_not_available report_not_available too_many_webhook_endpoints request_too_large unsupported_media_type rate_limit_exceeded internal_error service_unavailable
message
required
string
param
required
Any of:
string
resource_id
required
Any of:
string
request_id
required
Any of:
string

Example

{
"error": {
"type": "invalid_request_error",
"code": "parameter_missing"
}
}
X-Request-Id
required
string

This request’s ID. Quote it when you contact support.

RateLimit-Limit
integer

Requests allowed per window.

RateLimit-Remaining
integer

Requests left in the current window.

RateLimit-Reset
integer

Seconds until the window resets.

Retry-After
integer

Seconds to wait before asking again.