Create a Post with Multiple Particles

This tutorial explains how to create an article with multiple particles.

Requirements

For this tutorial you will need both the Python and requests libraries installed.

Procedure

1. Initialize variables

Set the global variables.

import requests
API_DOMAIN = '<your-secure-domain>'
API_KEY = '<your-api-key>'

2. Initialize particles

The following code snippet shows a list of dictionaries using the schema expected for the Drafts API and Posts API.

particles = [
    {
        'headline': 'This is the first particle',
        'body': "Some content here!",
    },
    {
        'headline': 'This is the second particle',
        'body': 'More content here',
    },
    {
        'headline': 'This is the third particle',
        'body': 'Content for this particle',
    },
]

3. Create a draft

Create a new draft using the Drafts API.

response = requests.post(
    'https://{}/api/1.3/drafts'.format(API_DOMAIN),
    params={'api_key': API_KEY},
    json={
        'headline': 'Article with 3 particles',
    }
)
response.raise_for_status()
draft_api_response = response.json()
print(draft_api_response['id'])

4. Publish the draft

Once the particles schema is done, send it to the Drafts API using the field listicle.

Finally, publish the draft and its URL.

body_content = '''
    <p>This is a HTML piece than can contain shortcodes</p>
    <listicle id="listicle-{}"></listicle>
    <p>This text goes after the embedded image</p>
'''.format(draft_api_response['id'])
response = requests.put(
    'https://{}/api/1.3/drafts/{}'.format(API_DOMAIN, draft_api_response['id']),
    params={'api_key': API_KEY},
    json={
        'action': 'publish',
        'body': body_content,
        'listicle': {
            'items': particles,
        }
    }
)
response.raise_for_status()
draft_api_response = response.json()
print(draft_api_response['post_url'])