2Slides Logo
2Slides API チュートリアル - AIプレゼンテーション生成の完全ガイド
2Slides Team
9 min read

2slides APIチュートリアル - AIプレゼンテーション生成の完全ガイド

2slides APIの包括的なガイドへようこそ!このチュートリアルでは、AIを活用したプレゼンテーション生成をアプリケーションに統合するために必要なすべての情報をご案内します。

概要

2slides APIを使用すると、AIを活用してプロフェッショナルなプレゼンテーションをプログラムで生成できます。タイムライン、ロードマップ、マインドマップなど、複数のプレゼンテーションタイプに対応しており、シンプルなテキスト入力から魅力的なスライドを作成できます。

主な機能

  • AIを活用した生成: テキストからプロフェッショナルなプレゼンテーションを自動生成
  • 複数のテンプレートタイプ: タイムライン、ロードマップ、マインドマップ、ピッチデッキ、インフォグラフィックなどに対応
  • 多言語対応: 複数の言語でコンテンツを生成
  • 豊富なテンプレートライブラリ: プロがデザインした数百種類のテンプレートにアクセス可能
  • カスタムテンプレート: 独自のカスタムスライドテンプレートをアップロードして使用
  • テンプレート検索: 名前、キーワード、タグでテンプレートを検索
  • ダウンロードオプション: PowerPoint (.pptx) 形式でプレゼンテーションを取得
  • リアルタイムステータストラッキング: ジョブステータスエンドポイントで生成の進捗を監視

主要なプレゼンテーションタイプ

Image

すべてのプレゼンテーションテンプレートはこちらで利用可能です:2slides Templates。特に、特定の目的やシナリオに非常に適した主要なプレゼンテーションタイプがいくつかあります。

  1. Timeline Slides - プロジェクトのタイムラインや歴史的イベントに最適
  2. Roadmap Slides - 製品ロードマップやプロジェクト計画に理想的
  3. Mind Map Slides - コンセプトマッピングや知識構造化に優れています

はじめに

ベースURL

すべてのAPIリクエストは以下に対して行われます:

https://2slides.com

前提条件

  1. アカウント設定: 2slides.comでアカウントを作成します
  2. APIキー: API管理ページからAPIキーを生成します
  3. クレジット: スライド生成に十分なクレジットがあることを確認してください(スライド1ページあたり10クレジット)

クイックスタート

  1. API管理ページからAPIキーを取得
  2. テーマ検索エンドポイントを使用してテーマを検索するか、テンプレートを参照してスライドテーマIDを取得
  3. コンテンツと選択したテーマIDを使用してスライドを生成します。これは、結果スライドが返される同期呼び出しと、ジョブIDが返される非同期呼び出しの両方をサポートしています。同期呼び出しを使用する場合、次のステップ4と5は不要です。
  4. 完了するまでジョブステータスを確認します。生成されたスライドのダウンロードURLが提供されます。
  5. 提供されたダウンロードURLを使用してプレゼンテーションをダウンロード

認証

Image

すべてのAPIエンドポイントはAPIキーを使用した認証が必要です。API管理インターフェースを通じてAPIキーを管理できます。

APIキーの形式

APIキーは以下の形式に従います:

sk-2slides-{64-character-hex-string}

認証方法

Authorizationヘッダー

Authorization: Bearer sk-2slides-your-api-key-here

APIキーの管理

  • 最大キー数: 各ユーザーは最大10個のAPIキーを作成できます
  • キーの命名: 簡単に識別できるよう、キーに分かりやすい名前を付けてください
  • セキュリティ: APIキーは安全に保管し、決して公開しないでください
  • ローテーション: セキュリティ強化のため、定期的にAPIキーをローテーションしてください

⚠️ 重要なセキュリティ通知: 2slidesプラットフォームは、セキュリティ上の理由からAPIキーを平文で保存しません。生成後、すぐにAPIキーをコピーして安全に保管してください。APIキーを紛失した場合、元のキーは復元できないため、新しいキーを生成する必要があります。

APIエンドポイント

1. スライド生成 (Fast PPT)

特定のテーマを使用して、テキスト入力からスライド(Fast PPT)を生成します。

Endpoint:

POST /api/v1/slides/generate

Headers:

Authorization: Bearer sk-2slides-your-api-key-here Content-Type: application/json

