API 문서

콘텐츠 목록

워크스페이스에 등록된 콘텐츠를 최근 등록한 것부터 돌려줍니다.

버전: v1

01 콘텐츠 목록

1.1 설명

GET/contents

external_id 를 주면 목록이 아니라 그 식별자의 콘텐츠 한 건을 돌려줍니다. 이때 응답에는 items 가 없고 content 만 있습니다. 제작 시스템이 「내가 보낸 그것이 들어갔는지」를 확인하는 자리입니다.

한 줄에는 그 콘텐츠의 첨부(assets)와 채널별 예약(publications)이 같이 실립니다. 예약만 시각 순으로 훑고 싶으면 GET /publishes 가 그 일을 합니다.

1.2 파라미터

콘텐츠 목록 파라미터
이름구분설명
workspace필수워크스페이스 코드
external_id선택주면 목록 대신 그 외부 식별자의 콘텐츠 한 건만 돌려줍니다
limit선택가져올 줄 수. 기본 100 이고 1~200 으로 조정됩니다(벗어난 값은 가장 가까운 값이 됩니다)

1.3 요청

Terminal — bash
curl "https://moacast.com/api/moacast/v1/contents?workspace=a1b2c3d4&external_id=value" \
  -H 'Authorization: Bearer <ACCESS_TOKEN>'

1.4 성공 응답

Response — JSON
{
    "result": "SUCCESS",
    "result_code": 0,
    "data": {
        "workspace": "a1b2c3d4",
        "items": [
            {
                "id": 12,
                "external_id": "job-2026-0927-01",
                "content_type": "video",
                "title": "9월 넷째 주 요약",
                "body": "이번 주에 있었던 일",
                "hashtags": [
                    "주간요약"
                ],
                "language": "ko",
                "platform_metadata": {
                    "youtube": {
                        "title": "9월 4주차 주간 요약"
                    }
                },
                "metadata": {
                    "production": {
                        "duration_seconds": 62,
                        "width": 1080,
                        "height": 1920,
                        "fps": 30
                    }
                },
                "produced_at": "2026-09-27 05:00:00",
                "created_at": "2026-09-27 14:10:02",
                "updated_at": "2026-09-27 14:10:02",
                "assets": [
                    {
                        "asset_type": "MASTER_VIDEO",
                        "mime": "video/mp4",
                        "size_bytes": 18234112,
                        "url": "https://…/moacast/3/12/1790000000-ab12cd.mp4?X-Amz-Signature=…",
                        "url_expires_in": 300
                    }
                ],
                "publications": [
                    {
                        "id": 34,
                        "channel": "youtube",
                        "external_id": "UC...",
                        "status": "SCHEDULED",
                        "publish_at": "2026-09-28T01:00:00+00:00",
                        "visibility": "public",
                        "platform_options": []
                    }
                ]
            }
        ]
    }
}

1.5 필드

콘텐츠 목록 필드
필드타입설명
workspacestring워크스페이스 코드. external_id 로 한 건을 받을 때는 실리지 않습니다
itemsarray콘텐츠 목록. 최근 등록한 것부터. 한 줄의 모양은 아래와 같습니다
contentobjectexternal_id 를 준 경우에만. 모양은 items 의 한 줄과 같습니다

콘텐츠 한 줄

콘텐츠 목록 필드
필드타입설명
idint콘텐츠 ID. 예약을 걸 때 content_id 로 씁니다
external_idstring외부 제작 시스템의 멱등 식별자. 없으면 null
content_typestringvideo · text · article · image · carousel
titlestring공통 제목
bodystring공통 본문 또는 설명
hashtagsarray공통 해시태그. 문자열 배열입니다
languagestring언어 코드. 등록 때 주지 않으면 ko 입니다
platform_metadataobject플랫폼별 제목·본문 덮어쓰기. 열쇠는 채널 키, 값은 title · body 를 담은 객체입니다. 넣은 적이 없으면 언제나 빈 객체 {} 로 나옵니다. 배열 [] 이 나오는 경우는 없습니다
metadataobject제작 시스템 확장 메타데이터. 영상 규격을 보냈으면 production 아래에 duration_seconds·width·height·fps 가 들어 있습니다
produced_atstring제작 완료 UTC 시각(YYYY-MM-DD HH:MM:SS). 없으면 null
created_atstring등록 시각. UTC 기준 YYYY-MM-DD HH:MM:SS
updated_atstring수정 시각. UTC 기준 YYYY-MM-DD HH:MM:SS
assetsarray첨부 목록. 한 줄의 모양은 아래와 같습니다
publicationsarray채널별 예약 목록. 한 줄의 모양은 아래와 같습니다

assets 의 한 줄

콘텐츠 목록 필드
필드타입설명
asset_typestringMASTER_VIDEO(영상 원본) · THUMBNAIL(썸네일) · CAROUSEL_ITEM(여러 장 중 한 장)
sort_orderint같은 asset_type 이 여럿일 때의 순서입니다. 0부터이고, 이 차례로 올라갑니다. 한 장뿐인 유형은 언제나 0 입니다
mimestring업로드 때 서버가 판정한 MIME 유형
size_bytesint파일 크기(바이트)
urlstring그 파일을 받을 수 있는 주소입니다. 수명이 짧습니다 — 저장하거나 캐시하지 말고, 필요할 때 이 API 를 다시 불러 새로 받으세요. 주소를 만들 수 없으면 null 입니다
url_expires_ininturl 이 유효한 시간(초). 지금은 300 입니다. url 이 null 이면 이 값도 null 입니다

publications 의 한 줄

콘텐츠 목록 필드
필드타입설명
idint예약 ID
channelstring채널 키. youtube · instagram · facebook · threads · tiktok · x · linkedin
external_idstring예약한 계정의 식별자입니다. 같은 플랫폼에 계정이 여럿일 때 어느 계정의 예약인지 이 값으로 가릅니다
statusstringSCHEDULED · PUBLISHED · FAILED · CANCELLED
publish_atstring예약 시각. UTC 기준 ISO-8601 입니다
visibilitystringpublic · unlisted · private
platform_optionsobject플랫폼별 발행 옵션. 없으면 빈 객체

1.6 실패

콘텐츠 목록 실패
코드HTTP언제
9912400workspace 를 주지 않았습니다
1001401헤더가 없거나 토큰이 올바르지 않습니다
2000404그 워크스페이스가 없거나, 이 토큰으로 다룰 수 없습니다. external_id 로 찾지 못한 경우도 같습니다
5000503콘텐츠 저장소가 준비되지 않았습니다

이 호출은 플랫폼을 부르지 않습니다. 우리 원장만 읽습니다.