curl --request POST \
--url https://app.teable.ai/api/base/import-airtable/stream \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"spaceId":"string","baseId":"string","folderId":"string","integrationId":"string","accessToken":"string","airtableBaseId":"string","baseName":"string","importRecords":true,"importAttachments":true,"importViewConfig":true,"shareLink":"string"}'const url = 'https://app.teable.ai/api/base/import-airtable/stream';
const options = {
method: 'POST',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
},
body: '{"spaceId":"string","baseId":"string","folderId":"string","integrationId":"string","accessToken":"string","airtableBaseId":"string","baseName":"string","importRecords":true,"importAttachments":true,"importViewConfig":true,"shareLink":"string"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'POST',
hostname: 'app.teable.ai',
port: null,
path: '/api/base/import-airtable/stream',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({
spaceId: 'string',
baseId: 'string',
folderId: 'string',
integrationId: 'string',
accessToken: 'string',
airtableBaseId: 'string',
baseName: 'string',
importRecords: true,
importAttachments: true,
importViewConfig: true,
shareLink: 'string'
}));
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
payload = "{\"spaceId\":\"string\",\"baseId\":\"string\",\"folderId\":\"string\",\"integrationId\":\"string\",\"accessToken\":\"string\",\"airtableBaseId\":\"string\",\"baseName\":\"string\",\"importRecords\":true,\"importAttachments\":true,\"importViewConfig\":true,\"shareLink\":\"string\"}"
headers = {
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "application/json"
}
conn.request("POST", "/api/base/import-airtable/stream", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/base/import-airtable/stream",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'airtableBaseId' => '<string>',
'spaceId' => '<string>',
'baseId' => '<string>',
'folderId' => '<string>',
'integrationId' => '<string>',
'accessToken' => '<string>',
'baseName' => '<string>',
'importRecords' => true,
'importAttachments' => true,
'importViewConfig' => true,
'shareLink' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.teable.ai/api/base/import-airtable/stream"
payload := strings.NewReader("{\n \"airtableBaseId\": \"<string>\",\n \"spaceId\": \"<string>\",\n \"baseId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"integrationId\": \"<string>\",\n \"accessToken\": \"<string>\",\n \"baseName\": \"<string>\",\n \"importRecords\": true,\n \"importAttachments\": true,\n \"importViewConfig\": true,\n \"shareLink\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.teable.ai/api/base/import-airtable/stream")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"airtableBaseId\": \"<string>\",\n \"spaceId\": \"<string>\",\n \"baseId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"integrationId\": \"<string>\",\n \"accessToken\": \"<string>\",\n \"baseName\": \"<string>\",\n \"importRecords\": true,\n \"importAttachments\": true,\n \"importViewConfig\": true,\n \"shareLink\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/base/import-airtable/stream")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"airtableBaseId\": \"<string>\",\n \"spaceId\": \"<string>\",\n \"baseId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"integrationId\": \"<string>\",\n \"accessToken\": \"<string>\",\n \"baseName\": \"<string>\",\n \"importRecords\": true,\n \"importAttachments\": true,\n \"importViewConfig\": true,\n \"shareLink\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyImport Airtable base with progress
curl --request POST \
--url https://app.teable.ai/api/base/import-airtable/stream \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
--header 'content-type: application/json' \
--data '{"spaceId":"string","baseId":"string","folderId":"string","integrationId":"string","accessToken":"string","airtableBaseId":"string","baseName":"string","importRecords":true,"importAttachments":true,"importViewConfig":true,"shareLink":"string"}'const url = 'https://app.teable.ai/api/base/import-airtable/stream';
const options = {
method: 'POST',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
},
body: '{"spaceId":"string","baseId":"string","folderId":"string","integrationId":"string","accessToken":"string","airtableBaseId":"string","baseName":"string","importRecords":true,"importAttachments":true,"importViewConfig":true,"shareLink":"string"}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}const http = require('https');
const options = {
method: 'POST',
hostname: 'app.teable.ai',
port: null,
path: '/api/base/import-airtable/stream',
headers: {
Authorization: 'Bearer REPLACE_BEARER_TOKEN',
'content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({
spaceId: 'string',
baseId: 'string',
folderId: 'string',
integrationId: 'string',
accessToken: 'string',
airtableBaseId: 'string',
baseName: 'string',
importRecords: true,
importAttachments: true,
importViewConfig: true,
shareLink: 'string'
}));
req.end();import http.client
conn = http.client.HTTPSConnection("app.teable.ai")
payload = "{\"spaceId\":\"string\",\"baseId\":\"string\",\"folderId\":\"string\",\"integrationId\":\"string\",\"accessToken\":\"string\",\"airtableBaseId\":\"string\",\"baseName\":\"string\",\"importRecords\":true,\"importAttachments\":true,\"importViewConfig\":true,\"shareLink\":\"string\"}"
headers = {
'Authorization': "Bearer REPLACE_BEARER_TOKEN",
'content-type': "application/json"
}
conn.request("POST", "/api/base/import-airtable/stream", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.teable.ai/api/base/import-airtable/stream",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'airtableBaseId' => '<string>',
'spaceId' => '<string>',
'baseId' => '<string>',
'folderId' => '<string>',
'integrationId' => '<string>',
'accessToken' => '<string>',
'baseName' => '<string>',
'importRecords' => true,
'importAttachments' => true,
'importViewConfig' => true,
'shareLink' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.teable.ai/api/base/import-airtable/stream"
payload := strings.NewReader("{\n \"airtableBaseId\": \"<string>\",\n \"spaceId\": \"<string>\",\n \"baseId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"integrationId\": \"<string>\",\n \"accessToken\": \"<string>\",\n \"baseName\": \"<string>\",\n \"importRecords\": true,\n \"importAttachments\": true,\n \"importViewConfig\": true,\n \"shareLink\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.teable.ai/api/base/import-airtable/stream")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"airtableBaseId\": \"<string>\",\n \"spaceId\": \"<string>\",\n \"baseId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"integrationId\": \"<string>\",\n \"accessToken\": \"<string>\",\n \"baseName\": \"<string>\",\n \"importRecords\": true,\n \"importAttachments\": true,\n \"importViewConfig\": true,\n \"shareLink\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.teable.ai/api/base/import-airtable/stream")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"airtableBaseId\": \"<string>\",\n \"spaceId\": \"<string>\",\n \"baseId\": \"<string>\",\n \"folderId\": \"<string>\",\n \"integrationId\": \"<string>\",\n \"accessToken\": \"<string>\",\n \"baseName\": \"<string>\",\n \"importRecords\": true,\n \"importAttachments\": true,\n \"importViewConfig\": true,\n \"shareLink\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body承認
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
ボディ
1Target space for the new project. Required only when baseId is omitted; when importing into an existing project the project's own space is used and spaceId is ignored.
Import into this existing project (add its tables) instead of creating a new one. When omitted, a new project named baseName is created in spaceId.
Target folder (node id or folder id); requires baseId, tables land at root when omitted.
Id of a connected Airtable user integration; its access token is resolved (and refreshed) server-side and never leaves the server.
Airtable personal access token for direct API usage (never persisted by the server). Ignored when integrationId is provided.
1Name for the created project (normally the Airtable base name). Required unless baseId is set.
1Import record data (default true). When false only the structure is created.
Download attachments from Airtable and re-upload them (default true).
Import view filters, sorts, grouping and kanban stacking. Requires shareLink, because the official Airtable API does not expose view configuration.
Public Airtable shared-base link (https://airtable.com/appXXX/shrYYY). Used read-only to read view configuration; must point at airtableBaseId. The token never sees it.
レスポンス
SSE stream with progress events and final result
このページは役に立ちましたか?