Request Body:

{ "userInput": "Your presentation content here...", "themeId": "theme-uuid-here", "responseLanguage": "Auto" }

パラメーター:

  • userInput
    (必須): スライドを生成したいコンテンツ
  • themeId
    (必須): スライド生成に使用するテーマのID。これは以下の場合があります:
  • responseLanguage
    (オプション): 生成されるスライドの言語。自動検出には「Auto」を使用します
  • mode
    (オプション): 同期(sync)または非同期(async)呼び出し。「sync」がデフォルトです。

利用可能な言語:

  • Auto
    - 入力から言語を自動検出(デフォルト)
  • English
    - 英語
  • Simplified Chinese
    - 簡体字中国語
  • Traditional Chinese
    - 繁体字中国語
  • Spanish
    - スペイン語
  • Arabic
    - アラビア語
  • Portuguese
    - ポルトガル語
  • Indonesian
    - インドネシア語
  • Japanese
    - 日本語
  • Russian
    - ロシア語
  • Hindi
    - ヒンディー語
  • French
    - フランス語
  • German
    - ドイツ語
  • Vietnamese
    - ベトナム語
  • Turkish
    - トルコ語
  • Polish
    - ポーランド語
  • Italian
    - イタリア語
  • Korean
    - 韓国語

非同期モードでのレスポンス:

{ "success": true, "data": { "jobId": "job-uuid-here", "status": "processing", "message": "Slides generation started. Use the jobId to check status.", "credits": { "current": 150, "required": 30 } } }

同期モードでのレスポンス:

{ "success": true, "data": { "jobId": "1pFqIww3JjquQ1T3Ysmw1", "status": "success", "message": "Slides generated successfully", "downloadUrl": "https://presigned-url-here", "createdAt": 1760347015388, "updatedAt": 1760347048261, "duration": 32694, "slidePageCount": 9 } }

2. ジョブステータスの確認 (Fast PPT)

スライド生成ジョブ(Fast PPT)のステータスを確認し、完了時に結果を取得します。

Endpoint:

GET /api/v1/jobs/{jobId}

Headers:

Authorization: Bearer sk-2slides-your-api-key-here

レスポンス例:

処理中:

{ "success": true, "data": { "jobId": "job-uuid-here", "status": "processing", "message": "Slides generation in progress", "createdAt": 1703123456789, "updatedAt": 1703123460000 } }

成功:

{ "success": true, "data": { "jobId": "job-uuid-here", "status": "success", "message": "Slides generated successfully", "downloadUrl": "https://presigned-url-here", "createdAt": 1703123456789, "updatedAt": 1703123500000, "duration": 33211, "slidePageCount": 3 } }

失敗:

{ "success": true, "data": { "jobId": "job-uuid-here", "status": "failed", "message": "Slides generation failed", "errorMessage": "Insufficient credits for generation", "createdAt": 1703123456789, "updatedAt": 1703123460000 } }

3. このようなスライドを作成 (Nano Banana Pro)

参照画像からスライド(Nano Banana Pro)を生成します。このエンドポイントは同期モードを使用し、すべてのスライドが完了すると自動的にPDFを生成します。

Endpoint:

POST /api/v1/slides/create-like-this

Headers:

Authorization: Bearer sk-2slides-your-api-key-here Content-Type: application/json

Request Body:

{ "userInput": "Your presentation content here...", "referenceImageUrl": "https://example.com/reference-image.jpg", "responseLanguage": "Auto", "aspectRatio": "16:9", "resolution": "2K", "page": 1 }

パラメーター:

  • userInput
    (必須): スライドを生成したいコンテンツ
  • referenceImageUrl
    (必須): デザインスタイルに従う参照画像のURL。対応形式:
    • HTTP/HTTPS URL
    • Base64データURL (data:image/...)
  • responseLanguage
    (オプション): 生成されるスライドの言語。自動検出には「Auto」を使用します(デフォルト:「Auto」)
  • aspectRatio
    (オプション): スライドのアスペクト比。形式:「幅:高さ」(デフォルト:「16:9」)
  • resolution
    (オプション): スライド画像の解像度。オプション:「1K」、「2K」、「4K」(デフォルト:「2K」)
  • page
    (オプション): 生成するスライドの数。自動検出には0を使用します。指定した数のスライドを強制的に生成するには、数値を指定します(1以上、最大100)。デフォルト:1。
  • contentDetail
    (オプション): スライドのコンテンツ詳細レベル。オプション:「concise」(簡潔、キーワード重視)または「standard」(包括的、詳細)。デフォルト:「concise」。

