For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Developer Tools
CommunityContact UsConsole
DocsAPI Reference
DocsAPI Reference
  • API Reference
      • GETAdvanced search for Assets
      • POSTAdvanced search for Assets
      • POSTBulk copy assets
      • DELBulk delete assets
      • POSTCopy asset
      • POSTCreate an Asset
      • DELDelete an Asset
      • GETFetch child Assets
      • GETGet an Asset
      • GETGet audio for an Asset
      • GETGet the subtitles for an Asset
      • POSTMove asset
      • POSTRequest upload URLs for real-time upload
      • GETSearch for Assets
      • POSTSearch for Assets
      • DELUnversion an Asset
      • PUTUpdate an Asset
      • POSTVersion an Asset

© 2026 Adobe Inc. All rights reserved.

TermsPrivacyDo not sell or share my personal information
Developer-friendly docs for your API
Logo
Developer Tools
CommunityContact UsConsole
API ReferenceAssets

Create an Asset

POST
https://api.frame.io/v2/assets/:asset_id/children
POST
/v2/assets/:asset_id/children
1import requests
2
3url = "https://api.frame.io/v2/assets/asset_id/children"
4
5payload = {
6 "type": "file",
7 "name": "project_clip_01.mp4",
8 "filetype": "video/mp4",
9 "is_realtime_upload": True
10}
11headers = {
12 "Authorization": "Bearer <token>",
13 "Content-Type": "application/json"
14}
15
16response = requests.post(url, json=payload, headers=headers)
17
18print(response.json())
1{
2 "account_id": "a3f1c9d2-4b7e-4f3a-9c1e-2d5b6f7a8c9d",
3 "archive_from": "2024-01-15T09:30:00Z",
4 "archive_scheduled_at": "2024-01-15T09:30:00Z",
5 "archive_status": "scheduled",
6 "archived_at": "2024-01-15T09:30:00Z",
7 "asset_type": "document",
8 "bundle": true,
9 "bundle_view": "grid",
10 "cover_asset_id": "d4e5f6a7-b8c9-4d0e-9f1a-2b3c4d5e6f7g",
11 "creator": {
12 "digest_frequency": "weekly",
13 "image_32": "https://cdn.frame.io/images/users/32/user123.png",
14 "image_128": "https://cdn.frame.io/images/users/128/user123.png",
15 "from_google": true,
16 "mfa_enforced_at": "2023-12-01T08:00:00Z",
17 "email": "jane.doe@example.com",
18 "name": "Jane Doe",
19 "image_64": "https://cdn.frame.io/images/users/64/user123.png",
20 "timezone_value": "America/New_York",
21 "account_id": "a3f1c9d2-4b7e-4f3a-9c1e-2d5b6f7a8c9d",
22 "updated_at": "2024-04-10T12:00:00Z",
23 "image_256": "https://cdn.frame.io/images/users/256/user123.png",
24 "_type": "user",
25 "user_hash": "hash_abc123xyz",
26 "upload_url": "https://uploads.frame.io/user123",
27 "profile_image": "https://cdn.frame.io/images/users/profile/user123.png",
28 "first_login_at": "2022-05-15T09:00:00Z",
29 "joined_via": "google_oauth",
30 "id": "user-1234-5678-9012",
31 "next_digest_date": "2024-04-17T09:00:00Z",
32 "last_seen": "2024-04-12T15:30:00Z",
33 "inserted_at": "2022-05-15T09:00:00Z",
34 "from_adobe": true,
35 "avatar_color": "#4A90E2",
36 "highest_account_role": "admin",
37 "integrations": [
38 "slack",
39 "dropbox"
40 ],
41 "roles": {
42 "admin": true,
43 "id": "role-7890",
44 "sales": true,
45 "support": true,
46 "service_desk": false
47 },
48 "user_default_color": "#FF5733"
49 },
50 "frames": 2400,
51 "hard_deleted_at": "2024-02-14T09:30:00Z",
52 "id": "e7f8a9b0-c1d2-4e3f-8a9b-0c1d2e3f4a5b",
53 "index": 1.1,
54 "is_bundle_child": true,
55 "is_hls_required": true,
56 "is_session_watermarked": true,
57 "item_count": 5,
58 "label": "approved",
59 "metadata": {},
60 "metadata_flags": {
61 "id": "f1e2d3c4-b5a6-7890-1234-56789abcdef0",
62 "is_360": false,
63 "is_hdr": true,
64 "is_original_player_compatible": true
65 },
66 "name": "project_clip_01.mp4",
67 "original": "https://cdn.frame.io/assets/e7f8a9b0-c1d2-4e3f-8a9b-0c1d2e3f4a5b/original.mp4",
68 "parent_asset_id": "b1c2d3e4-f5a6-7890-1234-56789abcdef0",
69 "project_id": "c1d2e3f4-a5b6-7890-1234-56789abcdef0",
70 "properties": {
71 "": "metadata_value"
72 },
73 "required_transcodes": {
74 "cover": true,
75 "finalized": [
76 "thumb",
77 "h264_720",
78 "h264_1080_best"
79 ],
80 "h264_1080_best": true,
81 "h264_2160": true,
82 "h264_360": true,
83 "h264_540": true,
84 "h264_720": true,
85 "image_full": true,
86 "image_high": true,
87 "page_proxy": true,
88 "thumb": true,
89 "thumb_540": true,
90 "thumb_orig_ar_540": true,
91 "thumb_scrub": true
92 },
93 "team_id": "d1e2f3a4-b5c6-7890-1234-56789abcdef0",
94 "user_permissions": {
95 "can_download": true,
96 "can_modify_template": true,
97 "can_public_share_presentation": true,
98 "can_public_share_review_link": true,
99 "can_share_downloadable_presentation": true,
100 "can_share_downloadable_review_link": true,
101 "can_share_unwatermarked_presentation": true,
102 "can_share_unwatermarked_review_link": true
103 },
104 "type": "file",
105 "view_count": 42
106}
Create a new asset.
Was this page helpful?
Previous