レスポンス:

{ "success": true, "data": { "jobId": "job-uuid-here", "status": "success", "message": "Successfully generated 5 slides", "downloadUrl": "https://presigned-url-to-pdf.pdf", "jobUrl": "https://2slides.com/workspace?jobId=job-uuid-here", "createdAt": 1703123456789, "updatedAt": 1703123500000, "slidePageCount": 5, "successCount": 5, "failedCount": 0 } }

ステータス値:

  • success
    : すべてのスライドが正常に生成され、PDFが利用可能です
  • partial
    : 一部のスライドの生成に失敗しました
  • failed
    : すべてのスライドの生成に失敗しました

: このエンドポイントは同期モードで実行され、すべてのスライドが生成されるまで待機してから結果を返します。

4. テーマ検索 (Fast PPT)

キーワードで利用可能なスライドテーマ(Fast PPT)を検索します。これには、公開テーマと独自のカスタムアップロードテーマの両方が含まれます。

Endpoint:

GET /api/v1/themes/search

Headers:

Authorization: Bearer sk-2slides-your-api-key-here

クエリパラメーター:

  • query
    (必須): テーマ名、説明、タグで検索するキーワード
  • limit
    (オプション): 結果の最大数(1~100、デフォルト20)

リクエスト例:

GET /api/v1/themes/search?query=timeline&limit=10

レスポンス:

{ "success": true, "data": { "total": 25, "themes": [ { "id": "theme-uuid-1", "name": "Modern Timeline", "description": "Clean and modern timeline template for project presentations", "tags": "timeline, modern, project, clean", "themeURL": "https://2slides.com/templates/st-1759917935785-nx0z6ae54" }, { "id": "theme-uuid-2", "name": "Business Roadmap", "description": "Professional roadmap template for business planning", "tags": "roadmap, business, planning, professional", "themeURL": "https://2slides.com/templates/st-1755509077270-sftfm616s" } ] } }

レート制限

APIは、公正な利用とシステム安定性を確保するためにレート制限を実装しています。エンドポイントごとに異なるレート制限があります:

EndpointTime WindowMax RequestsDescription
/api/v1/slides/generate
1 minute6 requestsコア生成エンドポイント
/api/v1/slides/create-like-this
1 minute6 requests参照画像からスライドを作成
/api/v1/jobs
1 minute10 requestsジョブステータスの確認
/api/v1/themes/search
1 minute30 requestsテーマ検索

レート制限ヘッダー

レート制限を超過すると、APIはこれらのヘッダーとともに「429 Too Many Requests」レスポンスを返します:

HTTP/1.1 429 Too Many Requests X-RateLimit-Limit: 6 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1703123600 Retry-After: 45

レート制限の処理

API呼び出しのレート制限は慎重に処理する必要があります。以下にJavascriptの例を示します。