Delete an Asset

Next

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

asset_idstringRequiredformat: "uuid"

Request

While supported, we encourage you to switch from application/x-ww-form-urlencoded to application/json in order to support future workflows that will only be supported through JSON.

When is_realtime_upload is true, call must be made in application/json.

typeenumRequired

Must be file if is_realtime_upload is true.

Allowed values:
namestringOptional
The name the asset should have in Frame.io. This value does not have to match the name of the file on disk; it can be whatever you want it to be in Frame.io. Required if `is_realtime_upload` is `false`. If `is_realtime_upload` is `true`, must containa valid extension in the form of `".[ext]"`, unless `extension` is provided, in which case this field may be `null` or omitted.
extensionstringOptional
Required when `is_realtime_upload` is `true`, when `name` is not known at time of asset creation. If `name` is provided, must match extension of that value. Ignored when `is_realtime_upload` is `false`. When supplied, asset will be creted with `name` value of `"[new file].extension"`.
filetypestringOptional

MIME type like video/quicktime. Many languages have built in utilities for detecting file mimetype (see Go and Python for examples).

Required if is_realtime_upload is true.

is_realtime_uploadbooleanOptionalDefaults to false

If true, File data for this asset is to be uploaded through the Real-time Uploads API.

If false, File data for this asset will be uploaded through the default API.

Must be false if filetype is not file.

descriptionstringOptional
Brief description of the Asset
filesizeintegerOptional

File size in bytes.

Required if is_realtime_upload is not true.

propertiesobjectOptional

Custom key-value data

sourceobjectOptional

Response headers

x-ratelimit-limitdouble

The number of times you can make this call within the x-ratelimit-window

x-ratelimit-remainingstring

The number of remaining times you can make this API call in the x-ratelimit-window

x-ratelimit-windowstring
The length in milliseconds of the rate limit window

Response

Asset create success response.

When is_realtime_asset was set to true in the request, a simplified payload will be returned.

object
OR
RealtimeAssetCreateResponseobject

Errors

400
Bad Request Error
401
Unauthorized Error
404
Not Found Error
429
Too Many Requests Error

The name the asset should have in Frame.io. This value does not have to match the name of the file on disk; it can be whatever you want it to be in Frame.io.

Required if is_realtime_upload is false.

If is_realtime_upload is true, must containa valid extension in the form of ".[ext]", unless extension is provided, in which case this field may be null or omitted.

Required when is_realtime_upload is true, when name is not known at time of asset creation. If name is provided, must match extension of that value.

Ignored when is_realtime_upload is false.

When supplied, asset will be creted with name value of "[new file].extension".