async function makeApiRequest(url, options) { try { const response = await fetch(url, options); if (response.status === 429) { const retryAfter = response.headers.get('Retry-After'); console.log(`Rate limited. Retry after ${retryAfter} seconds`); await new Promise(resolve => setTimeout(resolve, retryAfter * 1000)); return makeApiRequest(url, options); // Retry } return response; } catch (error) { console.error('API request failed:', error); throw error; } }

クレジットシステム

2slidesはスライド生成にクレジットベースのシステムを使用しています。スライド1ページあたり10クレジットが必要です。

クレジットルール

  • 新規ユーザー: 登録時に880クレジットを無料で受け取れます
  • 費用: スライド1ページあたり10クレジット(Fast PPT)、1K/2K Nano Banana Proスライド1ページあたり100クレジット、4K Nano Banana Proスライド1ページあたり200クレジット
  • 最低必要数: 生成を開始するには最低10クレジットが必要です
  • 控除: クレジットは生成が成功した後にのみ控除されます
  • 返金: 生成が失敗した場合、クレジットは返金されます

クレジットの確認

アカウントダッシュボードでクレジット残高を確認できます。またはAPIレスポンスのクレジット情報を確認することでも可能です。

クレジットの購入

追加クレジットは、料金ページから様々な支払い方法で購入できます。

完全なワークフロー例

JavascriptとPythonで2slides APIを使用してスライドを生成する完全な例を以下に示します。

const API_KEY = 'sk-2slides-your-api-key-here'; const BASE_URL = 'https://2slides.com'; async function generateSlides() { try { // Step 1: Search for a theme const themeResponse = await fetch( `${BASE_URL}/api/v1/themes/search?query=timeline&limit=5`, { headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' } } ); const themeData = await themeResponse.json(); const themeId = themeData.data.themes[0].id; // Step 2: Generate slides const generateResponse = await fetch( `${BASE_URL}/api/v1/slides/generate`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ userInput: "Create a timeline for our product development: Q1 - Research and planning, Q2 - MVP development, Q3 - Beta testing, Q4 - Public launch", themeId: themeId, responseLanguage: "English", mode: "async" }) } ); const generateData = await generateResponse.json(); const jobId = generateData.data.jobId; // Step 3: Poll for completion let jobStatus; do { await new Promise(resolve => setTimeout(resolve, 2000)); // Wait 2 seconds const statusResponse = await fetch( `${BASE_URL}/api/v1/jobs/${jobId}`, { headers: { 'Authorization': `Bearer ${API_KEY}` } } ); jobStatus = await statusResponse.json(); console.log(`Status: ${jobStatus.data.status}`); } while (jobStatus.data.status === 'processing' || jobStatus.data.status === 'pending'); // Step 4: Handle result if (jobStatus.data.status === 'success') { console.log('Slides generated successfully!'); console.log('Download URL:', jobStatus.data.downloadUrl); console.log('Pages generated:', jobStatus.data.slidePageCount); // Download the file const downloadResponse = await fetch(jobStatus.data.downloadUrl); const blob = await downloadResponse.blob(); // Create download link const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'presentation.pptx'; a.click(); window.URL.revokeObjectURL(url); } else { console.error('Generation failed:', jobStatus.data.errorMessage); } } catch (error) { console.error('Error:', error); } } // Run the example generateSlides();

Pythonの例

import requests import time import json API_KEY = 'sk-2slides-your-api-key-here' BASE_URL = 'https://2slides.com' def generate_slides(): headers = { 'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json' } try: # Step 1: Search for a theme theme_response = requests.get( f'{BASE_URL}/api/v1/themes/search', params={'query': 'roadmap', 'limit': 5}, headers=headers ) theme_data = theme_response.json() theme_id = theme_data['data']['themes'][0]['id'] # Step 2: Generate slides generate_payload = { 'userInput': 'Create a product roadmap for our mobile app: Phase 1 - Core features, Phase 2 - Advanced features, Phase 3 - AI integration', 'themeId': theme_id, 'responseLanguage': 'English', 'mode': 'async' } generate_response = requests.post( f'{BASE_URL}/api/v1/slides/generate', headers=headers, json=generate_payload ) generate_data = generate_response.json() job_id = generate_data['data']['jobId'] # Step 3: Poll for completion while True: time.sleep(2) # Wait 2 seconds status_response = requests.get( f'{BASE_URL}/api/v1/jobs/{job_id}', headers=headers ) status_data = status_response.json() status = status_data['data']['status'] print(f'Status: {status}') if status in ['success', 'failed']: break # Step 4: Handle result if status == 'success': print('Slides generated successfully!') print(f'Download URL: {status_data["data"]["downloadUrl"]}') print(f'Pages generated: {status_data["data"]["slidePageCount"]}') # Download the file download_response = requests.get(status_data['data']['downloadUrl']) with open('presentation.pptx', 'wb') as f: f.write(download_response.content) print('File downloaded as presentation.pptx') else: print(f'Generation failed: {status_data["data"]["errorMessage"]}') except Exception as error: print(f'Error: {error}') # Run the example generate_slides()

cURLの例

テーマを検索:

curl -X GET "https://2slides.com/api/v1/themes/search?query=timeline&limit=5" \ -H "Authorization: Bearer sk-2slides-your-api-key-here" \ -H "Content-Type: application/json"

スライドを生成:

curl -X POST "https://2slides.com/api/v1/slides/generate" \ -H "Authorization: Bearer sk-2slides-your-api-key-here" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Create a timeline for our project milestones", "themeId": "theme-uuid-here", "responseLanguage": "English", "mode": "async" }'

ジョブステータスを確認:

curl -X GET "https://2slides.com/api/v1/jobs/job-uuid-here" \ -H "Authorization: Bearer sk-2slides-your-api-key-here"

エラー処理

APIは標準的なHTTPステータスコードを使用し、詳細なエラー情報をJSON形式で返します。

一般的なエラーレスポンス

400 不正なリクエスト:

{ "success": false, "error": "userInput is required and must be a non-empty string" }

401 認証されていない:

{ "success": false, "error": "Authentication required" }

403 禁止されている:

{ "success": false, "error": "Access denied" }

404 見つからない:

{ "success": false, "error": "Theme not found" }

429 リクエストが多すぎる:

{ "success": false, "error": "Rate limit exceeded" }

500 内部サーバーエラー:

{ "success": false, "error": "Internal server error" }

エラー処理のベストプラクティス

async function handleApiRequest(url, options) { try { const response = await fetch(url, options); const data = await response.json(); if (!response.ok) { switch (response.status) { case 400: throw new Error(`Bad Request: ${data.error}`); case 401: throw new Error('Authentication failed. Please check your API key.'); case 403: throw new Error('Access denied. You may not have permission for this resource.'); case 404: throw new Error('Resource not found.'); case 429: throw new Error('Rate limit exceeded. Please try again later.'); case 500: throw new Error('Server error. Please try again later.'); default: throw new Error(`API Error: ${data.error || 'Unknown error'}`); } } return data; } catch (error) { if (error.name === 'TypeError' && error.message.includes('fetch')) { throw new Error('Network error. Please check your internet connection.'); } throw error; } }

ベストプラクティス

1. APIキーのセキュリティ

  • クライアントサイドコードや公開リポジトリでAPIキーを公開しない
  • APIキーを安全に保存するために環境変数を使用
  • セキュリティ強化のためにキーを定期的にローテーション
  • API管理ダッシュボードを通じてキーの使用状況を監視
  • キーを安全に保管: 2slidesはAPIキーを保存しないため、ご自身で安全に保管する必要があります
  • キーをバックアップ: APIキーを安全なパスワードマネージャーまたは暗号化されたストレージに保存してください

2. 効率的なAPI利用

  • 繰り返しリクエストを避けるためにテーマ検索結果をキャッシュ
  • ジョブステータス確認のための適切なポーリング間隔を実装(2~5秒)
  • 指数バックオフを用いてレート制限を適切に処理
  • 可能な場合はバッチ操作でAPI呼び出しを減らす

3. エラー処理

  • 常にレスポンスのステータスコードを確認
  • 一時的な障害に対するリトライロジックを実装
  • デバッグのために適切にエラーをログに記録
  • ユーザーフレンドリーなエラーメッセージを提供する

4. パフォーマンス最適化

  • 不要なリクエストを避けるために適切なポーリング間隔を使用
  • ハングするリクエストを防ぐためにリクエストタイムアウトを実装
  • テーマ情報など、頻繁に使用されるデータをキャッシュ
  • 予期せぬ課金を避けるためにクレジット使用状況を監視

5. コンテンツガイドライン

  • より良いスライド生成のために明確で構造化された入力を提供
  • コンテンツタイプに適したテーマを使用
  • 国際的なコンテンツに必要な場合は言語を指定
  • 最適なスライドレイアウトのためにコンテンツを簡潔に保つ

サポートとリソース

ドキュメントとリソース

ヘルプ

コミュニティと更新情報

  • Feature Updates: 新機能や改善点に関する最新情報を入手
  • Template Library: 新しいプロフェッショナルテンプレートが定期的に追加
  • API Enhancements: APIのパフォーマンスと機能の継続的な改善

まとめ

2slides APIは、プロフェッショナルなプレゼンテーションをプログラムで生成するための強力で柔軟な方法を提供します。その包括的な機能セット、堅牢なエラー処理、および広範なテンプレートライブラリにより、AIを活用したスライド生成をあらゆるアプリケーションやワークフローに統合できます。

今すぐ2slides APIで素晴らしいプレゼンテーションの作成を始めましょう!2slides.com/apiにアクセスしてAPIキーを取得し、作成を開始してください。

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free